ISLR习题:线性回归 - 没有截距的简单线性回归

目录

本文源自《统计学习导论:基于R语言应用》(ISLR) 第三章习题

生成预测变量 x 和响应变量 y

set.seed(1)
x = rnorm(100)
y = 2 * x + rnorm(100)

y 对 x

建立 y 对 x 的不含截距的简单线性回归

lm_fit_y_x <- lm(y ~ x + 0)
summary(lm_fit_y_x)
Call:
lm(formula = y ~ x + 0)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.9154 -0.6472 -0.1771  0.5056  2.3109 

Coefficients:
  Estimate Std. Error t value Pr(>|t|)    
x   1.9939     0.1065   18.73   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9586 on 99 degrees of freedom
Multiple R-squared:  0.7798,	Adjusted R-squared:  0.7776 
F-statistic: 350.7 on 1 and 99 DF,  p-value: < 2.2e-16

x 对 y

lm_fit_x_y <- lm(x ~ y + 0)
summary(lm_fit_x_y)
Call:
lm(formula = x ~ y + 0)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.8699 -0.2368  0.1030  0.2858  0.8938 

Coefficients:
  Estimate Std. Error t value Pr(>|t|)    
y  0.39111    0.02089   18.73   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4246 on 99 degrees of freedom
Multiple R-squared:  0.7798,	Adjusted R-squared:  0.7776 
F-statistic: 350.7 on 1 and 99 DF,  p-value: < 2.2e-16

对比

模型系数标准差t 统计量p 值
y ~ x + 01.99390.106518.73< 2.2e-16
x ~ y + 00.391110.0208918.73< 2.2e-16

t 统计量

第一种计算方法

t=ˆβ/SE(ˆβ)

ˆβ=(ni=1xiyi)/(ni=1x2i)

SE(ˆβ)=ni=1(yixiˆβ)2(n1)ni=1x2i

beta <- sum(x * y) / sum(x^2)
beta
[1] 1.993876
se_beta <- sqrt(sum((y - x*beta)^2) / (99 * sum(x^2)))
se_beta
[1] 0.1064767
t1 <- beta / se_beta
t1
[1] 18.72593

第二种计算方法

(n1)ni=1xiyi(ni=1x2i)(ni=1y2i)(2i=1xiyi)2

(
  sqrt(99) * sum(x*y) 
) / (
  sqrt(
    sum(x^2) * sum(y^2) - sum(x*y) ^ 2
  )
)
[1] 18.72593

两种方法计算结果相同

所以 x 对 y 的 t 统计量和 y 对 x 的 t 统计量是一样的

参考

https://github.com/perillaroc/islr-study

ISLR实验系列文章

线性回归

分类

重抽样方法

线性模型选择与正则化