Stata: 更改 esttab 的顯著水準
許多人都問過 Stata 在利用 esttab 輸出 regression 的時候,如何更改顯著水準。雖然我已經在留言中回過了,但還是有不少人詢問。我就一併回答這個問題:
esttab 一般的使用方式如下:
esttab * using test.rtf,…
Stata: 更改 esttab 的顯著水準 Read More »
許多人都問過 Stata 在利用 esttab 輸出 regression 的時候,如何更改顯著水準。雖然我已經在留言中回過了,但還是有不少人詢問。我就一併回答這個問題:
esttab 一般的使用方式如下:
esttab * using test.rtf,…
Stata: 更改 esttab 的顯著水準 Read More »
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 的變化。
註:如果是要作 stepwise regression 的話,可以用Stata 內建的 stepwise 指令來使用。雖然裡面有 forward 和 backward hierarchial 的選項,但畢竟沒 hireg 這個指令好用。
…Stata: 如何作層次迴歸分析(hierarchical regression)? Read More »
當你搜尋「層次迴歸」時,維基百科說 Hierarchical linear modeling,Stata 說 Swamy-Arora estimator,統計書又說 hierarchical regression 是一種變數分批進入的方法。這些名詞到底有什麼關係?為什麼會搞混?
簡單來說:這其實是兩種完全不同的東西,只是中文都用了「層次」這個詞。
—
想像你是一位教育研究者,想預測學生的學業表現。你手上有兩類變數:
你不希望學習動機的「功勞」被控制變數稀釋,或者想先看控制變數能解釋多少變異,再加入研究變數看看能增加多少解釋力。
這時候你用的是 hierarchical regression——把變數分「階」放入模型,一次一批:
第一階模型:成績 ~ 家庭收入 + 父母教育 + 性別
第二階模型:成績 ~ 家庭收入 + 父母教育 + 性別 + 學習動機
比較:ΔR² 就是學習動機的獨立貢獻
這裡的「層次」指的是變數進入的順序層次,不是資料的結構層次。
用 SPSS 操作時,你會在「Block」欄位分批放入變數,就是這個概念。
—
現在換個場景:你想研究學校資源對學生成績的影響。你的資料長這樣:
這時候問題來了:
這時候你需要 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 功能幫你省時間。
—
若想深入了解,可以參考以下文章:
什麼是層次迴歸分析 (hierarchical regression)? Read More »
階層線性模式(hierarchical linear modeling,簡稱 HLM)或多層次分析(multilevel analysis)是近幾十年來在教育、社會學、心理學等領域廣泛使用的統計方法。它的核心問題很簡單:當你的資料有巢套結構(nested structure)——也就是「小單位嵌在大單位裡面」——普通的線性迴歸就不夠用了。
最典型的例子還是從教育研究來看。假設你要研究學生的學習成就,但你手上有來自 30 個班級的資料。問題來了:同一個班的學生共享同一位老師、同樣的教室氣氛、相似的背景環境,他們的學習成就之間自然會有關聯。這違反了普通迴歸的基本假設——觀察值必須彼此獨立。
如果你硬用普通迴歸,就等於忽略了「班級」這個層次的影響。你可以嘗試把班級人數、師生比、老師年資等變數全部丟進去當控制變數,但你永遠控制不完——每個班總有你沒測量到的差異。HLM 的解法是:直接把這種層次結構納入模型,讓資料的巢套性成為分析的一部分,而不是需要「消除」的麻煩。
第二個典型例子是重複測量(repeated measures)。如果你對同一批人進行三次前後測,每個人自己的三次測量就形成了巢套結構——三次觀察「嵌在」同一個人裡面。第一層是不同時間點的測量,第二層是個人本身。如果你不處理這個層次性,統計推論的可靠度就會受到影響。

判斷要不要用 HLM,最常用的標準是組內相關係數(Intraclass Correlation Coefficient,ICC)。ICC 反映的是「整體變異中,有多少比例是來自於上層單位(例如班級)之間的差異」。
一般來說,ICC > 0.05 就值得認真考慮使用 HLM;ICC > 0.10 則通常建議使用。如果你的 ICC 接近 0,代表學生之間的相似性主要不是來自班級效應,用普通迴歸或許還可以接受。
關於如何計算 ICC,可以參考這篇:Stata: 計算 Intraclass Correlation。
什麼是階層線性模式 (hierarchical linear modeling)? Read More »
如果你在處理資料時,裡面有學生id,像是 80070394,甚至更長如: 5140712902,如果你直接 list 出來,會出現像這樣的情況:
這些值沒顯示完整數值,而是用科學記號,像是 8.0e+07,或是 1.1e+09。如果你要知道完整數值,還得到 data editor 裡面一筆一筆去看,這會浪費不少時間。
要解決這樣的問題,就得從資料格式上來處理。至於為什麼會出現這樣的問題,這跟 output width 有關,詳情請參閱 Stata help 的 format。
首先來瞧瞧左方 variable list 是怎麼顯示的。studentid 的記號是 long %8.0f,ssid 是 double %8.0f ,long 與 double 是兩種不同的儲存格式,這有興趣請參考 datatypes 得到更多資訊,但這裡不影響。有影響的是 %8.0f。在小數點前的數字指的是要顯示幾位數,小數點後的數字指的是要顯示小數點後幾位,f 指的是 fixed format。依照這個例子來說,就是顯示 8 位數,不顯示小數點以後的位數。
所以這裡要作的很簡單,就是將顯示的位數加大。我的程式如下:
format studentid %9.0f <br />format ssid %12.0f
列出結果就正常了:
Stata: 顯示完整變數值,而非使用科學記號 Read More »