https://github.com/cran/nFactors
Tip revision: 875465dbb701152a2de23d9377cbe4c2604c4ad0 authored by Gilles Raiche on 14 October 2009, 00:00:00 UTC
version 2.3.1
version 2.3.1
Tip revision: 875465d
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)
}