chapter 3 -回归试验

线性回归

library(MASS)#R中自带的有,未安装的时候可以有
library(ISLR)#加载ISLR数据包
#使用MASS库中的Boston房价数据集,查看变量名
names(Boston)
[1] "crim"    "zn"      "indus"   "chas"    "nox"     "rm"      "age"     "dis"     "rad"    
[10] "tax"     "ptratio" "black"   "lstat"   "medv"   

#简单线性回归
lm.fit <- lm(medv~lstat,data=Boston)
summary(lm.fit)
Call:
lm(formula = medv ~ lstat, data = Boston)

Residuals:
    Min      1Q  Median      3Q     Max 
-15.168  -3.990  -1.318   2.034  24.500 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 34.55384    0.56263   61.41   <2e-16 ***
lstat       -0.95005    0.03873  -24.53   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 6.216 on 504 degrees of freedom
Multiple R-squared:  0.5441,    Adjusted R-squared:  0.5432 
F-statistic: 601.6 on 1 and 504 DF,  p-value: < 2.2e-16
#提取系数估计
coef(lm.fit)
(Intercept)       lstat 
 34.5538409  -0.9500494 

#提取系数估计的置信区间
confint(lm.fit)
  2.5 %     97.5 %
(Intercept) 33.448457 35.6592247
lstat       -1.026148 -0.8739505


#计算置信区间和预测区间,newdata要写出数据框的形式,哪怕只有一个数值。
predict(lm.fit,newdata =data.frame(lstat=c(5,10,15)),interval="confidence") 
  fit      lwr      upr
1 29.80359 29.00741 30.59978
2 25.05335 24.47413 25.63256
3 20.30310 19.73159 20.87461

predict(lm.fit,newdata = data.frame(lstat=c(5,10,15)),interval="prediction")
     fit       lwr      upr
1 29.80359 17.565675 42.04151
2 25.05335 12.827626 37.27907
3 20.30310  8.077742 32.52846

正如预期的一样,置信区间和预测区间有相同的中心,但预测区间比置信区间要宽。

#绘制预测变量和响应变量的散点图和最小二乘线
attach(Boston)
plot(lstat,medv)
abline(lm.fit,col="red")

#根据散点图,似乎有二次关系。
#lm()的输出结果直接用plot()命令将自动生成四幅诊断图
#用par()函数可以直接查看
par(mfrow=c(2,2))
plot(lm.fit)

查看离群点

#绘制残差对拟合值的散点图
plot(predict(lm.fit),residuals(lm.fit))
#绘制学生化残差对拟合值的散点图
plot(predict(lm.fit),residuals(lm.fit))

#量化观测的杠杆作用
plot(hatvalues(lm.fit))

hatvalues()函数可以计算任意多个预测变量的杠杆统计量

#返回向量中最大杠杆的索引
which.max(hatvalues(lm.fit))

#方差膨胀因子,用car包中的vif函数
library(car)
#检验预测变量的多重共线性
vif(lm.fit)

交互项,语句lstat:black可以将lstat和black的交互项纳入模型,
语句lstat*age将lstat,age和交互项lstat:black同时作为预测变量,是一种简写形式。

summary(lm(medv~lstat*age,data=Boston))

#预测变量的非线性变换 ,加入平方项:I(X^2)
lm.fit2 <- lm(medv~lstat+I(lstat^2))
summary(lm.fit)

#模型二
lm.fit <- lm(medv~lstat)

#比较两个模型的优劣
anova(lm.fit,lm.fit2)

anova函数通过假设检验比较两个模型
Analysis of Variance Table

Model 1: medv ~ lstat
Model 2: medv ~ lstat + I(lstat^2)
Res.Df   RSS Df Sum of Sq     F    Pr(>F)    
1    504 19472                                 
2    503 15347  1    4125.1 135.2 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
 模型二更显著

#查看诊断图
par(mfrow=c(2,2))
plot(lm.fit)


#向模型中加入高阶多项式,5次多项式
lm.fit5 <- lm(medv~poly(lstat,5))
summary(lm.fit5)
Call:
lm(formula = medv ~ poly(lstat, 5))

Residuals:
 Min       1Q   Median       3Q      Max 
-13.5433  -3.1039  -0.7052   2.0844  27.1153 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)       22.5328     0.2318  97.197  < 2e-16 ***
poly(lstat, 5)1 -152.4595     5.2148 -29.236  < 2e-16 ***
poly(lstat, 5)2   64.2272     5.2148  12.316  < 2e-16 ***
poly(lstat, 5)3  -27.0511     5.2148  -5.187 3.10e-07 ***
poly(lstat, 5)4   25.4517     5.2148   4.881 1.42e-06 ***
poly(lstat, 5)5  -19.2524     5.2148  -3.692 0.000247 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 5.215 on 500 degrees of freedom
Multiple R-squared:  0.6817,    Adjusted R-squared:  0.6785 
F-statistic: 214.2 on 5 and 500 DF,  p-value: < 2.2e-16


#进行多项式变换
summary(lm(medv~log(rm),data=Boston))
#定性预测变量
names(Carseats)
#查看定性预测变量前几行
head(Carseats$ShelveLoc) 

#构建含有交互项的多元回归模型,给出定性变量,R将自动生成虚拟变量
lm.fit <- lm(Sales~.+Income:Advertising+Price:Age,data=Carseats)
summary(lm.fit)

#查看虚拟变量的编码
attach(Carseats)
contrasts(ShelveLoc)

你可能感兴趣的:(data,mining)