我使用以下代码使用mtcars数据和factalal函数进行因子分析。 fit $ loadings的打印给出了比例方差,但它似乎没有str(fit $ loadings):
> fit <- factanal(mtcars, 3, rotation="varimax")
> fit$loadings
Loadings:
Factor1 Factor2 Factor3
mpg 0.643 -0.478 -0.473
cyl -0.618 0.703 0.261
disp -0.719 0.537 0.323
hp -0.291 0.725 0.513
drat 0.804 -0.241
wt -0.778 0.248 0.524
qsec -0.177 -0.946 -0.151
vs 0.295 -0.805 -0.204
am 0.880
gear 0.908 0.224
carb 0.114 0.559 0.719
Factor1 Factor2 Factor3
SS loadings 4.380 3.520 1.578
Proportion Var 0.398 0.320 0.143 <<<<<<<<<<<<< I NEED THESE NUMBERS AS A VECTOR
Cumulative Var 0.398 0.718 0.862
>
> str(fit$loadings)
loadings [1:11, 1:3] 0.643 -0.618 -0.719 -0.291 0.804 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...
..$ : chr [1:3] "Factor1" "Factor2" "Factor3"
如何从fit $ loadings中获得比例方差向量?谢谢你的帮助。
答案 0 :(得分:2)
让obj <- fit$loadings
。以下是如何获得结果的完整路径。
通过撰写fit$loadings
(或obj
),我们实际上会调用print(obj)
。因此,在查看str
后,您可能需要检查特定print
方法对obj
执行的操作。要了解我们应该查找的方法,请检查class(obj)
并获取"loadings"
。
然后,写print.loadings
没有给出任何东西,因为隐藏了这个功能。因此,由于函数factanal
位于包stats
中,因此我们调用stats:::print.loadings
并获取该函数的完整源代码。通过检查,我们看到我们可以得到如下所需的结果。
colSums(obj^2) / nrow(obj)
# Factor1 Factor2 Factor3
# 0.3982190 0.3199652 0.1434125