当零假设!= 0 时如何计算给定置信区间的参数的 p 值

机器算法验证 置信区间 nls
2022-04-20 15:08:41

给定数据集:

d = structure(list(x = c(22.9362216327734, 24.4504147133069, 23.2710364752618, 
  22.5253827558421, 24.8139647577093, 22.8804536162757, 24.3948588709677, 
  25.4304112554113, 25.7243410214168, 26.6003943661972, 26.0698382492864
  ), y = c(3.536, 3.867, 4.482, 2.033, 2.912, 3.958, 5.445, 6.973, 
  5.115, 8.382, 4.438)), .Names = c("x", "y"), class = "data.frame", row.names = c(16L, 
  17L, 19L, 20L, 23L, 24L, 25L, 26L, 28L, 29L, 30L))

我可以进行非线性拟合:

a = nls(y ~ a * exp(b * x), data = d, start = list(a = 1, b = 0.05))

    Formula: y ~ a * exp(b * x)

Parameters:
  Estimate Std. Error t value Pr(>|t|)  
a  0.02980    0.05046   0.590   0.5694  
b  0.20483    0.06723   3.047   0.0139 * 

我对b参数的值感兴趣:

library(MASS)
confint(a, parm = 'b')

      2.5%      97.5% 
0.05583547 0.37719675 

我看到模型收敛b为 0.205,95% CI 为 (0.056, 0.377)。

我的问题是:

如何计算以下零假设的 p 值?

H0:b = 0.069

我在网上看到了当 null 为零时 CI 和 p 值之间的转换,但我不确定:

  1. 这个参数有多少个自由度?只是nrow(d) - 1静止吗?
  2. 如何计算具有非零空值的 p 值
2个回答

用于检验原假设的 Wald 统计量为:

W=θ^θ0se(θ^)

您的θ^是点估计b: 0.20483 和se(θ^)是 SE:0.06723,用于描述当原假设为真时检验统计量的近似正态抽样分布。在这种情况下,null 表示:θ0=0.069. 因此,将所有部分放在一起,可以通过以下方式获得 p 值:

pt(abs({0.20483-0.069}/0.06723), lower.tail=F, df=9)*2

这给出了与 Matthew Drury 的回答相同的结果:

> pt(abs({0.20483-0.069}/0.06723), lower.tail=F, df=9)*2
[1] 0.0740768

请注意,自由度是nrow(d)-2因为您估计了两个参数。

如何估计这个模型:

M = a = nls(y ~ a * exp((b + 0.069) * x), data = d, start = list(a = 1, b = 0))

所以b == 0在这个模型中当且仅当b == 0.069在原始模型中。

新模型的总结是:

Formula: y ~ a * exp((b + 0.069) * x)

Parameters:
  Estimate Std. Error t value Pr(>|t|)  
a  0.02980    0.05046    0.59   0.5694  
b  0.13583    0.06723    2.02   0.0741 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.314 on 9 degrees of freedom

Number of iterations to convergence: 20 
Achieved convergence tolerance: 3.168e-06   

这为您提供了所需的 p 值。