https://github.com/cran/nFactors
Raw File
Tip revision: 592b098fc786911733da1c1953e58c9d1c2e9517 authored by Gilles Raiche on 10 April 2010, 00:00:00 UTC
version 2.3.3
Tip revision: 592b098
nSeScree.r
nSeScree <-
function(x, cor=TRUE, model="components", details=TRUE, r2limen=0.75, ...) {
 x               <- eigenComputes(x, cor=cor, model=model, ...)
 detail          <- NULL
 n               <- length(x)
 criteria        <- 1/n
 seScreeCriteria <- R2Criteria <- 0
 if (n < 3) stop("The number of variables must be at least 3.")
 i               <- 1
 seScree         <- R2 <- numeric(n-3)
 while ((i) <= (n-2)) {
  xa              <- c(i:n)
  ya              <- x[i:n]
  ma              <- lm(ya ~ xa)
  seScree[i]      <- sd(ya)*sqrt((1-summary(ma)$r.squared) * ((length(ya)-1)/(length(ya)-2))) # Howell(2008, p. 253)
  seScreeCriteria <- seScreeCriteria + as.numeric(seScree[i] > criteria)
  R2[i]           <- summary(ma)$r.squared
  R2Criteria      <- R2Criteria + as.numeric(R2[i] < r2limen)
  i               <- i + 1
  }
 if (details == TRUE) detail  <- data.frame(v=(1:(n-2)),values=x[1:(n-2)], seScree, R2)
 seScree <- seScreeCriteria
 R2      <- R2Criteria
 res     <- list(detail=detail, nFactors=c(se=seScree, R2=R2))
 class(res) <- c("nFactors","list")
 return(res)
 }
back to top