我应用了主成分分析来减少数据的维数。我需要使用因子得分进行描述性分析。但是,由于我从principal()
包的psych
获得的因子得分是标准化的(mean = 0,sd = 1),因此我无法在因子变量之间进行比较。我只是想了解我获得的哪些因素的平均值较高。
我试图将因子变量重新定标(归一化)以处于同一等级(例如0-1)。但是我认为这不能让我在均值之间进行比较(因为分数现在相对于其最小值和最大值)。我在其他文章(请参阅here和here中读过的另一种可能的解决方案是使用以下公式对变量进行“非标准化”:非标准化值=标准化值*s.d。 +平均值。但是,如果目的是比较因子变量的均值,我认为这不适用于因子得分。
使用principal()
包中的psych
的示例:
v1 <- c(1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,4,5,6)
v2 <- c(1,2,1,1,1,1,2,1,2,1,3,4,3,3,3,4,6,5)
v3 <- c(3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,5,4,6)
v4 <- c(3,3,4,3,3,1,1,2,1,1,1,1,2,1,1,5,6,4)
v5 <- c(1,1,1,1,1,3,3,3,3,3,1,1,1,1,1,6,4,5)
v6 <- c(1,1,1,2,1,3,3,3,4,3,1,1,1,2,1,6,5,4)
m1 <- cbind(v1,v2,v3,v4,v5,v6)
fscores<-principal(m1,3,rotate="equamax")$scores
#option 1 (normalize factor scores):
rescale <- function(x) (x-min(x))/(max(x) - min(x)) * 100
unstandardized.scores1<-sapply(data.frame(fscores),rescale)
#option 2 (unstandardized factor scores):
unstandardized.scores2<-rowMeans(m1)+apply(m1,1,sd)*fscores
那么,为了比较阶乘分数的平均值,可以使用其中一种方法吗?有一种方法可以某种方式恢复输入变量的大小?我应该使用哪种方法比较因子变量的均值?
谢谢!