統計分析

Stata: 如何作層次迴歸分析(hierarchical regression)?

Stata 並沒有內建層次分析 (hierarchial regression) 的指令(註),所以要先進行安裝

net describe hireg, from(http://fmwww.bc.edu/RePEc/bocode/h) <br />net install hireg

之後如果要執行指令,就像下方一樣:

hireg dv (a)(b) (c) (d) ,nomiss

dv 是 dependent variable,後方一個()就是一個 model,所以有四個表示有四個models。跑完之後,Stata 會告訴你這些 models之間是不是有顯著差異,以及 R-square 的變化。

1.png

註:如果是要作 stepwise regression 的話,可以用Stata 內建的 stepwise 指令來使用。雖然裡面有 forward 和 backward hierarchial 的選項,但畢竟沒 hireg 這個指令好用。

Stata: 如何作層次迴歸分析(hierarchical regression)? Read More »

什麼是層次迴歸分析 (hierarchical regression)?

什麼是層次迴歸 Hierarchical Regression?

當你搜尋「層次迴歸」時,維基百科說 Hierarchical linear modeling,Stata 說 Swamy-Arora estimator,統計書又說 hierarchical regression 是一種變數分批進入的方法。這些名詞到底有什麼關係?為什麼會搞混?

簡單來說:這其實是兩種完全不同的東西,只是中文都用了「層次」這個詞。

層次迴歸 = 變數分批進入模型

想像你是一位教育研究者,想預測學生的學業表現。你手上有兩類變數:

  • 控制變數:學生的家庭收入、父母教育程度、性別
  • 研究變數:學生的學習動機

你不希望學習動機的「功勞」被控制變數稀釋,或者想先看控制變數能解釋多少變異,再加入研究變數看看能增加多少解釋力。

這時候你用的是 hierarchical regression——把變數分「階」放入模型,一次一批:

第一階模型:成績 ~ 家庭收入 + 父母教育 + 性別
第二階模型:成績 ~ 家庭收入 + 父母教育 + 性別 + 學習動機

比較:ΔR² 就是學習動機的獨立貢獻

這裡的「層次」指的是變數進入的順序層次,不是資料的結構層次。

用 SPSS 操作時,你會在「Block」欄位分批放入變數,就是這個概念。

HLM = 資料本身有巢套結構

現在換個場景:你想研究學校資源對學生成績的影響。你的資料長這樣:

  • 50 所學校,每所學校 30 位學生
  • 學生(Level 1)巢套在學校(Level 2)之內

這時候問題來了:

  • 同一所學校的學生成績會比較接近(共同的老師、校風、設備)
  • 這違反了一般迴歸「殘差獨立」的假設
  • 如果你跑一般迴歸,標準誤會被低估,容易假性顯著

這時候你需要 Hierarchical Linear Modeling (HLM),多層次線性模式。

HLM 的「層次」指的是資料的階層結構

Level 1: 學生 i 在學校 j 的成績
Level 2: 學校 j 的平均資源水平

學生成績_ij = γ₀₀ + γ₀₁(學校資源_j) + u₀_j + ε_ij

這裡處理的是資料依賴性,不是變數順序。

一張圖看懂如何選擇

決策流程圖:資料有階層結構嗎?

這張圖總結了選擇邏輯:

問題使用方法
想控制變數進入順序,看 incremental R²?層次迴歸
資料有巢套結構(學生→班級→學校)?HLM
只是單純預測,沒有階層也沒有分批需求?一般多元迴歸

常見誤區

「層次迴歸就是多層次模式」

– 錯。前者是變數管理策略,後者是處理資料依賴的統計方法。

「跑 HLM 比較高級,所以我應該用 HLM」

– 錯。如果資料沒有巢套結構,跑 HLM 是多餘的,甚至有過度參數化的風險。

「分批放變數一定要用 SPSS 的 Block 功能」

– 不一定。你可以手動跑多個模型比較 ΔR²,只是 Block 功能幫你省時間。

站內相關文章

若想深入了解,可以參考以下文章:

  • [多層次線性分析方法—HLM軟體應用](/?p=52):HLM6/7

什麼是層次迴歸分析 (hierarchical regression)? Read More »

什麼是階層線性模式 (hierarchical linear modeling)?

階層線性模式(hierarchical linear modeling,簡稱 HLM)或多層次分析(multilevel analysis)是近幾十年來在教育、社會學、心理學等領域廣泛使用的統計方法。它的核心問題很簡單:當你的資料有巢套結構(nested structure)——也就是「小單位嵌在大單位裡面」——普通的線性迴歸就不夠用了。

為什麼普通迴歸不夠用?

最典型的例子還是從教育研究來看。假設你要研究學生的學習成就,但你手上有來自 30 個班級的資料。問題來了:同一個班的學生共享同一位老師、同樣的教室氣氛、相似的背景環境,他們的學習成就之間自然會有關聯。這違反了普通迴歸的基本假設——觀察值必須彼此獨立。

如果你硬用普通迴歸,就等於忽略了「班級」這個層次的影響。你可以嘗試把班級人數、師生比、老師年資等變數全部丟進去當控制變數,但你永遠控制不完——每個班總有你沒測量到的差異。HLM 的解法是:直接把這種層次結構納入模型,讓資料的巢套性成為分析的一部分,而不是需要「消除」的麻煩。

第二個典型例子是重複測量(repeated measures)。如果你對同一批人進行三次前後測,每個人自己的三次測量就形成了巢套結構——三次觀察「嵌在」同一個人裡面。第一層是不同時間點的測量,第二層是個人本身。如果你不處理這個層次性,統計推論的可靠度就會受到影響。

HLM 核心概念一覽:巢套結構、ICC 判斷、Random Intercept、Random Slope、常用軟體
HLM 核心概念一覽

什麼時候該用 HLM?ICC 是關鍵指標

判斷要不要用 HLM,最常用的標準是組內相關係數(Intraclass Correlation Coefficient,ICC)。ICC 反映的是「整體變異中,有多少比例是來自於上層單位(例如班級)之間的差異」。

一般來說,ICC > 0.05 就值得認真考慮使用 HLM;ICC > 0.10 則通常建議使用。如果你的 ICC 接近 0,代表學生之間的相似性主要不是來自班級效應,用普通迴歸或許還可以接受。

關於如何計算 ICC,可以參考這篇:Stata: 計算 Intraclass Correlation

Random Intercept vs.

什麼是階層線性模式 (hierarchical linear modeling)? Read More »

Stata: 顯示完整變數值,而非使用科學記號

如果你在處理資料時,裡面有學生id,像是 80070394,甚至更長如: 5140712902,如果你直接 list 出來,會出現像這樣的情況:

1.png

這些值沒顯示完整數值,而是用科學記號,像是 8.0e+07,或是 1.1e+09。如果你要知道完整數值,還得到 data editor 裡面一筆一筆去看,這會浪費不少時間

2.png

要解決這樣的問題,就得從資料格式上來處理。至於為什麼會出現這樣的問題,這跟 output width 有關,詳情請參閱 Stata help 的 format。

首先來瞧瞧左方 variable list 是怎麼顯示的。studentid 的記號是 long %8.0f,ssid 是 double %8.0f ,long 與 double 是兩種不同的儲存格式,這有興趣請參考 datatypes 得到更多資訊,但這裡不影響。有影響的是 %8.0f。在小數點前的數字指的是要顯示幾位數,小數點後的數字指的是要顯示小數點後幾位,f 指的是 fixed format。依照這個例子來說,就是顯示 8 位數,不顯示小數點以後的位數。

3.png

所以這裡要作的很簡單,就是將顯示的位數加大。我的程式如下:

format studentid %9.0f <br />format ssid %12.0f

列出結果就正常了:

4.png

參考資料
http://www.ats.ucla.edu/stat/stata/faq/longid.htm

Stata: 顯示完整變數值,而非使用科學記號 Read More »

研究生2.0 文章縮圖:因素負荷量與特徵值,左側是 factor loadings matrix,右側是 eigenvalues scree plot。

因素負荷量 (factor loadings) 與特徵值 (eigenvalues)

作因素分析時,常會碰到兩個讓人頭痛的名詞:因素負荷量 (factor loadings)特徵值 (eigenvalues)。加上 scree plot 的判斷,很多人在這幾個步驟都卡住了。這篇的目標很簡單:不講太多數學,把這幾個概念說清楚,以及它們實際上在回答什麼問題。

看懂因素分析:你其實只要過4關

特徵值 (Eigenvalues):這個因素值不值得留?

特徵值(有時也稱為 characteristic roots)回答的是一個問題:這個因素能代表多少個變數的資訊?

以 10 個變數為例,所有因素的特徵值加總等於 10。如果某個因素的特徵值是 0.5,代表它只解釋了半個變數的資訊量——留下這個因素,對精簡變數結構的幫助非常有限。

常見的判斷準則(rule of thumb)是:特徵值 < 1 的因素通常可以刪除(Harman, 1976)。背後的邏輯是,若特徵值小於 1,代表這個因素解釋的資訊量連一個原始變數都不如,自然沒有保留的必要。這個標準在 EFA(探索性因素分析)初步判斷時最常使用,大部分期刊也接受。不過它並非最嚴謹的方式,最好搭配下面的 scree plot 和理論意義一起判斷。

除了看特徵值,也可以觀察每個因素解釋的 % of variance,了解所有因素加總能解釋多少總變異量。

Scree Plot:到底該留幾個因素?

Scree Plot 是另一個判斷因素數量的工具。它把每個因素的特徵值由高到低畫成折線圖,你要找的是線條突然變平的轉折點——轉折點之前的因素留下,之後的捨棄。

轉折點後,每多留一個因素,能新增的解釋量已經非常有限,留下來只會讓模型變複雜,不會更清楚。

需要注意的是,Scree Plot 有一定的主觀性。如果折線是慢慢變平而非突然斷下去,不同人看到的轉折點可能不一樣。這時候不要硬選,應回頭對照理論:這份量表在概念上應該測幾個維度?特徵值準則、scree plot 和理論意義三者一起看,是最穩的做法。

因素負荷量 (Factor Loadings):這個因素代表什麼?

確定保留幾個因素之後,下一步是理解每個因素的意義——靠的就是因素負荷量

因素負荷量是個別變數與因素之間的相關程度(未轉軸前),數值介於 -1 到 1 之間,類似 Pearson 相關係數。因素負荷量的平方,就是該因素能解釋這個變數多少的 variance。例如負荷量為 0.4,代表能解釋 16% 的變異量。

依照 Hair et al.…

因素負荷量 (factor loadings) 與特徵值 (eigenvalues) Read More »

Scroll to Top