library(MASS)
#介紹引入套件
data(Boston)
Boston=subset(Boston,,-c(zn,chas,black,rad,ptratio,age,nox,tax))
#刪減欄位
str(Boston) #會列出所有資料型態
## 'data.frame': 506 obs. of 6 variables:
## $ crim : num 0.00632 0.02731 0.02729 0.03237 0.06905 ...
## $ indus: num 2.31 7.07 7.07 2.18 2.18 2.18 7.87 7.87 7.87 7.87 ...
## $ rm : num 6.58 6.42 7.18 7 7.15 ...
## $ dis : num 4.09 4.97 4.97 6.06 6.06 ...
## $ lstat: num 4.98 9.14 4.03 2.94 5.33 ...
## $ medv : num 24 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 ...
head(Boston)
## crim indus rm dis lstat medv
## 1 0.00632 2.31 6.575 4.0900 4.98 24.0
## 2 0.02731 7.07 6.421 4.9671 9.14 21.6
## 3 0.02729 7.07 7.185 4.9671 4.03 34.7
## 4 0.03237 2.18 6.998 6.0622 2.94 33.4
## 5 0.06905 2.18 7.147 6.0622 5.33 36.2
## 6 0.02985 2.18 6.430 6.0622 5.21 28.7
tail(Boston)
## crim indus rm dis lstat medv
## 501 0.22438 9.69 6.027 2.4982 14.33 16.8
## 502 0.06263 11.93 6.593 2.4786 9.67 22.4
## 503 0.04527 11.93 6.120 2.2875 9.08 20.6
## 504 0.06076 11.93 6.976 2.1675 5.64 23.9
## 505 0.10959 11.93 6.794 2.3889 6.48 22.0
## 506 0.04741 11.93 6.030 2.5050 7.88 11.9
summary(Boston)
## crim indus rm dis
## Min. : 0.00632 Min. : 0.46 Min. :3.561 Min. : 1.130
## 1st Qu.: 0.08204 1st Qu.: 5.19 1st Qu.:5.886 1st Qu.: 2.100
## Median : 0.25651 Median : 9.69 Median :6.208 Median : 3.207
## Mean : 3.61352 Mean :11.14 Mean :6.285 Mean : 3.795
## 3rd Qu.: 3.67708 3rd Qu.:18.10 3rd Qu.:6.623 3rd Qu.: 5.188
## Max. :88.97620 Max. :27.74 Max. :8.780 Max. :12.127
## lstat medv
## Min. : 1.73 Min. : 5.00
## 1st Qu.: 6.95 1st Qu.:17.02
## Median :11.36 Median :21.20
## Mean :12.65 Mean :22.53
## 3rd Qu.:16.95 3rd Qu.:25.00
## Max. :37.97 Max. :50.00
#解釋1非常正相關 -1是非常負相關
cor(Boston$medv,Boston)
## crim indus rm dis lstat medv
## [1,] -0.3883046 -0.4837252 0.6953599 0.2499287 -0.7376627 1
barplot(cor(Boston$medv,Boston))
我們可以知道… - 房價與 該鎮平均房間數 是 正相關 - 房價與 該鎮平均低收入戶比例 是 負相關
這不是你很熟的迴歸分析嗎?
plot(Boston$rm,Boston$medv) #x軸為房間數 y軸為房價
LM=lm(Boston$medv~Boston$rm) #找出線性關係
abline(LM,col=2) #畫出圖
hist(Boston$medv, breaks = 20) #使用 hist 做出房價的柱狀圖
abline(v = 43.4, col="red") #使用 abline 標示出剛剛計算的前 5% 高的房價位置
找出前 5% (10%) 的房價
quantile(Boston$medv, probs = c(0.95, 0.9)) #用百分位數去找
## 95% 90%
## 43.4 34.8
平均-高房價與其他是否有差異
MEDVhight = subset(Boston,Boston$medv>=43.4) # MEDVhight 為房價高的資料
MEDVOther = subset(Boston,Boston$medv< 43.4) # MEDVOther 其他資料
平均-高房價與其他是否有差異 -使用 colMeans 計算各欄位平均
colMeans(MEDVhight)
## crim indus rm dis lstat medv
## 1.749602 8.934231 7.630885 3.127508 4.154615 48.453846
colMeans(MEDVOther)
## crim indus rm dis lstat medv
## 3.714486 11.256083 6.211712 3.831201 13.113396 21.128750
-使用 rbind 合併資料表
rbind(colMeans(MEDVhight),colMeans(MEDVOther))
## crim indus rm dis lstat medv
## [1,] 1.749602 8.934231 7.630885 3.127508 4.154615 48.45385
## [2,] 3.714486 11.256083 6.211712 3.831201 13.113396 21.12875
高房價的鎮 犯罪率較低 工業區較少 住宅區比例高
Boston2=Boston
Boston2$Income=cut(Boston2$lstat,breaks=3)#將低收入戶比例分成三類別
head(Boston2$Income)
## [1] (1.69,13.8] (1.69,13.8] (1.69,13.8] (1.69,13.8] (1.69,13.8] (1.69,13.8]
## Levels: (1.69,13.8] (13.8,25.9] (25.9,38]
Boston2$Income= cut(Boston2$lstat,breaks=3,labels=c("H","M","L"))
table(Boston2$Income) #各欄位加總 table()
##
## H M L
## 313 162 31
str(Boston2)
## 'data.frame': 506 obs. of 7 variables:
## $ crim : num 0.00632 0.02731 0.02729 0.03237 0.06905 ...
## $ indus : num 2.31 7.07 7.07 2.18 2.18 2.18 7.87 7.87 7.87 7.87 ...
## $ rm : num 6.58 6.42 7.18 7 7.15 ...
## $ dis : num 4.09 4.97 4.97 6.06 6.06 ...
## $ lstat : num 4.98 9.14 4.03 2.94 5.33 ...
## $ medv : num 24 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 ...
## $ Income: Factor w/ 3 levels "H","M","L": 1 1 1 1 1 1 1 2 3 2 ...