# 此步在读取数据
> x <- read.csv(file="C:/Users/Public/Desktop/EduRecivedFiles/lm.blood.csv",header=T)
> x
y x1 x2 x3 x4
1 11.2 5.68 1.90 4.53 8.2
2 8.8 3.79 1.64 7.32 6.9
3 12.3 6.02 3.56 6.95 10.8
4 11.6 4.85 1.07 5.88 8.3
5 13.4 4.60 2.32 4.05 7.5
6 18.3 6.05 0.64 1.42 13.6
7 11.1 4.90 8.50 12.60 8.5
8 12.1 7.08 3.00 6.75 11.5
9 9.6 3.85 2.11 16.28 7.9
10 8.4 4.65 0.63 6.59 7.1
11 9.3 4.59 1.97 3.61 8.7
12 10.6 4.29 1.97 6.61 7.8
13 8.4 7.97 1.93 7.57 9.9
14 9.6 6.19 1.18 1.42 6.9
15 10.9 6.13 2.06 10.35 10.5
16 10.1 5.71 1.78 8.53 8.0
17 14.8 6.40 2.40 4.53 10.3
18 9.1 6.06 3.67 12.79 7.1
19 10.8 5.09 1.03 2.53 8.9
20 10.2 6.13 1.71 5.28 9.9
21 13.6 5.78 3.36 2.96 8.0
22 14.9 5.43 1.13 4.31 11.3
23 16.0 6.50 6.21 3.47 12.3
24 13.2 7.98 7.92 3.37 9.8
25 20.0 11.54 10.89 1.20 10.5
26 13.3 5.84 0.92 8.61 6.4
27 10.4 3.84 1.20 6.45 9.6
# 接下来提取出我们要的切片
> x1 <- x[,2]
> x1
[1] 5.68 3.79 6.02 4.85 4.60 6.05 4.90 7.08 3.85 4.65 4.59 4.29
[13] 7.97 6.19 6.13 5.71 6.40 6.06 5.09 6.13 5.78 5.43 6.50 7.98
[25] 11.54 5.84 3.84
> x2 <- x[,3]
> x3 <- x[,4]
> x4 <- x[,5]
> y <- x[,1]
# 现在就可以画出散点图啦
> plot(y,x1)
> plot(y,x2)
> plot(y,x3)
> plot(y,x4)
#通过散点图发现x4与y呈显著的线性关系,所以画出y关于x4的一元回归方程,姑且命名为lm
> lm <- lm(y~1+x4)
# 得到关于方程的各种检验结果(SPSS同理)
> summary(lm)
Call:
lm(formula = y ~ 1 + x4)
Residuals:
Min 1Q Median 3Q Max
-4.2904 -1.4111 -0.2209 0.9010 6.7227
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.0061 2.3638 1.272 0.215173
x4 0.9782 0.2544 3.845 0.000736 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.365 on 25 degrees of freedom
Multiple R-squared: 0.3717, Adjusted R-squared: 0.3465
F-statistic: 14.79 on 1 and 25 DF, p-value: 0.000736
# 接下来绘制关于lm的散点图与拟合曲线
> abline(lm)
# 通过画图发现结果并不好,原因是因为与y轴交点在3,且斜率较小。所以想了个方法
> x4min <- min(x4)
> x4max <- max(x4)
> plot(x4,y,xlim=c[x4min,x4max])
# 这几步是通过扩大散点图的取值范围,进行画图,同时利用plot把x4和y颠倒
> abline(lm)
# 此步帮我们画出散点图与拟合曲线
# 读者不妨试试,可以得到美观的图像。
# 接下来用新数据进行预测,注意新数据即使就一个也要符合格式(dataframe)
> new <- data.frame(x1=5.0;x2=2.0;x3=10.0;x4=8.0)
错误: 意外的';'在"new <- data.frame(x1=5.0;"里
# 应用逗号分隔!
> new <- data.frame(x1=5.0,x2=2.0,x3=10.0,x4=8.0)
# 好了,下面得到预测数据与置信区间
> lm.pred <- predict(lm,new,interval="prediction",level=0.95)
> lm.pred
fit lwr upr
1 10.83178 5.836978 15.82659