欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

R语言线性回归

程序员文章站 2022-07-14 19:46:12
...

线性回归模型

线性回归模型的计算

#lm()可以完成多元线性回归函数的估计,回归系统与回归方程的检验的工作
#summary()函数,返回列表内容
#X1表示体重,x2表示年龄,Y表示对应体重与年龄下的血压
blood<-data.frame(
    X1=c(76.0, 91.5, 85.5, 82.5, 79.0, 80.5, 74.5, 
         79.0, 85.0, 76.5, 82.0, 95.0, 92.5),
    X2=c(50, 20, 20, 30, 30, 50, 60, 50, 40, 55, 
         40, 40, 20),
    Y= c(120, 141, 124, 126, 117, 125, 123, 125,
         132, 123, 132, 155, 147)
)
lm.sol<-lm(Y ~ 1+X1+X2, data=blood)#1表示常数项
summary(lm.sol)
call:
lm(formula = Y ~ 1 + X1 + X2, data = blood)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.0404 -1.0183  0.4640  0.6908  4.3274 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -62.96336   16.99976  -3.704 0.004083 ** 
X1            2.13656    0.17534  12.185 2.53e-07 ***
X2            0.40022    0.08321   4.810 0.000713 ***
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

Residual standard error: 2.854 on 10 degrees of freedom
Multiple R-squared:  0.9461,    Adjusted R-squared:  0.9354 
F-statistic: 87.84 on 2 and 10 DF,  p-value: 4.531e-07

总结

1.call:为函数所使用的模型

2.residuals:残差,列出了最小值,1/4,中位数,3/4,最大值。

3.coefficients:系数,Estimate表示估计值(截距,x1,x2系数),3.1.std.error表示各个估计值的标准差
3.2.t value表示t统计值
3.3.Pr(>|t|)表示对应统计量的p值
3.4.Signif. codes:显著性检测,p值在那个区间就用对应的星号表

4.Residal standard error表示残差的标准差,*度为n-p-1

5.Multiple R-Squared 表示相关系数的平方,R^2

6.Adjusted R-Squared 表示修正相关系数平方,这个值小于R^2,其目的是不要轻易做出自变量与因变量相关的判断。消除了R平方对自变量个数的依赖。

7.F-statistic 表示F统计量,*度为(p,n-p-1),p-value表示F统计量对应的p值

Y = -62.96 +2.136*X1 + 0.4002*X2

预测区间与置信区间

#在R中使用predict()函数来计算y0的估计值,预测区间和E(y0)的置信区
间。
#置信区间估计(confidence interval estimate):利用估计的回归方程,对于自变量 x 的一个给定值 x0 ,求出因变量 y 的平均值的估计区间。

#预测区间估计(prediction interval estimate):利用估计的回归方程,对于自变量 x 的一个给定值 x0 ,求出因变量 y 的一个个别值的估计区间。
## 一元回归估计
 x为含碳量,y为合金强度
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)
lm.sol<-lm(y ~ 1+x)
summary(lm.sol)

## 计算预测值, 并绘图
new <- data.frame(x = seq(0.10, 0.24, by=0.01))#生成x的横坐标
pp<-predict(lm.sol, new, interval="prediction")
#3行15列(fit      lwr      upr)
pc<-predict(lm.sol, new, interval="confidence")
#3行15列(fit      lwr      upr)
par(mai=c(0.8, 0.8, 0.2, 0.2))
#这句程序?
matplot(new$x, cbind(pp, pc[,-1]), type="l",
        xlab="X", ylab="Y", lty=c(1,5,5,2,2), 
        col=c("blue", "red", "red", "brown", "brown"), 
        lwd=2)
#new$x为方向上的15个值,pp与pc的fit值相同,故去除相同一列,cbine表示y方向上的值
points(x,y, cex=1.4, pch=21, col="red", bg="orange")
#增加出x,y的点图
legend(0.1, 63, 
       c("Points", "Fitted", "Prediction", "Confidence"), 
       pch=c(19, NA, NA, NA), lty=c(NA, 1,5,2), 
       col=c("orange", "blue", "red", "brow")
)
#增加标签

R语言线性回归