簡體   English   中英

在R中的lmtest中更改零假設

[英]change null hypothesis in lmtest in R

我有一個使用lm生成的線性模型。 我在軟件包lmtest使用coeftest函數,用sandwich包裝中所需的vcov檢驗假設。 默認的零假設為beta = 0 例如,如果我想測試beta = 1怎么辦。 我知道我可以簡單地將估計的系數減去1並除以提供的標准誤差即可得出我的假設的t統計量。 但是,R中必須已經有此功能。執行此操作的正確方法是什么?

MWE:

require(lmtest)
require(sandwich)
set.seed(123)
x = 1:10
y = x + rnorm(10)
mdl = lm(y ~ x)
z = coeftest(mdl, df=Inf, vcov=NeweyWest)
b = z[2,1]
se = z[2,2]
mytstat = (b-1)/se
print(mytstat)

形式上正確的方法:

require(multcomp)
zed = glht(model=mdl, linfct=matrix(c(0,1), nrow=1, ncol=2), rhs=1, alternative="two.sided", vcov.=NeweyWest)
summary(zed)

使用-1 * x的偏移量

mdl<-lm(y~x)
mdl2 <- lm(y ~ x-offset(x) )

> mdl

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
     0.5255       0.9180  

> mdl2

Call:
lm(formula = y ~ x - offset(x))

Coefficients:
(Intercept)            x  
    0.52547     -0.08197 

您可以查看summary(mdl2)來查看p值(它與mdl的相同)。

據我所知,沒有默認函數可以針對任意值(在您的情況下為1 )測試模型系數。 在另一個答案中提供了offset技巧,但這並不是那么簡單(並且始終要小心修改模型)。 因此,您的表達式(b-1)/se實際上是實現它的一種好方法

我對您的代碼有兩個注釋:

  1. 您可以使用summary(mdl)來獲得0的t檢驗。
  2. 您正在使用具有協方差結構的lmtest (這將更改t檢驗值),但是您的原始lm模型沒有此功能。 也許這可能是一個問題? 也許您應該使用glm並從一開始就指定相關結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM