BG:在box-cox變換中,當λ = 0時即為對數變換。
當所分析變量的標准差相對於均值而言比較大時,這種變換特別有用。對數據作對數變換常常起到降低數據波動性和減少不對稱性的作用。。這一變換也能有效消除異方差性
library(MASS) library(openxlsx) data= read.xlsx("data104.xlsx",sheet = 1) #導入數據 attach(data)
op<-par(mfrow=c(2,2),mar=0.4+c(4,4,1,1),oma=c(0,0,2,0)) #將四張圖放在一起,調整邊界。(以后也采用此行) plot(size,effort) #圖4-4(a) plot(log(size),log(effort)) #圖4-4(b) #繪制頻率分布直方圖 hist(effort) #圖4-5(a) hist(size) #圖4-5(b)
effor 和 size 這兩個變量的頻率分布圖表明,它們並不滿足正態分布。為了接近正態分布,必須變換這些變量(通過頻率分布圖判斷變量是否滿足正態分布)
1.先進行基本的線性回歸,利用得到的模型進行box-cox變換
lm1=lm(effort~size+t14) #擬合線性回歸模型 summary(lm1) #繪制殘差圖進行殘差分析 plot(fitted(lm1),resid(lm1),cex=1.2,pch=21,col="red",bg="orange",xlab="Fitted value",ylab="Residuals") boxcox(lm1,lambda=seq(0,1,by=0.1)) #進行box-cox變換
從殘差圖可以看到誤差項不滿足Gauss-Markov假設。
右圖的Box-Cox變換建議問哦們λ可以取在[0.05,0.6]范圍內,對投入工作量(effort) 取對數有一定的可信度(λ=0 幾乎落在置信域內)
進行對數變換
lm2=lm(log(effort)~size+t14) summary(lm2) #繪制殘差圖 plot(fitted(lm2),resid(lm2),cex=1.2,pch=21,col="red",bg="orange",xlab="Fitted value",ylab="Residuals")
書上的結果時殘差范圍大致在[-25,40]內,不滿足Gauss-Markov假設
與書上結果不符,上圖參擦汗圖表示這個模型是可行的。
2.試圖擬合 effort 與 log(size),t14 的回歸方程。
lm3=lm(effort~log(size)+t14) summary(lm3) #繪制殘差圖 plot(fitted(lm3),resid(lm3),cex=1.2,pch=21,col="red",bg="orange",xlab="Fitted value",ylab="Residuals") #box-cox變換求λ boxcox(lm3,lambda=seq(0,1,by=0.1))
根據右圖,Box-Cox變換建議我們取 λ=0
建立如下方程 ln(effort) = β0 + β1ln(size) + β2 t14 + e
lm4=lm(log(effort)~log(size)+t14) #進行線性回歸 summary(lm4) #繪制殘差圖 plot(fitted(lm4),resid(lm4),cex=1.2,pch=21,col="red",bg="orange",xlab="Fitted value",ylab="Residuals") #進行box-cox變換 boxcox(lm4,lambda=seq(0,1,by=0.1))
因為λ=1 包含在box-cox圖像所示的置信域內,說明不進行變換也是ok的
而且通過殘差分析,可以看出這個模型是合理的。