2014-05-01 71 views
1

我試圖在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使用的是什麼方法,但無法用足夠的特異性來弄清楚。

我很樂意提供任何幫助!請讓我知道你是否需要任何額外的信息來回答這個問題。

+0

如果您在'R'中發佈一個小數據子樣本供人們使用,那麼人們可以更容易地爲您提供幫助,並且可以從Stata中爲該子樣本發佈因子分析輸出。要發佈子採樣只需粘貼'dput'的輸出。例如,'dput(bg2 [sample(1:nrow(bg2),20),])'將提供20個隨機選擇的數據行。 – eipi10

+0

現在,也許一些在這裏討論的選項將有所幫助:http:// www。statmethods.net/advstats/factor.html。 – eipi10

+0

您應該意識到'?factanal'中的Note部分直接提出了這樣一個概念,即嘗試比較不同實現間的因子分析輸出(更不用說不同的語言了),可能只是無望而已。我曾多次看到這個問題,從未見過確鑿的答案,所以我認爲它甚至不值得嘗試。 – joran

回答

3

我建議不要對bg2數據中的所有變量進行因子分析,因爲其中一個變量是clinid,它是任意標識符1..568,除非意外,否則不包含任何信息。

很明智與否,你都使用相同的數據,因爲你曾在塔塔的6個成本變量和那些PLUS的標識符R.

另一種方法來發現,將當場表示你在一個案例中獲得6個特徵值,在另一個案例中獲得7個特徵值。

儘管如此,重要的原則是eigen(cor(bg2))只是將基於相關矩陣從主成分分析給你的特徵值。因此,您可以驗證Stata中的pca與您報告的R匹配。

到目前爲止,如此清楚。

但你的大問題依然存在。我不知道如何在R中模擬Stata的(默認)因子分析。您可能需要一個因子分析專家,如果有的話在這裏附近。

總之,PCA不等於主軸方法因子分析。

計算特徵值的不同方法在這裏不是問題。我敢打賭,給定相同的矩陣Stata和R匹配報告特徵值。重點在於原則上不同的技術意味着不同的特徵值。

P.S.我不是一個R人,但我認爲你所謂的R命令是嚴格的R函數。反過來,我願意在那個小點上糾正。