简单线性回归、多元线性回归、交互项、预测变量的非线性变换、定性预测变量


简单线性回归

library(ISLR)

library(class)

library(MASS)

fix(Boston)   #弹出数据编辑器

names(Boston)

 

#基本句法是 lm (y ~ x , data) ,其中y是响应变量,x是预测变量,data是这两个变量所属的数据集。

lm.fit<-lm(medv~lstat,data=Boston)

attach (Boston)

lm.fit<-lm(medv~lstat)

lm.fit

 

summary(lm.fit)

 

names(lm.fit) ##用names ()函数找出 lm. fit 中存储的其他信息

 

confint(lm.fit) #为了得到系数估计值的置信区间,可以使用 cofint ()命令。

 

#predict ()函数可以计算置信区间和预测区间。

predict(lm.fit,data.frame(lstat=(c(5,10,15))),

        ineterval="confidence")

 

predict(lm.fit,data.frame(lstat=(c(5,10,15))),

        ineterval="prediction")

 

plot(lstat,medv)

 

abline(lm.fit)

abline(lm.fit,lwd=3)

abline(lm.fit,lwd=3,col="red")

 

plot(lstat,medv,col="red")

plot(lstat,medv,pch=20)

plot(lstat,medv,pch="+")

plot(1:20,1:20,pch=1:20)

 

#par(mfrow=c(2,2))

plot(lm.fit) #此时会画出四张图

plot(predict(lm.fit), residuals(lm.fit)) #residua1s ()函数计算线性回归拟合的残差

 

plot(predict(lm.fit), rstudent(lm.fit)) ##函数 rstudent ()可计算学生化残差,我们也可以用这个函数绘制残差对拟合值的散点图。

 

plot(hatvalues(lm.fit))

 

which.max(hatvalues(lm.fit)) #which. max ()函数可识别出向量中最大元素的索引,它告诉我们哪个观测具有最大的杠杆统计量。

 

多元线性回归

lm.fit=lm(medv~lstat+age,data=Boston)

summary(lm.fit)

 

lm.fit=lm(medv~.,data=Boston)

summary(lm.fit)

 

library(car)

vif(lm.fit) #vif ()函数是car 包的一部分,可用于计算方差膨胀因子

 

lm.fit1=lm(medv~.-age,data=Boston) #用除age变量之外的所有其他变量进行回归,age 变量有很高的p 值,所以我们进行不包括年龄变量的回归

summary(lm.fit1)

 

lm.fit1=update(lm.fit, ~.-age) #或者使用 update ()函数进行除age变量之外的所有其他变量进行回归

交互项

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

解释:#语句 lstat* age lstat age 和交互项 lstat x age 同时作为预测变量,它是 lstat + age + lstat: age 的简写形式。

 

预测变量的非线性变换

lm.fit2=lm(medv~lstat+I(lstat^2)) #函数 I() 是把x转换成其二次方的标准方法。

summary(lm.fit2)

 

结果分析:二次项的P值接近零表明它使模型得到了改进。

lm.fit=lm(medv~lstat)

anova(lm.fit,lm.fit2) #用 anova ()函数进一步量化二次拟合在何种程度上优于线性拟合

 

 

par(mfrow=c(2,2))

plot(lm.fit2)

 

#要创建一个三次拟合我们可以向模型中加入一个形如I (X^3) 的预测变量,更好的方法是用 po1y ()1m ( )函数创建多项式。

lm.fit5=lm(medv~poly(lstat,5)) #创建5阶多项式

summary(lm.fit5)

 

summary(lm(medv~log(rm),data=Boston))  #使用对数变换

 

定性预测变量

fix(Carseats)  #调出数据编辑器

names(Carseats) #查看数据框的列名

lm.fit=lm(Sales~.+Income:Advertising+Price:Age,data=Carseats)

summary(lm.fit)

attach(Carseats)

contrasts(ShelveLoc) #contrasts ()函数返回R虚拟变量的编码。

  

 

解释:#R创建了一个虚拟变量 ShelveLocGood ,如果货架位置好,它的值为1,否则为0R 还创造了一个虚拟变量 ShelveLocMedium ,如果货架位置属于中等水平,它的值为1 ,否则为0。坏的搁置位置则对应两个虚拟变量均为0


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM