R 在线性回归模型中计算β的T统计量
我有下面的公式来计算一个简单线性回归模型的t统计量 t=β1/SE(β1) SE(beta1)=sqrt((RSS/var(x1))*(1/n-2)) 如果我想用R来做一个简单的例子,我不能得到与R中线性模型相同的结果R 在线性回归模型中计算β的T统计量,r,statistics,regression,linear-regression,R,Statistics,Regression,Linear Regression,我有下面的公式来计算一个简单线性回归模型的t统计量 t=β1/SE(β1) SE(beta1)=sqrt((RSS/var(x1))*(1/n-2)) 如果我想用R来做一个简单的例子,我不能得到与R中线性模型相同的结果 x <- c(1,2,4,8,16) y <- c(1,2,3,4,5) mod <- lm(y~x) summary(mod) Call: lm(formula = y ~ x) Residuals: 1 2 3
x <- c(1,2,4,8,16)
y <- c(1,2,3,4,5)
mod <- lm(y~x)
summary(mod)
Call:
lm(formula = y ~ x)
Residuals:
1 2 3 4 5
-0.74194 0.01613 0.53226 0.56452 -0.37097
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.50000 0.44400 3.378 0.0431 *
x 0.24194 0.05376 4.500 0.0205 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6558 on 3 degrees of freedom
Multiple R-squared: 0.871, Adjusted R-squared: 0.828
F-statistic: 20.25 on 1 and 3 DF, p-value: 0.02049
β1=0.24194
SE(β1)=sqrt(1.290323/37.2)*(1/3))
SE(β1)=0.1075269
因此t=0.24194/0.1075269=2.250042
那么为什么我的计算精确到R值的一半呢?这与单尾/双尾测试有关吗?t(0.05/2)的值为3.18
问候,,
Jan不同的结果是由于您的
se(beta)
公式中缺少一个术语造成的。应该是:
se(beta)=sqrt((1/(n-2))*rss/(var(x)*(n-1)))
公式通常写为:
se(beta)=sqrt((1/(n-2))*rss/sum((x-均值(x))^2))
而不是在var(x)
方面
为了完整性起见,这里还有计算检查:
reprex::reprex_info()
#>由reprex包v0.1.1.9000于2017年10月30日创建
x
#>残差:
#> 1 2 3 4 5
#> -0.74194 0.01613 0.53226 0.56452 -0.37097
#>
#>系数:
#>估计标准误差t值Pr(>t)
#>(截距)1.50000 0.44400 3.378 0.0431*
#>x 0.24194 0.05376 4.500 0.0205*
#> ---
#>签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
#>
#>剩余标准误差:3个自由度上的0.6558
#>倍数R平方:0.871,调整后的R平方:0.828
#>F-统计值:1和3 DF上的20.25,p-值:0.02049
mod_se_b似乎你的se(beta)公式中缺少了一个n-1
。它应该是sqrt(rss/(var(x)*(n-1))*(1/(n-2))
。你会得到与lm
相同的结果。你有没有关于附加n-1的方程式的参考?因为正如本页所述:方程式中没有n-1。我的信也这么说。那么,在R的lm中t检验的计算是否不同呢?为什么?或者我的方程有什么地方错了。在你链接的页面上没有n-1
,因为方程不是用var(x)
参数化的,而是用sum((x-mean(x))^2)
参数化的。和var(x)=和((x-平均值(x))^2)/(n-1)
,因此缺少术语。OMG,谢谢!!为什么我没有看到。你可以在下面贴一条奇克评论,我会把它标记为答案。
var(x)
37.2
sum(resid(mod)^2)
1.290323