Data wrangling: In-Class Exercise 2

2020-Spring [Data Management] Instructor: SHEU, Ching-Fan

CHIU, Ming-Tzu

2020-04-12

Merge the two data sets: state.x77{datasets} and USArrests{datasets} and compute all pair-wise correlations for numerical variables. Is there anything interesting to report?

看看資料長什麼樣子

library(datasets)
head(state.x77)
#>            Population Income Illiteracy Life Exp Murder HS Grad Frost   Area
#> Alabama          3615   3624        2.1    69.05   15.1    41.3    20  50708
#> Alaska            365   6315        1.5    69.31   11.3    66.7   152 566432
#> Arizona          2212   4530        1.8    70.55    7.8    58.1    15 113417
#> Arkansas         2110   3378        1.9    70.66   10.1    39.9    65  51945
#> California      21198   5114        1.1    71.71   10.3    62.6    20 156361
#> Colorado         2541   4884        0.7    72.06    6.8    63.9   166 103766
str(state.x77)
#>  num [1:50, 1:8] 3615 365 2212 2110 21198 ...
#>  - attr(*, "dimnames")=List of 2
#>   ..$ : chr [1:50] "Alabama" "Alaska" "Arizona" "Arkansas" ...
#>   ..$ : chr [1:8] "Population" "Income" "Illiteracy" "Life Exp" ...
head(USArrests)
#>            Murder Assault UrbanPop Rape
#> Alabama      13.2     236       58 21.2
#> Alaska       10.0     263       48 44.5
#> Arizona       8.1     294       80 31.0
#> Arkansas      8.8     190       50 19.5
#> California    9.0     276       91 40.6
#> Colorado      7.9     204       78 38.7
str(USArrests)
#> 'data.frame':    50 obs. of  4 variables:
#>  $ Murder  : num  13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ...
#>  $ Assault : int  236 263 294 190 276 204 110 238 335 211 ...
#>  $ UrbanPop: int  58 48 80 50 91 78 77 72 80 60 ...
#>  $ Rape    : num  21.2 44.5 31 19.5 40.6 38.7 11.1 15.8 31.9 25.8 ...

state.x77 的資料較為複雜,從 R Document 上的說明來看:

**

USArrests資料則是 1973 年美國謀殺 ( murder ) 與突襲 ( assault ) 犯罪逮捕比率,包含:

利用 merge() 把兩組資料合併

dta <- merge(state.x77, USArrests)
str(dta)
#> 'data.frame':    15 obs. of  11 variables:
#>  $ Murder    : num  2.7 3.3 3.3 4.3 5.3 6.8 7.4 8.5 9.7 11.1 ...
#>  $ Population: num  1058 5814 812 3559 813 ...
#>  $ Income    : num  3694 4755 4281 4864 4119 ...
#>  $ Illiteracy: num  0.7 1.1 0.7 0.6 0.6 0.7 0.8 0.9 2.2 0.9 ...
#>  $ Life Exp  : num  70.4 71.8 71.2 71.7 71.9 ...
#>  $ HS Grad   : num  54.7 58.5 57.6 63.5 59.5 63.9 53.2 52.3 55.2 52.8 ...
#>  $ Frost     : num  161 103 174 32 126 166 124 101 120 125 ...
#>  $ Area      : num  30920 7826 9027 66570 82677 ...
#>  $ Assault   : int  72 110 110 102 46 161 159 156 109 254 ...
#>  $ UrbanPop  : int  66 77 77 62 83 60 89 63 52 86 ...
#>  $ Rape      : num  14.9 11.1 11.1 16.5 20.2 15.6 18.8 20.7 16.3 26.1 ...

計算 numeric data 的 pair-wise correlation

result <- cor(dta)
round(result, 2)
#>            Murder Population Income Illiteracy Life Exp HS Grad Frost  Area
#> Murder       1.00       0.33  -0.10       0.80    -0.74   -0.59 -0.53  0.37
#> Population   0.33       1.00  -0.02       0.12     0.05   -0.40 -0.36 -0.09
#> Income      -0.10      -0.02   1.00      -0.46     0.22    0.66  0.36  0.57
#> Illiteracy   0.80       0.12  -0.46       1.00    -0.75   -0.68 -0.67  0.18
#> Life Exp    -0.74       0.05   0.22      -0.75     1.00    0.66  0.41 -0.21
#> HS Grad     -0.59      -0.40   0.66      -0.68     0.66    1.00  0.60  0.36
#> Frost       -0.53      -0.36   0.36      -0.67     0.41    0.60  1.00  0.12
#> Area         0.37      -0.09   0.57       0.18    -0.21    0.36  0.12  1.00
#> Assault      0.81       0.41   0.28       0.51    -0.60   -0.37 -0.28  0.54
#> UrbanPop    -0.11       0.57   0.09      -0.35     0.25   -0.13  0.19 -0.07
#> Rape         0.72       0.56   0.02       0.50    -0.36   -0.41 -0.46  0.50
#>            Assault UrbanPop  Rape
#> Murder        0.81    -0.11  0.72
#> Population    0.41     0.57  0.56
#> Income        0.28     0.09  0.02
#> Illiteracy    0.51    -0.35  0.50
#> Life Exp     -0.60     0.25 -0.36
#> HS Grad      -0.37    -0.13 -0.41
#> Frost        -0.28     0.19 -0.46
#> Area          0.54    -0.07  0.50
#> Assault       1.00     0.14  0.69
#> UrbanPop      0.14     1.00  0.24
#> Rape          0.69     0.24  1.00

結果視覺化

使用 corrplot 來繪製相關圖 ( 參考資料 )

# install.packages("corrplot")
library(corrplot)
#> corrplot 0.84 loaded
corrplot(result, method="color",  
         type="upper", order="hclust", 
         addCoef.col = "black", # Add coefficient of correlation
         tl.col="black", tl.srt=45, #Text label color and rotation
         # hide correlation coefficient on the principal diagonal
         diag=FALSE 
         )

由視覺化的結果我們可以更清楚知道,謀殺犯罪和突襲犯罪的逮捕率( corr. = .81 ) 和文盲 ( corr. = .80 ) 比例呈高度相關 ,與預期壽命 ( corr. = - .74 ) 、中學教育人口數 ( corr. = -. 59 ) 及平均低溫天數 ( corr. = - .53 ) 有中度負相關,與州人口 ( corr. = - .11 ) 和平均收入 ( corr. = - .1 ) 較無相關。

由此可推論,謀殺犯罪可能較容易發生暴力事件頻繁的地區,這些地區的市民可能教育程度較低,文盲比例較高,平均壽命較年輕,天氣較為炎熱的低緯度州區可能性較高。然而,謀殺犯罪的發生在全美都可能發生,與各地區人口數和平均收入較無相關。