日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

波士顿房价数据分析(R语言)

發布時間:2023/12/20 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 波士顿房价数据分析(R语言) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

波士頓房價數據分析(R語言)

1 .數據變量解釋

變量解釋
CRIM城鎮人均犯罪率。
ZN住宅用地超過 25000 平方英尺的比例。
INDUS城鎮非零售商用土地的比例。
CHAS查理斯河空變量(如果邊界是河流,則為1;否則為0)。
NOX一氧化氮濃度。
RM住宅平均房間數。
AGE1940 年之前建成的自用房屋比例。
DIS到波士頓五個中心區域的加權距離。
RAD輻射性公路的接近指數。
TAX每 10000 美元的全值房產稅率。
PTRATIO城鎮師生比例。
B1000(Bk-0.63)^ 2,其中 Bk 指代城鎮中黑人的比例。
LSTAT人口中地位較低者的比例。
MEDV房價中位數,以千美元計。

2.非參數檢驗

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發 現,CHAS=1時的房價分布與CHAS=2時房價分布基本相同。為了探究這一變量 對房價是否有顯著影響,接下來將通過一系列檢驗方法驗證。 將樣本數據分為兩個部分,CHAS=1為一組,CHAS=0為另一組

CHAS1<-subset(boston,CHAS==1) CHAS2<-subset(boston,CHAS==0)

2.1單樣本檢驗

首先,通過Shapiro Wilk檢驗房價中位數是否服從正態分布。假設:
H0:房價中位數服從正態分布
H1:房價中位數不服從正態分布

shapiro.test(scale(MEDV))


由于P<0.001,拒絕原假設,即房價中位數數據不服從正態分布。

2.2兩樣本檢驗

由于房價中位數不服從正態分布,因此采用Wilcoxn秩和檢驗方法檢驗在河邊 的房價與不在河邊的房價是否有顯著差異。假設:
H0:在河邊與不在河邊的房價相同
H1:在河邊與不在河邊的房價不相同

wilcox.test(CHAS1$MEDV,CHAS2$MEDV,alternative = "less")


由于P>0.001,接受原假設,在河邊的房價與不在河邊的房價不具有顯著差 異,因此在建立回歸模型時考慮刪除CHAS變量。

3.回歸模型

通過多元回歸方法找到影響Boston地區房價的主要因素

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()函數可以將離群點、杠桿值和強影響點的信息整 合到一幅圖形中



如上圖所示,縱坐標超過+2或小于–2的樣本可被認為是離群點,水平軸超過 0.2或0.3的樣本有高杠桿值。圓圈大小與影響成比例,圓圈很大的點可能強影響 點。下面用outlierTest()函數找到到具體離群值。

outlierTest(fit)#求得最大標準化殘差絕對值Bonferroni調整后的p值


連續使用outlierTest()函數檢驗得到所有異常點后進行刪除。

boston<-boston[-c(366,369,373,381,419,372,370,371,368,413,365),]

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%。

fit1<-lm(MEDV~NOX+RM+AGE+DIS+TAX+PTRATIO+B+LSTAT, data = boston) summary(fit1)


對刪除變量后的模型進行檢驗,結果顯示剩余的變量均顯著,且調整后的R方上升至0.8128。

3.5回歸診斷

par(mfrow=c(2,2)) plot(fit1)


通過“殘差擬合圖”發現,殘差值與擬合值存在一個曲線關系, 因此回歸模型不滿足線性假設。通過“正態Q-Q圖”發現,圖上的點應該落在呈45 度角的直線上,因此回歸模型滿足正態性。通過“位置尺度圖”發現,圖形顯示非 水平趨勢,因此回歸模型不滿足同方差性。接下來通過變量與房價中位數的散點圖和核密度估計曲線判斷變量之間的關 系,然后進行變量變換,改善模型效果

