1.利用虛擬變量進行線性迴歸
(MEdata.csv的數據來源:https://github.com/ChenQihome9/CSDN-Data-Library/blob/master/MEdata.csv)
問題13:針對TAX~GDP,使用分段迴歸方法,找到其迴歸方程。編程,並根據程序結果敘述如下幾方面問題:(1)分幾段最佳?(不超過5段內)(2)分段位置定在哪兒最佳?(3)寫出最佳方程,將最佳方程的曲線與數據點繪製到一幅圖中。
觀察GDP與TAX的圖像,發現圖形在GDP=800左右發生轉折,利用分段線性迴歸進行擬合。
##### 13-01 #####
a <- read.table(file='MEdata.csv',header=T,sep=',')
attach(a)
summary(GDP) #獲取GDP的數據特徵,比如最小值、中位數、四分位數
plot(GDP,TAX)
L <- length(GDP)
t <- 1:L
Ddraw <- function(i){
D <- ifelse(t > i,1,0) #獲取虛擬變量D不同分割
LM <- lm(TAX~GDP*D)
s <- summary(LM)
YTAX <- LM$co[[1]] + LM$co[[2]] * GDP + LM$co[[3]] * D + LM$co[[4]] * GDP * D
lines(GDP,YTAX)
fs <- s$fs[[1]] #Fstatistic
z <- list(fs=fs,co= LM$co) #使用列表,因爲列表的長度不一樣
return(z)
}
fs <- 0
for(i in 1:(L-1) ){
fs[i] <- Ddraw(i)$fs
}
par(mfcol=c(1,2))
plot(fs)
title("F-statistic隨着分段位置變化圖")
plot(GDP,TAX)
MAXFstatistic <- which.max(fs)
z <- Ddraw(MAXFstatistic)
title("最佳方程的曲線與數據點圖")
sprintf("分段位置定%.0f年最佳。",YEAR[MAXFstatistic])
sprintf("TAX = %.04f+%.04f*GDP+%.04f*D+%.04f*GDP*D ",
z$co[[1]],z$co[[2]],z$co[[3]],z$co[[4]] )
detach(a)
2.繪製圖形結果
3.相關結果
[2] "分段位置定1995年最佳。"
[3] 最佳方程爲:"TAX = 5.7033+0.0945*GDP+-87.6754*D+0.1080*GDP*D "
——Written in BTBU