R Markdown PPT 基本練習

R Markdown

R: A Brief Introduction

讓我們用R先來玩個資料吧~~

載入 R Packages and dataset

library(MASS)

#介紹引入套件
data(Boston)
Boston=subset(Boston,,-c(zn,chas,black,rad,ptratio,age,nox,tax))
#刪減欄位

[PART A].基本統計練習

如何看基本資料

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 ...

變數說明

[練習1]看頭看尾

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

[練習2]基本統計量

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

高房價的鎮 犯罪率較低 工業區較少 住宅區比例高

我們現在知道~~

[PART B].其它發想:我們可不可以將低收入戶分類

你還記得

2-1.將低收入戶分類

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

我可以計算有多少“H”嗎?

table(Boston2$Income) #各欄位加總 table() 
## 
##   H   M   L 
## 313 162  31

我們來回顧剛剛研究的dataset

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 ...