March 2011

Stata: 探索性因素分析 (一)

寫了這麼多關於因素分析的文章 (詳見統計觀念整理) ,接下來當然就是在 Stata 上實作因素分析了。Stata  的 factor 指令就是作探索性因素分析的,如果要作驗證性因素分析,Stata 沒有內建功能,要另外安裝 cfa 這個套件才行。

factor 這個指令提供幾種因素分析的方式,包括:pf, pcf, ipf, 與 ml。ML 的優點可參考探索性因素分析的設計與使用 (一)

pcf (principal-component factor) 通常使用在你想要儘可能地在一個 dimension 上解釋 items 的 variance如果你覺得這些 items 都是 load 在同一個因素上,那 pcf 是你應該使用的。相對地,pf (principal factor) 通常使用在你有兩個或以上的因素。

如果可以跑 ml,就試著跑 ml。我通常會先跑 ml,如果有 Heywood Cases 的話再跑 pf (這不是很好的建議,應該要先看看為什麼有 Heywood cases)。另外,我一開始通常不會限制因素的個數,先看看特徵值與 scree plot。

factor item1-item24, ml
factor item1-item24, pf

接下來就是要先看看特徵值 (eigenvalue) 與 scree test 來判斷因素個數了。

依我這個不漂亮的數據跑 pf 的結果,特徵值大於 1 的有兩個。

1.png

接著是用 scree plot 來檢驗,在指令列直接輸入 screeplot 即可。

2.png

上圖其實有點難解讀,如果是要看 deep drop 的話,我會說有兩個。如果是要看哪個因素之後趨於平坦,我可能會說有4個因素。

如果你要用 parallel analysis,得先安裝套件 fapara。

net describe fapara, from(<a href="http://www.ats.ucla.edu/stat/stata/ado/analysis">http://www.ats.ucla.edu/stat/stata/ado/analysis</a>)

R-squared 不代表一切

在許多心理學的研究都特別強調 R-squared (或 R2)的重要,這無可厚非也可以理解,因為從定義上來說,R2 告訴你在你的模型裡,有多少的 variance 是可以被你的自變數解釋的。

然而,事情並不是那麼簡單,journal reviewers 並不會看到你有很高的 R2 就欣然地收下你的文章,不要求你作任何修改。我有一個老師更是直接說:R2  is (almost) nothing。

有什麼例子可以證明這個觀點呢?綠角財經筆記有一篇文章 Stupid Data Miner Tricks讀後感—-不斷尋求相關性的危害,提到了個有趣的例子:孟加拉的奶油產量與美國股市指數呈現高度相關,R2高達0.75。

很驚訝,是不是?還有更驚訝的!美國與孟加拉的奶油總產量,美國的起司產量與美國和孟加拉的羊隻總數,這三個數字與標普500做迴歸,發現 R2 高達0.99。這樣,你還相信 R2 嗎?

我不是要大家不相信這個數據,而是別被很高的R2 嚇著了。還需要具體一點的例子嗎?假設你有前、後測,實驗組與控制組,如果你跑第一個模型:用迴歸分析,前測與treatment dummy為自變量;與第二個模型:用迴歸分析,依變量是後測減前測,自變量是treatment dummy,你會發現第一個模型的 R2 比第二個模型高許多。你可以說第一個模型比第二個模型好嗎?

那到底什麼才重要呢?準確地預測 (precise estimation) 才是最重要的。至於如何準確地預測,這就是另外一個問題了。

相關閱讀:

如何讓你的p value significant??

Stata: 快速檢視 missing data

在初期處理資料,經常要處理 missing data。如果你要作 multiple imputation 或比較進階的統計,你更會想要在作這些之前,看看每個變數有多少 missing。

UCLA 製作了兩個 stata 的 addon,可以很輕易地看出 missing data。可以用findit nmissing 或是要下方指令安裝:

net install dm67_3.pkg

探索性因素分析的設計與使用 (二)

(承前文 探索性因素分析的設計與使用 (一) )
選擇因素個數
這點作者說的很好,要決定因素個數,就是在最精簡模型 (也就是最少的因素) 與有理 (也就是有足夠的因素能解釋這些因子) 之間作平衡
傳統上來說,方法學家認為指明過少的因素個數比指明過多的因素個數還要來得嚴重,因為當因素過少時,本應該 load 在 B 因素的因子,因為模型並沒有納入 B 因素,變成錯誤地 load 在包含在模型的 A 因素。這當然會造成扭曲的結果,並影響到後來的轉軸與解讀。
相對地,選擇過多的因素會導致在轉軸時,主要因素正確呈現出來,但一些次要因素並沒有因子 load 在其上或是僅有單一因子。然而,選擇過多的因素仍是要避免的。
因為這些原因,許多方法學家就在探討如何找出最適合的因素數,其中一個非常有名的方法是 Kaiser criterion,這個準則就是看有幾個特徵值 (eigenvalues) 是否大於 1,並用這個數值來決定因素的數量。雖然這個方法看似簡單、客觀,但其實存在著一些問題 (詳細討論請見原文章),特別是經常會採取過多的因素數 (有時候是採取過少的因素數)。
第二種方法就是 scree test,也就是畫出相關矩陣的特徵值,並看在哪一個點之後有明顯的下降。在這個下降前有幾個特徵值決定了因素數。這種方式也受到不少批評,特別是它的主觀性。此外,有時候得到的圖並沒有明顯的下降。
第三種方法是平行分析 (parallel analysis),簡單地說,就是比較你從樣本裡得到的特徵值與從隨機資料產生的特徵值 (詳情請讀文章),模擬分析的結果認為平行分析所提供的結果還不錯,雖然統計軟體並未列入這種分析法。

註:parallel analysis 在 SAS 和 SPSS 中的使用,可參考:https://people.ok.ubc.ca/brioconn/nfactors/nfactors.html…

Scroll to Top
Verified by MonsterInsights