par(mfrow=c(3,3)) plot(NOX,MEDV) lines(ksmooth(NOX,MEDV, bandwidth =1,kernel = "normal"), col="red") plot(RM,MEDV) lines(ksmooth(RM,MEDV, bandwidth =1,kernel = "normal"), col="red") plot(AGE,MEDV) lines(ksmooth(AGE,MEDV, bandwidth =1,kernel = "normal"), col="red") plot(DIS,MEDV) lines(ksmooth(DIS,MEDV, bandwidth =1,kernel = "normal"), col="red") plot(TAX,MEDV) lines(ksmooth(TAX,MEDV, bandwidth =1,kernel = "normal"), col="red") plot(PTRATIO,MEDV) lines(ksmooth(PTRATIO,MEDV, bandwidth =1,kernel = "normal"), col="red") plot(B,MEDV) lines(ksmooth(B,MEDV, bandwidth =1,kernel = "normal"), col="red") plot(LSTAT,MEDV) lines(ksmooth(LSTAT,MEDV, bandwidth =1,kernel = "normal"), col="red")


上圖結果顯示,RM與MEDV可能存在二次項相關,LSTAT與MEDV可能存在倒 數相關,其他的變量與MEDV的相關程度不明顯。重新建立回歸模型,在原有模型 基礎上添加RM^2與1/LSTAT兩項

fit2<-lm(MEDV~NOX+RM+AGE+DIS+TAX+PTRATIO+B+LSTAT+ LSTAT+I(RM^2)+I(1/LSTAT), data = boston) summary(fit2)


由上圖檢驗結果可知,模型的調整R方上升至0.8738,擬合優度有了明顯的提升。結合模型的回歸系數與散點圖發現,影響房價的主要因素是房屋房間數(RM)和人口中地位較低者(LSTAT)的比例。房間數越多,房價越高,且呈指數式增長。人口中地位較低者的比例越高,人均 可支配收入越低,房價越低。與波士頓五個中心區域的加權距離(DIS)越遠的地段的房價越低。一氧化氮濃度(NOX)較低的地區房屋分布較多,房 價也較高。師生比例(PTRATIO)偏高的地區房屋價格較低,教師資源不足地區,房價也越高。房產稅(TAX)偏高的地區房價較低,但該變量對房價的影響較小。

4.預測模型

hist(MEDV)


根據房價中位數直方圖,將房價分為4個等級: A(5-15)、B(15-25)、C(25-40)、D(35-50) 。

boston$MEDV[MEDV >=40] <-"D" boston$MEDV[MEDV < 40& MEDV >=25] <-"C" boston$MEDV[MEDV < 25& MEDV >=15] <-"B" boston$MEDV[MEDV < 15] <-"A" boston$MEDV <- factor(boston$MEDV, levels=c("A","B","C","D"))

選取Boston數據集中70%的數據作為訓練集,剩下30%為預測集。

set.seed(12) train <- sample(nrow(boston), 0.7*nrow(boston)) boston.train <- boston[train,] boston.validate <- boston[-train,]

選擇條件推斷樹模型進行預測(條件推斷樹:對輸出變量與預測變量間的關系 計算p值,選取p值最小的變量。在因變量與被選中的變量間嘗試所有可能的分割, 選取最顯著的二元分割,將數據集分成兩群后對子群重復分割。直至所有分割都不 顯著或已到達最小節點為止)

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")


上圖為房價等級的條件推斷樹,每個節點處的直方圖代表這個節點對應的房價 等級的比例。

ctree.pred <- predict(fit.ctree, boston.validate, type="response") ctree.perf <- table(boston.validate$MEDV, ctree.pred, dnn=c("Actual", "Predicted")) ctree.perf


上圖的輸出結果中“Actual”為真實值,“Predicted”為預測值,對角線上的樣本 為預測準確的樣本,由此可得該條件推斷樹模型的準確率為79.87%。

總結

以上是生活随笔為你收集整理的波士顿房价数据分析(R语言)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。