Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在线性回归模型中计算β的T统计量_R_Statistics_Regression_Linear Regression - Fatal编程技术网

R 在线性回归模型中计算β的T统计量

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

我有下面的公式来计算一个简单线性回归模型的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        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