波士顿房价数据分析(R语言)
波士頓房價數(shù)據(jù)分析(R語言)
1 .數(shù)據(jù)變量解釋
| CRIM | 城鎮(zhèn)人均犯罪率。 |
| ZN | 住宅用地超過 25000 平方英尺的比例。 |
| INDUS | 城鎮(zhèn)非零售商用土地的比例。 |
| CHAS | 查理斯河空變量(如果邊界是河流,則為1;否則為0)。 |
| NOX | 一氧化氮濃度。 |
| RM | 住宅平均房間數(shù)。 |
| AGE | 1940 年之前建成的自用房屋比例。 |
| DIS | 到波士頓五個中心區(qū)域的加權距離。 |
| RAD | 輻射性公路的接近指數(shù)。 |
| TAX | 每 10000 美元的全值房產(chǎn)稅率。 |
| PTRATIO | 城鎮(zhèn)師生比例。 |
| B | 1000(Bk-0.63)^ 2,其中 Bk 指代城鎮(zhèn)中黑人的比例。 |
| LSTAT | 人口中地位較低者的比例。 |
| MEDV | 房價中位數(shù),以千美元計。 |
2.非參數(shù)檢驗
boston <- read.csv("D:/Rlanguage/FCwork/boston_data.txt", sep="") attach(boston) library(ggplot2) ggplot(data=boston,aes(x=MEDV,fill=as.factor(CHAS)))+geom_density(alpha=.3)
CHAS是一個二值變量(即位于查爾斯河邊記為1,否則記為0)。通過圖1發(fā) 現(xiàn),CHAS=1時的房價分布與CHAS=2時房價分布基本相同。為了探究這一變量 對房價是否有顯著影響,接下來將通過一系列檢驗方法驗證。 將樣本數(shù)據(jù)分為兩個部分,CHAS=1為一組,CHAS=0為另一組
2.1單樣本檢驗
首先,通過Shapiro Wilk檢驗房價中位數(shù)是否服從正態(tài)分布。假設:
H0:房價中位數(shù)服從正態(tài)分布
H1:房價中位數(shù)不服從正態(tài)分布
由于P<0.001,拒絕原假設,即房價中位數(shù)數(shù)據(jù)不服從正態(tài)分布。
2.2兩樣本檢驗
由于房價中位數(shù)不服從正態(tài)分布,因此采用Wilcoxn秩和檢驗方法檢驗在河邊 的房價與不在河邊的房價是否有顯著差異。假設:
H0:在河邊與不在河邊的房價相同
H1:在河邊與不在河邊的房價不相同
由于P>0.001,接受原假設,在河邊的房價與不在河邊的房價不具有顯著差 異,因此在建立回歸模型時考慮刪除CHAS變量。
3.回歸模型
通過多元回歸方法找到影響B(tài)oston地區(qū)房價的主要因素
3.1建立回歸方程
fit<-lm(MEDV~CRIM+ZN+INDUS+NOX+RM+AGE+DIS+RAD+TAX+PTRATIO+B+LSTAT, data=boston) summary(fit)3.2刪除異常值
library(car) influencePlot(fit, id.method="identify", main="Influence Plot", sub="Circle size is proportional to Cook's distance") #car包中的influencePlot()函數(shù)可以將離群點、杠桿值和強影響點的信息整 合到一幅圖形中
如上圖所示,縱坐標超過+2或小于–2的樣本可被認為是離群點,水平軸超過 0.2或0.3的樣本有高杠桿值。圓圈大小與影響成比例,圓圈很大的點可能強影響 點。下面用outlierTest()函數(shù)找到到具體離群值。
連續(xù)使用outlierTest()函數(shù)檢驗得到所有異常點后進行刪除。
3.3檢查共線性
vif(fit) #VIF值大于4表明存在多重共線性
如上圖結果所示,模型存在多重共線性,因此需要進行變量篩選。
3.4變量選擇
使用全子集回歸:
library(leaps) leaps<-regsubsets(MEDV~CRIM+ZN+INDUS+NOX+RM+AGE+DIS+RAD+TAX+PTRATIO+B+LSTAT,data=boston, nbest=8) plot(leaps, scale="adjr2")
上圖結果表明刪除變量CRIM,ZN,INDUS,RAD后的R方可以達到81%。
對刪除變量后的模型進行檢驗,結果顯示剩余的變量均顯著,且調整后的R方上升至0.8128。
3.5回歸診斷
par(mfrow=c(2,2)) plot(fit1)
通過“殘差擬合圖”發(fā)現(xiàn),殘差值與擬合值存在一個曲線關系, 因此回歸模型不滿足線性假設。通過“正態(tài)Q-Q圖”發(fā)現(xiàn),圖上的點應該落在呈45 度角的直線上,因此回歸模型滿足正態(tài)性。通過“位置尺度圖”發(fā)現(xiàn),圖形顯示非 水平趨勢,因此回歸模型不滿足同方差性。接下來通過變量與房價中位數(shù)的散點圖和核密度估計曲線判斷變量之間的關 系,然后進行變量變換,改善模型效果
上圖結果顯示,RM與MEDV可能存在二次項相關,LSTAT與MEDV可能存在倒 數(shù)相關,其他的變量與MEDV的相關程度不明顯。重新建立回歸模型,在原有模型 基礎上添加RM^2與1/LSTAT兩項
由上圖檢驗結果可知,模型的調整R方上升至0.8738,擬合優(yōu)度有了明顯的提升。結合模型的回歸系數(shù)與散點圖發(fā)現(xiàn),影響房價的主要因素是房屋房間數(shù)(RM)和人口中地位較低者(LSTAT)的比例。房間數(shù)越多,房價越高,且呈指數(shù)式增長。人口中地位較低者的比例越高,人均 可支配收入越低,房價越低。與波士頓五個中心區(qū)域的加權距離(DIS)越遠的地段的房價越低。一氧化氮濃度(NOX)較低的地區(qū)房屋分布較多,房 價也較高。師生比例(PTRATIO)偏高的地區(qū)房屋價格較低,教師資源不足地區(qū),房價也越高。房產(chǎn)稅(TAX)偏高的地區(qū)房價較低,但該變量對房價的影響較小。
4.預測模型
hist(MEDV)
根據(jù)房價中位數(shù)直方圖,將房價分為4個等級: A(5-15)、B(15-25)、C(25-40)、D(35-50) 。
選取Boston數(shù)據(jù)集中70%的數(shù)據(jù)作為訓練集,剩下30%為預測集。
set.seed(12) train <- sample(nrow(boston), 0.7*nrow(boston)) boston.train <- boston[train,] boston.validate <- boston[-train,]選擇條件推斷樹模型進行預測(條件推斷樹:對輸出變量與預測變量間的關系 計算p值,選取p值最小的變量。在因變量與被選中的變量間嘗試所有可能的分割, 選取最顯著的二元分割,將數(shù)據(jù)集分成兩群后對子群重復分割。直至所有分割都不 顯著或已到達最小節(jié)點為止)
library(party) fit.ctree<-ctree(MEDV~NOX+RM+AGE+DIS+TAX+PTRATIO+B+LSTAT+ LSTAT+I(RM^2)+I(1/LSTAT), data=boston.train) plot(fit.ctree, main="Conditional Inference Tree")
上圖為房價等級的條件推斷樹,每個節(jié)點處的直方圖代表這個節(jié)點對應的房價 等級的比例。
上圖的輸出結果中“Actual”為真實值,“Predicted”為預測值,對角線上的樣本 為預測準確的樣本,由此可得該條件推斷樹模型的準確率為79.87%。
總結
以上是生活随笔為你收集整理的波士顿房价数据分析(R语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的知识小密圈
- 下一篇: python操作crontab定时任务