[英]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
實際上是實現它的一種好方法 。
我對您的代碼有兩個注釋:
summary(mdl)
來獲得0的t檢驗。 lmtest
(這將更改t檢驗值),但是您的原始lm
模型沒有此功能。 也許這可能是一個問題? 也許您應該使用glm
並從一開始就指定相關結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.