简单线性回归中各指标在R中的计算

前话

简单线性回归用于计算两个连续型变量(如X,Y)之间的线性关系,具体地说就是计算下面公式中的

其中称为残差,服从从的正态分布,自由度为(n-1) - (2-1) = n-2 为了找到这条直线的位置,我们使用最小二乘法(least squares approach)。最小二乘法确保所有点处的残差的平方和最小时计算,即下面示意图中有最小值。

简单线性相关示意图

各指标的计算

运用最小二乘法找出的这条最优直线一定经过点。其中

斜率和截距的估计值

Pearson相关系数r

方差分析

在方差分析(ANOVA)中,总的平方和包含回归平方和残差平方和两部分。

  • 总的平方和

其自由度为 n - 1,这里n为观测点的个数。

  • 回归的平方和

其自由度为 2 - 1 = 1。

  • 残差的平方和

其自由度为 (n -1) - (2 - 1) = n -2。

决定系数(拟合优势度)

决定系数是用来表示模型的解释度,理论上与相关系数没有关系,只是在简单线性回归中,决定系数$R^2 $值等于Pearson相关系数r的平方。

R中的实现

线性模拟

x = c(0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.20, 0.21, 0.23)
y = c(42.0, 43.5, 45.0, 45.5, 45.0, 47.5, 49.0, 53.0, 50.0, 55.0, 55.0, 60.0)
fit = lm(y ~ x)
summary(fit)
	## Call:
	## lm(formula = y ~ x)
	## 
	## Residuals:
	##	 #Min      1Q  Median      3Q     Max 
	## -2.0431 -0.7056  0.1694  0.6633  2.2653 
	## 
	## Coefficients:
	## 				#Estimate Std. Error t value Pr(>|t|)    
	## (Intercept)   28.493      1.580   18.04 5.88e-09 ***
	## x            130.835      9.683   13.51 9.50e-08 ***
	## ---
	## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
	## 
	## Residual standard error: 1.319 on 10 degrees of freedom
	## Multiple R-squared:  0.9481,    Adjusted R-squared:  0.9429 
	## F-statistic: 182.6 on 1 and 10 DF,  p-value: 9.505e-08
anova(fit)
	##Analysis of Variance Table
	##
	##Response: y
	##			#Df Sum Sq Mean Sq F value    Pr(>F)    
	##x          1 317.82  317.82  182.55 9.505e-08 ***
	##Residuals 10  17.41    1.74                      
	##---
	##Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

线性模拟各参数的提取

# 可以通过names函数查看summary(fit)中个具体参数的提取方法
names(summary(fit))
# 提取R square
summary(fit)$r.squared ## 依照该形式可以提取names(summary(fit))中任意指标
# 其它常用指标的提取
# 提取模型lm或glm提取回归系数
coefficients(fit)
# 还可简化为
coef(fit)
# 提取模型lm或glm的残差
# 也可简化为
residuals(fit)
resid(fit)
# 提取lm或glm对象中残差的平方和
deviance(fit)
# 提取lm或glm对象中的方差分析表
# 其中p值越小,差异越显著, beita1越不可能为0
anova(fit)
# 预测数据
new <- data.frame(x=c(0.16, 2.3))
predict(fit, new)

## 也可以做出预测区间
predict(fit, new, interval = 'prediction', levels = 0.95)

线性模拟各参数中各量的算法

五个和的计算

## 预备统计量(Sums of square and sums of producte)
Sx = sum(x)
Sy = sum(y)
Sxx = sum((x - mean(x))^2)
Syy = sum((y - mean(y))^2)
Sxy = sum((x - mean(x)) * (y - mean(y)))

## 这里仅仅作为补充,具体原因不是很清楚
Syy = deviance(lm(y~1))
n = length(x)

回归系数

## 回归系数$\alpha$和$beta$(这样计算,residuals有最小值)
beta = Sxy/Sxx
beta
alpha = mean(y) - beta*mean(x)
alpha
# 提取lm或glm对象中的回归系数
coef(fit)

残差及五分位数

residuals = y - (beta + alpha * x)
residuals
quantile(residuals)
# 提取模型lm或glm的残差
# 也可简化为
residuals(fit)

Pearson相关系数r

r = sqrt(Sxy/(Sxx * Syy))
r

R平方

决定系数,其值为 回归的平方和/总的平方和。

rsquare = (Syy - sum(residuals^2))/Syy
rsquare

adjust R平方

## 考虑到了自变量的个数, 包括截距在内, 本例子中k = 2
n = length(x)
k = 2
adjustrsquare = 1- (1-rsquare)*(n-1)/(n-k)
adjustrsquare

回归方程的F检验

在简单线性回归的模型,我们可以在时,对F统计量进行检验。 在F检验中统计量F

对应p值越小,说明此时越小的概率时间发生了,越不能接受原假设。

斜率β的t检验

在简单线性回归的模型,我们可以检验回归系数(斜率)β是否相等于特定的$β_0$(通常使$β_0 = 0$以检验$x_i$对$y_i$是否有关联)。 统计量t

在零假设为$β = β_0$的情况下服从自由度为n − 2之t分布,其中

同F检验一样,p值越小,说明此时越小的概率事件发生了,越不能接受原假设。

话外篇

在R中,lm(y ~ x)和lm(y ~ x + 1)的效果是相同的。此外,lm(y ~ 1)中截距的估计值为y的平均值,残差为每个y与均值的离差。

Previous     Next Xu Kuang /
Published under (CC) BY-NC-SA in categories 技术篇  tagged with R  统计