跳轉到內容

R 程式設計/估計工具

來自華夏公益教科書

此頁面介紹了大多數估計命令中可用的方法。這對各種迴歸模型都很有用。

大多數估計命令使用公式介面。結果在 ~ 的左側,協變數在右側。

y ~ x1 + x2

在模型中輕鬆包含多項式變數作為預測變數。如果該變數還不是一個因子,只需使用 as.factor() 函式。這將建立一個虛擬變數集。

y ~ as.factor(x)

例如,我們可以使用 Ecdat 包中的 Star 資料

library("Ecdat")
data(Star)
summary(lm(tmathssk ~ as.factor(classk), data = Star))

I() 按原樣接受引數。例如,如果你想在你的方程中包含一個修改後的變數,比如平方項或兩個變數的加和,可以使用 I()

lm(y ~ x1 + I(x1^2) + x2)
lm(y ~ I(x1 + x2))
lm(I(y-100) ~ I(x1-100) + I(x2 - 100))

使用 :* 可以輕鬆地包含變數之間的互動作用。: 新增所有互動作用項,而 * 新增互動作用項和單獨項。

lm(y~x1:x2) # interaction term only
lm(y~x1*x2) # interaction and individual terms

還可以使用 poly() 函式生成多項式,並將選項設定為 raw = TRUE

lm(y ~ poly(x, degree = 3, raw = TRUE))

還存在一個高階公式介面,它對工具變數模型和混合模型很有用。例如,ivreg() (AER) 使用這個高階公式介面。工具變數在 | 後輸入。如果你想了解更多資訊,請參閱 工具變數 部分。

library("AER")
ivreg(y ~ x | z)

除了summary()print() 函式可以顯示大多數估計命令的輸出外,一些作者還開發了簡化的輸出函式。其中之一是arm 包中的 display() 函式。另一個是arm 包中的 coefplot(),它可以將係數及其置信區間繪製成圖表。根據Nathaniel Beck[1]定義的標準,Jeff Gill 開發了 graph.summary()[2]。該命令不會顯示無用的輔助統計資訊。


R 程式碼 輸出
source("http://artsci.wustl.edu/~jgill/Models/graph.summary.R")
N <- 1000
u <- rnorm(N)
x1 <- 1 + rnorm(N)
x2 <- 1 + rnorm(N) + x1
y <- 1 + x1 + x2 + u
graph.summary(lm(y ~ x1 + x2))
Family: gaussian
Link function: identity

             Coef Std.Err. 0.95 Lower 0.95 Upper CIs:ZE+RO
(Intercept) 0.980    0.056      0.871      1.089      |o| 
x1          1.040    0.043      0.955      1.125      |o| 
x2          0.984    0.031      0.923      1.045      |o| 

N: 1000    Estimate of Sigma: 0.998
library("arm")
display(lm(y ~ x1 + x2))
lm(formula = y ~ x1 + x2)
            coef.est coef.se
(Intercept) 0.89     0.05   
x1          1.05     0.04   
x2          1.02     0.03   
---
n = 1000, k = 3
residual sd = 0.96, R-Squared = 0.86

置信區間

[編輯 | 編輯原始碼]

Delta 方法

[編輯 | 編輯原始碼]
  • 如果您想了解引數變換的標準誤,您需要使用Delta 方法
  • msm 包中的 deltamethod()[3]
  • alr3 包中的 delta.method()
  • car 包中的 deltaMethod

Zelig:偽引導方法

[編輯 | 編輯原始碼]

Zelig[4] 是一款後估計包,它可以模擬估計引數的分佈,並計算感興趣的數量,例如邊際效應或預測機率。這對於非線性模型尤其有用。Zelig 帶有一組vignette,解釋瞭如何處理每種模型。有三個命令。

  • zelig() 估計模型並從估計引數的分佈中抽樣。
  • setx() 固定解釋變數的值。
  • sim() 計算感興趣的數量。

參考文獻

[編輯 | 編輯原始碼]
  1. Nathaniel Beck "Making regression and related output more helpful to users" The Political Methodologist 2010 http://politics.as.nyu.edu/docs/IO/2576/beck_tpm_edited.pdf
  2. Jeff Gill graph.summary() http://artsci.wustl.edu/~jgill/Models/graph.summary.s
  3. 參見 UCLA 統計網頁上的示例:http://www.ats.ucla.edu/stat/r/faq/deltamethod.htm
  4. Kosuke Imai, Gary King 和 Olivia Lau (2009)。Zelig:每個人的統計軟體。R 包版本 3.4-5。 http://CRAN.R-project.org/package=Zelig
華夏公益教科書