##1 將男女生畫在同一張圖上,轉成橫的金字塔圖

#
# histogram pyramids
#

setwd("C:/Users/ncku/Documents")

library(pacman)
## Warning: package 'pacman' was built under R version 3.4.4
p_load(tidyverse)

dta <- read.table("hs0.txt", h = T) %>%
 mutate(female = factor(female, levels(female), 
                 labels = c("Female", "Male")),
        race = factor(race, levels(race), 
               labels = c("Black", "Asian", "Hispanic", 
                          "White")),
        ses = ordered(ses, levels = c("low", "middle", 
                      "high"),
              labels = c("Low", "Middle", "High"))) %>%
 mutate(race = reorder(race, math, median))
## Warning: package 'bindrcpp' was built under R version 3.4.4
str(dta)
## 'data.frame':    200 obs. of  11 variables:
##  $ id     : int  70 121 86 141 172 113 50 11 84 48 ...
##  $ female : Factor w/ 2 levels "Female","Male": 2 1 2 2 2 2 2 2 2 2 ...
##  $ race   : Factor w/ 4 levels "Black","Hispanic",..: 3 3 3 3 3 3 1 2 3 1 ...
##   ..- attr(*, "scores")= num [1:4(1d)] 45 61 47 54
##   .. ..- attr(*, "dimnames")=List of 1
##   .. .. ..$ : chr  "Black" "Asian" "Hispanic" "White"
##  $ ses    : Ord.factor w/ 3 levels "Low"<"Middle"<..: 1 2 3 3 2 2 2 2 2 2 ...
##  $ schtyp : Factor w/ 2 levels "private","public": 2 2 2 2 2 2 2 2 2 2 ...
##  $ prog   : Factor w/ 3 levels "academic","general",..: 2 3 2 3 1 1 2 1 2 1 ...
##  $ read   : int  57 68 44 63 47 44 50 34 63 57 ...
##  $ write  : int  52 59 33 44 52 52 59 46 57 55 ...
##  $ math   : int  41 53 54 47 57 51 42 45 54 52 ...
##  $ science: int  47 63 58 53 53 63 53 39 58 NA ...
##  $ socst  : int  57 61 31 56 61 61 61 36 51 51 ...
bw <- with(dta, IQR(math)/(length(math)^(1/3)))
ggplot() +
 stat_bin(data = subset(dta, female=="Male"), binwidth = bw,
     aes(math, color = "Male", fill = "Male", y = - ..density.. )) +
 stat_bin(data = subset(dta, female == "Female"), binwidth = bw,
     aes(math, color = "Female", fill = "Female", y = ..density.. )) +
 scale_color_manual(values = c("black", "black"),
      guide = guide_legend(title = NULL, direction = "horizontal",
       title.position = "top", reverse = TRUE,
       label.position = "bottom", label.hjust = .5, label.vjust = .5,
       label.theme = element_text(angle = 90) ) ) +
 scale_fill_manual(values = c("White", "gray80"),
      guide = guide_legend(title = NULL, reverse = TRUE,
       direction = "horizontal", title.position = "top",
       label.position = "bottom", label.hjust = .5, label.vjust = .5,
       label.theme = element_text(angle = 90))) +
 scale_x_continuous(limits = c(30, 80), breaks=seq(30, 80, by = 5)) +
 labs(x = "Mathematic score", y = "Density") +
 coord_flip() +
 theme_bw() +
 theme(legend.position=c(.9, .85))

###

##2

dta <- read.table("hs0.txt", header=T)
dta<- dta %>%
  mutate(female = factor(female, levels(female),
  labels = c("Female", "Male")),
  race = factor(race, levels(race),
  labels = c("Black", "Asian", "Hispanic", "White")),
  ses = ordered(ses, levels = c("low", "middle", "high"),
  labels = c("Low", "Middle", "High"))) %>%
  mutate(race = reorder(race, math, median))

m0 <- lm(math ~ female + race + ses, data = dta)

dta_m0 <- ggeffects::ggpredict(m0, terms = c("race", "female", "ses"))
## Warning in checkMatrixPackageVersion(): Package version inconsistency detected.
## TMB was built with Matrix version 1.2.14
## Current Matrix version is 1.2.12
## Please re-install 'TMB' from source using install.packages('TMB', type = 'source') or ask CRAN for a binary version of 'TMB' matching CRAN's 'Matrix' package
plot(dta_m0) + labs(y = "Mean math score", x = "Race") 

##3

dt3 <- read.table("kdt.csv", sep="",header=T)
knitr::kable(dt3)
Test Format Accuracy SE
KDT Picture 93.7 0.9
KDT Word 96.4 0.7
PPT Picture 90.6 1.0
PPT Word 88.9 1.0
ggplot(dt3,aes(Test, Accuracy,fill=Format))+
   coord_cartesian(ylim=c(85,100))+
  geom_bar(stat="identity",position='dodge', colour="black")+
  geom_errorbar(aes(ymin = Accuracy-SE , ymax= Accuracy+SE), width = .2,position=position_dodge(.9))+
  scale_fill_manual(values=c("#CCCCCC","#555555"))