這篇博客主要根據一次作業來總結r語言進行迴歸分析的步驟,真的是好記憶不如“爛筆頭”??長時間不用就會忘記。
迴歸方程:
r語言進行迴歸分析時,可以使用lm()函數進行;
#使用r語言進行迴歸和區間估計;
x<-c(0.25,0.37,0.44,0.55,0.60,0.62,0.68,
0.70,0.73,0.75,0.82,0.84)
y<-c(2.57,2.31,2.12,1.92,1.75,1.71,1.60,
1.51,1.53,1.41,1.33,1.31)
df<-data.frame(x=x,y=y)
#使用lm函數進行迴歸;
mylm<-lm(y~x,data=df)
#查看回歸情況;
summary(mylm)
結果:
Call:
lm(formula = y ~ x, data = df)
Residuals:
Min 1Q Median 3Q Max
-0.053728 -0.030345 0.005332 0.027644 0.053641
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.10057 0.03863 80.27 2.20e-15 ***
x -2.19549 0.06066 -36.19 6.16e-12 ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.03659 on 10 degrees of freedom
Multiple R-squared: 0.9924, Adjusted R-squared: 0.9917
F-statistic: 1310 on 1 and 10 DF, p-value: 6.161e-12
根據結果,迴歸係數a和b的估計爲3.10057,-2.19549;
因此,估計的迴歸方程爲:;
#迴歸係數a和b的95%置信區間;
confint.lm(mylm)
結果:
2.5 % 97.5 %
(Intercept) 3.014508 3.186637
x -2.330650 -2.060334
求置信區間,使用confint.lm()函數;
迴歸係數a的95%置信區間爲:
迴歸係數b的95%置信區間爲:
#使用迴歸函數對x進行預測;
pred<-data.frame(x)
test.pred<-predict(mylm,pred,interval = "prediction",leverl=0.95)
test.pred
結果:
fit lwr upr
1 2.551699 2.453717 2.649682
2 2.288240 2.197277 2.379204
3 2.134556 2.046558 2.222554
4 1.893052 1.807779 1.978324
5 1.783277 1.698407 1.868147
6 1.739367 1.654508 1.824227
7 1.607638 1.522295 1.692980
8 1.563728 1.478054 1.649401
9 1.497863 1.411536 1.584190
10 1.453953 1.367088 1.540818
11 1.300269 1.210901 1.389637
12 1.256359 1.166106 1.346612
對給定x值,預測y,使用predict()函數;
#畫散點圖;
plot(x,y)
abline(mylm)
lines(x,test.pred[,3],lty="dashed",col="red")
lines(x,test.pred[,2],lty="dashed",col="red")
title(main="95% forecast band of Y")
紅色虛線是預測區間上限和下限。