pacman::p_load(tibble, Ecdat, dplyr, car, mlmRev, tidyr, ggplot2)
EX06
library(MASS)
dta_06 <- merge(rownames_to_column(mammals), rownames_to_column(Animals), all = TRUE)
duplicated(dta_06)
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [12] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [23] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [34] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [45] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [56] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [67] FALSE
dim (dta_06)
## [1] 67 3
EX07
dta_07 <- Caschool %>%
mutate(ratio = enrltot/teachers,
Reading = cut(readscr, breaks = quantile(readscr, probs = c(0, .33, .67, 1)), label = c("L", "M", "H"), ordered = T))
library(lattice)
xyplot(readscr ~ ratio | Reading, data = dta_07,
type = c("p", "g", "r"), layout = c(3, 1),
xlab = "Student-Teacher Ratio",
ylab = "Reading Score")

EX08
head(Prestige)
## education income women prestige census type
## gov.administrators 13.11 12351 11.16 68.8 1113 prof
## general.managers 12.26 25879 4.02 69.1 1130 prof
## accountants 12.77 9271 15.70 63.4 1171 prof
## purchasing.officers 11.42 8865 9.11 56.8 1175 prof
## chemists 14.62 8403 11.68 73.5 2111 prof
## physicists 15.64 11030 5.13 77.6 2113 prof
str(Prestige)
## 'data.frame': 102 obs. of 6 variables:
## $ education: num 13.1 12.3 12.8 11.4 14.6 ...
## $ income : int 12351 25879 9271 8865 8403 11030 8258 14163 11377 11023 ...
## $ women : num 11.16 4.02 15.7 9.11 11.68 ...
## $ prestige : num 68.8 69.1 63.4 56.8 73.5 77.6 72.6 78.1 73.1 68.8 ...
## $ census : int 1113 1130 1171 1175 2111 2113 2133 2141 2143 2153 ...
## $ type : Factor w/ 3 levels "bc","prof","wc": 2 2 2 2 2 2 2 2 2 2 ...
dta_08.1 <- Prestige %>%
group_by(type) %>%
summarize(m = median(prestige, na.rm = TRUE)); dta_08.1
## # A tibble: 4 x 2
## type m
## <fct> <dbl>
## 1 bc 35.9
## 2 prof 68.4
## 3 wc 41.5
## 4 <NA> 35.0
dta_08.2 <- Prestige %>%
na.omit %>%
group_by(type) %>%
mutate(m = median(prestige),
PrestigeLevel = memisc::cases("High" = prestige >= m,
"Low" = prestige < m))
xyplot(income ~ education |type,
group = PrestigeLevel,
data = dta_08.2,
type = c("p", "g", "r"),
layout = c(3, 1),
auto.key = list(columns = 2),
xlab = "Average education of occupational incumbents in 1971",
ylab = "Average income of incumbents in 1971")

EX09
dta_09 <- Hsb82
head(dta_09)
## school minrty sx ses mAch meanses sector cses
## 1 1224 No Female -1.528 5.876 -0.434383 Public -1.09361702
## 2 1224 No Female -0.588 19.708 -0.434383 Public -0.15361702
## 3 1224 No Male -0.528 20.349 -0.434383 Public -0.09361702
## 4 1224 No Male -0.668 8.781 -0.434383 Public -0.23361702
## 5 1224 No Male -0.158 17.898 -0.434383 Public 0.27638298
## 6 1224 No Male 0.022 4.583 -0.434383 Public 0.45638298
dta_09 <- Hsb82 %>%
group_by(sector,school) %>%
summarise(m = mean(mAch, na.rm = TRUE),
s = sd(mAch, na.rm = TRUE),
n = n(),
se = s/sqrt(n)) %>%
mutate(lower.ci = m-2*se, upper.ci = m+2*se)
head(dta_09)
## # A tibble: 6 x 8
## # Groups: sector [1]
## sector school m s n se lower.ci upper.ci
## <fct> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 Public 8367 4.55 4.43 14 1.18 2.19 6.92
## 2 Public 8854 4.24 5.41 32 0.956 2.33 6.15
## 3 Public 4458 5.81 4.48 48 0.646 4.52 7.10
## 4 Public 5762 4.32 4.99 37 0.821 2.68 5.97
## 5 Public 6990 5.98 5.31 53 0.729 4.52 7.44
## 6 Public 5815 7.27 5.59 25 1.12 5.04 9.51
ggplot(dta_09, aes(x = school, y = m)) +
geom_point() +
geom_errorbar(aes(ymax = upper.ci, ymin = lower.ci))+
coord_flip()+
facet_wrap(~sector)+
labs(x = "School",y = "Math Mean Score by School")
