跳转到内容

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
华夏公益教科书