簡單線性回歸
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,否則為0, R 還創造了一個虛擬變量 ShelveLocMedium ,如果貨架位置屬於中等水平,它的值為1 ,否則為0。壞的擱置位置則對應兩個虛擬變量均為0。
