簡單線性回歸、多元線性回歸、交互項、預測變量的非線性變換、定性預測變量


簡單線性回歸

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