R Markdown

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,英文分數與數學分數皆呈現正相關