我試圖在R中複製一些Stata結果,並且遇到了很多麻煩。具體而言,我想恢復與Stata在探索性因子分析中所做的相同的特徵值。爲了提供一個具體的例子,在Stata的factor
幫助使用bg2
數據(一些有關醫生費),併爲您提供了以下結果:如何在R中複製Stata「factor」命令
webuse bg2
factor bg2cost1-bg2cost6
(obs=568)
Factor analysis/correlation Number of obs = 568
Method: principal factors Retained factors = 3
Rotation: (unrotated) Number of params = 15
--------------------------------------------------------------------------
Factor | Eigenvalue Difference Proportion Cumulative
-------------+------------------------------------------------------------
Factor1 | 0.85389 0.31282 1.0310 1.0310
Factor2 | 0.54107 0.51786 0.6533 1.6844
Factor3 | 0.02321 0.17288 0.0280 1.7124
Factor4 | -0.14967 0.03951 -0.1807 1.5317
Factor5 | -0.18918 0.06197 -0.2284 1.3033
Factor6 | -0.25115 . -0.3033 1.0000
--------------------------------------------------------------------------
LR test: independent vs. saturated: chi2(15) = 269.07 Prob>chi2 = 0.0000
我很感興趣,在表的第一列中的特徵值。當我在R中,使用相同的數據,我得到如下結果:
bg2 = read.dta("bg2.dta")
eigen(cor(bg2)
$values
[1] 1.7110112 1.4036760 1.0600963 0.8609456 0.7164879 0.6642889 0.5834942
正如你所看到的,這些值是從塔塔的結果完全不同。這兩個程序可能使用不同的方法來計算特徵值,但我嘗試了各種不同的提取特徵值的方法,包括R命令中的大多數(如果不是全部)選項fa
,factanal
,principal
,還有一些其他的R命令。我根本無法提取與Stata相同的特徵值。我也通讀了Stata的手冊,試圖弄清楚Stata使用的是什麼方法,但無法用足夠的特異性來弄清楚。
我很樂意提供任何幫助!請讓我知道你是否需要任何額外的信息來回答這個問題。
如果您在'R'中發佈一個小數據子樣本供人們使用,那麼人們可以更容易地爲您提供幫助,並且可以從Stata中爲該子樣本發佈因子分析輸出。要發佈子採樣只需粘貼'dput'的輸出。例如,'dput(bg2 [sample(1:nrow(bg2),20),])'將提供20個隨機選擇的數據行。 – eipi10
現在,也許一些在這裏討論的選項將有所幫助:http:// www。statmethods.net/advstats/factor.html。 – eipi10
您應該意識到'?factanal'中的Note部分直接提出了這樣一個概念,即嘗試比較不同實現間的因子分析輸出(更不用說不同的語言了),可能只是無望而已。我曾多次看到這個問題,從未見過確鑿的答案,所以我認爲它甚至不值得嘗試。 – joran