关于R中斜率系数的推论

MYa*_*208 4 r stat lm

默认情况下,lm汇总测试斜率系数等于零.我的问题很基础.我想知道如何测试斜率系数等于非零值.一种方法可能是使用,confint但这不提供p值.我也想知道如何进行片面测试lm.

ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)
summary(lm.D9)

Call:
lm(formula = weight ~ group)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.0710 -0.4938  0.0685  0.2462  1.3690 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   5.0320     0.2202  22.850 9.55e-15 ***
groupTrt     -0.3710     0.3114  -1.191    0.249    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.6964 on 18 degrees of freedom
Multiple R-squared: 0.07308,    Adjusted R-squared: 0.02158 
F-statistic: 1.419 on 1 and 18 DF,  p-value: 0.249 


confint(lm.D9)
              2.5 %    97.5 %
(Intercept)  4.56934 5.4946602
groupTrt    -1.02530 0.2833003
Run Code Online (Sandbox Code Playgroud)

感谢您的时间和精力.

koh*_*ske 7

正如@power所说,你可以用手做.这是一个例子:

> est <- summary.lm(lm.D9)$coef[2, 1]
> se <- summary.lm(lm.D9)$coef[2, 2]
> df <- summary.lm(lm.D9)$df[2]
> 
> m <- 0
> 2 * abs(pt((est-m)/se, df))
[1] 0.2490232
> 
> m <- 0.2
> 2 * abs(pt((est-m)/se, df))
[1] 0.08332659
Run Code Online (Sandbox Code Playgroud)

你可以通过省略来进行单侧测试2*.

更新

这是一个双方和单方概率的例子:

> m <- 0.2
> 
> # two-side probability
> 2 * abs(pt((est-m)/se, df))
[1] 0.08332659
> 
> # one-side, upper (i.e., greater than 0.2)
> pt((est-m)/se, df, lower.tail = FALSE)
[1] 0.9583367
> 
> # one-side, lower (i.e., less than 0.2)
> pt((est-m)/se, df, lower.tail = TRUE)
[1] 0.0416633
Run Code Online (Sandbox Code Playgroud)

请注意,上下概率之和恰好为1.

  • 那看起来更好.也许我以前不明白你在做什么.我更平心地看一下平均值+ 1.64*se(或平均值 - 1.64*se取决于具体的假设)与0.在我看来,大多数提出这个问题的人都有一个边际结果,他们只是试图推动人工"终点线"0.05. (2认同)