R 如何使用聚集协方差矩阵对回归系数进行线性假设检验?

R 如何使用聚集协方差矩阵对回归系数进行线性假设检验?,r,regression,linear-regression,covariance,lm,R,Regression,Linear Regression,Covariance,Lm,我对计算R中线性回归后系数线性组合的估计值和标准误差感兴趣。例如,假设我有回归和测试: data(mtcars) library(multcomp) lm1 <- lm(mpg ~ cyl + hp, data = mtcars) summary(glht(lm1, linfct = 'cyl + hp = 0')) ct1包含通过am进行聚类的SEs。但是,如果我尝试使用glht中的ct1对象,您会得到一个错误 modelparm.default(模型,…)中出错: 找不到“model

我对计算R中线性回归后系数线性组合的估计值和标准误差感兴趣。例如,假设我有回归和测试:

data(mtcars)
library(multcomp)
lm1 <- lm(mpg ~ cyl + hp, data = mtcars)
summary(glht(lm1, linfct = 'cyl + hp = 0'))
ct1
包含通过
am
进行聚类的SEs。但是,如果我尝试使用
glht
中的
ct1
对象,您会得到一个错误

modelparm.default(模型,…)中出错: 找不到“model”的“coef”方法

关于如何使用聚集方差-协方差矩阵进行线性假设,有什么建议吗

谢谢

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|)")))
  }
如果我们提供协方差,它会满足您的要求:

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
测试任何组合:

alpha[1] * vars[1] + alpha[2] * vars[2] + ... + alpha[k] * vars[k]
而不仅仅是总数

vars[1] + vars[2] + ... + vars[k]

退房关于如何将集群SEs纳入线性假设检验的大量信息。看起来与@Zheyuan提供的基本相同。
summary(glht(ct1,linfct='cyl+hp=0'))
R中的这个方法和glht函数似乎只对分类变量有效,对吗?如果我有一个连续变量呢?例如,我正在测试交互术语year:agegroup在逻辑回归模型中,year是一个连续变量(编码为1、2、3、…、14),而agegroup是分类的。在使用这种方法控制一年后,如何测试比较不同年龄组的优势比的显著性?谢谢,谢谢!这对于系数和的特殊情况非常有效。
LinearCombTest(lm1, c("cyl","hp"), vcv)

#              Estimate Std. Error  t value    Pr(>|t|)
#cyl + hp = 0 -2.283815  0.7594086 -3.00736 0.005399071
alpha[1] * vars[1] + alpha[2] * vars[2] + ... + alpha[k] * vars[k]
vars[1] + vars[2] + ... + vars[k]