我感兴趣的是计算R中线性回归后系数线性组合的估计值和标准误差。例如,假设我有回归和测试:
data(mtcars)
library(multcomp)
lm1 <- lm(mpg ~ cyl + hp, data = mtcars)
summary(glht(lm1, linfct = 'cyl + hp = 0'))
这将估算cyl
和hp
上系数之和的值,并根据lm
生成的协方差矩阵提供标准误差。
但是,假设我想将标准错误聚类在第三个变量上:
data(mtcars)
library(multcomp)
library(lmtest)
library(multiwayvcov)
lm1 <- lm(mpg ~ cyl + hp, data = mtcars)
vcv <- cluster.vcov(lm1, cluster = mtcars$am)
ct1 <- coeftest(lm1,vcov. = vcv)
ct1
包含am
群集的SE。但是,如果我尝试使用ct1
中的glht
对象,则会收到错误消息
modelparm.default(model,...)中的错误: 找不到'模型'的'coef'方法!
关于如何使用聚类方差协方差矩阵进行线性假设的任何建议?
谢谢!
答案 0 :(得分:3)
glht(ct1, linfct = 'cyl + hp = 0')
无效,因为ct1
不是glht
对象,无法通过as.glht
强制转换为LinearCombTest <- function (lmObject, vars, .vcov = NULL) {
## if `.vcov` missing, use the one returned by `lm`
if (is.null(.vcov)) .vcov <- vcov(lmObject)
## estimated coefficients
beta <- coef(lmObject)
## sum of `vars`
sumvars <- sum(beta[vars])
## get standard errors for sum of `vars`
se <- sum(.vcov[vars, vars]) ^ 0.5
## perform t-test on `sumvars`
tscore <- sumvars / se
pvalue <- 2 * pt(abs(tscore), lmObject$df.residual, lower.tail = FALSE)
## return a matrix
matrix(c(sumvars, se, tscore, pvalue), nrow = 1L,
dimnames = list(paste0(paste0(vars, collapse = " + "), " = 0"),
c("Estimate", "Std. Error", "t value", "Pr(>|t|)")))
}
。我不知道是否有一个包或现有的功能来做这个,但这不是一个困难的工作自己。以下小功能可以做到:
data(mtcars)
lm1 <- lm(mpg ~ cyl + hp, data = mtcars)
library(multiwayvcov)
vcv <- cluster.vcov(lm1, cluster = mtcars$am)
我们来测试一下:
.vcov
如果我们在LinearCombTest
中未指定multcomp::glht
,则与LinearCombTest(lm1, c("cyl","hp"))
# Estimate Std. Error t value Pr(>|t|)
#cyl + hp = 0 -2.283815 0.5634632 -4.053175 0.0003462092
library(multcomp)
summary(glht(lm1, linfct = 'cyl + hp = 0'))
#Linear Hypotheses:
# Estimate Std. Error t value Pr(>|t|)
#cyl + hp == 0 -2.2838 0.5635 -4.053 0.000346 ***
相同:
LinearCombTest(lm1, c("cyl","hp"), vcv)
# Estimate Std. Error t value Pr(>|t|)
#cyl + hp = 0 -2.283815 0.7594086 -3.00736 0.005399071
如果我们提供协方差,它会做你想要的:
LinearCombTest
<强>备注强>
alpha
已在Get p-value for group mean difference without refitting linear model with a new reference level升级,我们可以使用组合系数alpha[1] * vars[1] + alpha[2] * vars[2] + ... + alpha[k] * vars[k]
测试任意组合:
vars[1] + vars[2] + ... + vars[k]
而不仅仅是总和
Country Year Cause Gender Deaths
2090 2011 A000 1 70340
2090 2010 A001 2 53449
2090 2009 A002 1 1731
2090 2008 A003 2 1270
2090 2007 A004 1 148
2310 2011 A000 2 172
2310 2010 A001 1 24
2310 2009 A002 2 20
2310 2008 A003 1 27
2660 2013 A004 2 21
2660 2012 A005 1 88
2660 2011 A006 2 82