install.packages("https://cran.rstudio.com/bin/windows/contrib/4.1/faraway_1.0.7.zip", repos = NULL)
## 將程式套件安載入 'C:/Users/user/Documents/R/win-library/4.1'
## (因為 'lib' 沒有被指定)
## package 'faraway' successfully unpacked and MD5 sums checked
library(faraway)
## Warning: 套件 'faraway' 是用 R 版本 4.1.3 來建造的
data(jsp)
#先檢視資料
str(jsp)
## 'data.frame': 3236 obs. of 9 variables:
## $ school : Factor w/ 49 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ class : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
## $ gender : Factor w/ 2 levels "boy","girl": 2 2 2 1 1 1 1 1 1 1 ...
## $ social : Factor w/ 9 levels "1","2","3","4",..: 9 9 9 2 2 2 2 2 9 9 ...
## $ raven : num 23 23 23 15 15 22 22 22 14 14 ...
## $ id : Factor w/ 1192 levels "1","2","3","4",..: 1 1 1 2 2 3 3 3 4 4 ...
## $ english: num 72 80 39 7 17 88 89 83 12 25 ...
## $ math : num 23 24 23 14 11 36 32 39 24 26 ...
## $ year : num 0 1 2 0 1 0 1 2 0 1 ...
head(jsp)
## school class gender social raven id english math year
## 1 1 1 girl 9 23 1 72 23 0
## 2 1 1 girl 9 23 1 80 24 1
## 3 1 1 girl 9 23 1 39 23 2
## 4 1 1 boy 2 15 2 7 14 0
## 5 1 1 boy 2 15 2 17 11 1
## 6 1 1 boy 2 22 3 88 36 0
tail(jsp)
## school class gender social raven id english math year
## 3231 50 1 boy 6 21 1400 19 16 0
## 3232 50 1 boy 6 21 1400 30 19 1
## 3233 50 1 girl 4 18 1401 25 20 0
## 3234 50 1 girl 4 18 1401 26 16 1
## 3235 50 1 girl 6 21 1402 40 15 0
## 3236 50 1 girl 6 21 1402 42 15 1
summary(jsp)
## school class gender social raven
## 48 : 206 1:1949 boy :1551 4 :1225 Min. : 4.00
## 33 : 131 2: 987 girl:1685 9 : 484 1st Qu.:21.00
## 42 : 131 3: 169 2 : 424 Median :25.00
## 31 : 107 4: 131 5 : 288 Mean :25.13
## 47 : 102 3 : 270 3rd Qu.:29.00
## 50 : 101 6 : 221 Max. :36.00
## (Other):2458 (Other): 324
## id english math year
## 1 : 3 Min. : 0.00 Min. : 1.00 Min. :0.0000
## 3 : 3 1st Qu.:31.00 1st Qu.:22.00 1st Qu.:0.0000
## 4 : 3 Median :54.00 Median :28.00 Median :1.0000
## 6 : 3 Mean :52.49 Mean :26.66 Mean :0.9379
## 7 : 3 3rd Qu.:75.00 3rd Qu.:33.00 3rd Qu.:2.0000
## 8 : 3 Max. :98.00 Max. :40.00 Max. :2.0000
## (Other):3218
table(jsp$class, jsp$gender)
##
## boy girl
## 1 944 1005
## 2 484 503
## 3 68 101
## 4 55 76
prop.table(table(jsp$gender))
##
## boy girl
## 0.4792954 0.5207046
aggregate(english ~ raven, data = jsp, FUN = mean)
## raven english
## 1 4 35.00000
## 2 6 17.16667
## 3 10 24.00000
## 4 11 27.41667
## 5 12 35.12500
## 6 13 33.33333
## 7 14 34.89394
## 8 15 37.08219
## 9 16 36.51163
## 10 17 42.82609
## 11 18 40.36923
## 12 19 40.18333
## 13 20 39.52542
## 14 21 46.20548
## 15 22 46.03261
## 16 23 47.31604
## 17 24 50.53081
## 18 25 49.46948
## 19 26 52.30049
## 20 27 58.64865
## 21 28 56.15026
## 22 29 60.83429
## 23 30 57.37748
## 24 31 62.81761
## 25 32 65.72785
## 26 33 62.46237
## 27 34 72.96639
## 28 35 73.06757
## 29 36 78.06383
aggregate(english ~ raven, data = jsp, FUN = sd)
## raven english
## 1 4 18.681542
## 2 6 8.953584
## 3 10 3.316625
## 4 11 18.923090
## 5 12 23.404921
## 6 13 19.246645
## 7 14 23.182307
## 8 15 21.948015
## 9 16 23.727742
## 10 17 20.958612
## 11 18 23.672617
## 12 19 23.236809
## 13 20 21.692376
## 14 21 22.446847
## 15 22 23.965572
## 16 23 21.869694
## 17 24 23.096748
## 18 25 23.851254
## 19 26 24.332746
## 20 27 22.129871
## 21 28 22.052570
## 22 29 22.821420
## 23 30 22.569224
## 24 31 22.595467
## 25 32 20.417193
## 26 33 25.165348
## 27 34 18.286298
## 28 35 17.043322
## 29 36 16.819249
library(lattice)
##
## 載入套件:'lattice'
## 下列物件被遮斷自 'package:faraway':
##
## melanoma
densityplot(~ english, groups = gender, data = jsp, xlab = '英文分數', lty = c(1,2),
plot.points = F, type = "g", main = '性別 (男 = 虛線, 女 = 實線)')
#在英文分數50-100間的機率,女性比男性高 #英文分數0-50間的機率,男性比女性高
boxplot(english ~ gender, jsp, col = "yellow", border = "blue")
#就英文分數的平均數而言,女性比男性高
qq(gender ~ english, data = jsp, type = c('p', 'g'), pch = '.', aspect = 1,
xlab = '英文分數 (男)', ylab = '英文分數 (女)')
#點分佈在斜線之上,表示女性的分數/平均分數是高於男性的
#看看不同class的學生英文平均與數標差
aggregate(english ~ class, data = jsp, FUN = mean)
## class english
## 1 1 52.46947
## 2 2 52.83587
## 3 3 50.75148
## 4 4 52.50382
aggregate(english ~ class, data = jsp, FUN = sd)
## class english
## 1 1 24.65161
## 2 2 24.84980
## 3 3 24.80994
## 4 4 24.63530
##多個類別 #看看不同class學生的資料分數直方圖
histogram(~ english | class, data = jsp, xlab = '英文分數', ylab='機率',
type = 'density', layout = c(4, 1), col = c("#CCCCFF"))
boxplot(english ~ class, jsp, xlab = "class", ylab = "英文分數", frame = F, col = c("#D28EFF", "#99BBFF", "#77DDFF", "#5599FF"))
#就平均數而言,class3的英文分數平均數最低
#看看不同class、不同性別的學生英文平均與標準差
aggregate(english ~ class + gender, data = jsp, FUN = mean)
## class gender english
## 1 1 boy 47.74682
## 2 2 boy 49.38223
## 3 3 boy 44.19118
## 4 4 boy 43.63636
## 5 1 girl 56.90547
## 6 2 girl 56.15905
## 7 3 girl 55.16832
## 8 4 girl 58.92105
aggregate(english ~ class + gender, data = jsp, FUN = sd)
## class gender english
## 1 1 boy 24.90411
## 2 2 boy 25.55837
## 3 3 boy 24.31464
## 4 4 boy 25.59468
## 5 1 girl 23.57724
## 6 2 girl 23.70256
## 7 3 girl 24.26976
## 8 4 girl 21.92944
#平均數標準誤
aggregate(english ~ class + gender, data = jsp, function(x) sd(x)/sqrt(length(x)))
## class gender english
## 1 1 boy 0.8105598
## 2 2 boy 1.1617442
## 3 3 boy 2.9485832
## 4 4 boy 3.4511857
## 5 1 girl 0.7437210
## 6 2 girl 1.0568449
## 7 3 girl 2.4149317
## 8 4 girl 2.5154793
plot(jsp$english, jsp$math, col=blues9, pch = 16, xlab = "英文分數", ylab = "數學分數")
#大致而言,數學分數與英文分數呈正相關
#看看不同class間,英文與數學間的關係是否類似
xyplot(english ~ math | class, data = jsp, xlab = '數學分數', ylab = '英文分數',
type = c("g", "p", "r"), cex = 0.1, layout = c(4, 1))
#在class1,2,3,4,英文分數與數學分數皆呈現正相關