library(tidyverse) # install.packages("tidyverse")
library(googlesheets4) # install.packages("googlesheets4")
<- read_sheet("https://docs.google.com/spreadsheets/d/1olSCB0OeuG1Ysqbj-0SYkZnskJkTNhi0BWI8_sONWe0/edit#gid=1481701584", sheet = 1, n_max = 21)
start_1 <- read_sheet("https://docs.google.com/spreadsheets/d/1olSCB0OeuG1Ysqbj-0SYkZnskJkTNhi0BWI8_sONWe0/edit#gid=1481701584", sheet = 2, n_max = 17)
start_2 <- read_sheet("https://docs.google.com/spreadsheets/d/1olSCB0OeuG1Ysqbj-0SYkZnskJkTNhi0BWI8_sONWe0/edit#gid=1481701584", sheet = 3, n_max = 18)
start_3
<- read_sheet("https://docs.google.com/spreadsheets/d/1UAXIhQFD_JYTWKuC9mZrLGmfBCNYRpcpkmIkZIrheIM/edit#gid=0")
pseudonyms
<- read_sheet("https://docs.google.com/spreadsheets/d/1RIBfcVUh5B0wA_jzGHVbPlSezVJWcuCekqWa2zSgnqw/edit#gid=429607552", sheet = 1, n_max = 24)
end_1 <- read_sheet("https://docs.google.com/spreadsheets/d/1RIBfcVUh5B0wA_jzGHVbPlSezVJWcuCekqWa2zSgnqw/edit#gid=429607552", sheet = 2, n_max = 25)
end_2 <- read_sheet("https://docs.google.com/spreadsheets/d/1RIBfcVUh5B0wA_jzGHVbPlSezVJWcuCekqWa2zSgnqw/edit#gid=429607552", sheet = 3, n_max = 21)
end_3
<- start_1 %>% janitor::clean_names()
start_1 <- start_2 %>% janitor::clean_names()
start_2 <- start_3 %>% janitor::clean_names()
start_3
<- end_1 %>% janitor::clean_names()
end_1 <- end_2 %>% janitor::clean_names()
end_2 <- end_3 %>% janitor::clean_names() end_3
GoGo Camp #1 Assessment Analysis
This is our analysis for camp #1.
We have two over-arching goals that would correspond to different analyses:
HIGHEST LEVEL GOAL -
Leah works on framing, Cody works on collecting, Josh works on visualizing, with achieving this goal top of mind:
- Understand the response patterns to gauge how well the items are working in terms of our goal of understanding youth learning:
- Descriptives, in aggregate, pre-post:
- Recode the data
- Have clear labels for what the different response options mean
- Keep the same scale, but have clear labels
- Understand changes in learning that can be attributed to the camp
- In aggregate (i.e., sum or mean or other summary statistic), pre-post, may want to share some measure of variation (SD, SE, individual student data) around the aggregate statistic
pseudonyms (not printed)
<- start_1 %>% rename(names = to_start_please_enter_your_first_and_last_name_below)
start_1
<- start_1 %>% mutate(names = tools::toTitleCase(names))
start_1
<- start_1 %>%
start_1 mutate(names = recode(names,
!!!pseudonyms
))
Campers (n’s at diff. time points)
pre - 1 - 2 - 3
post - 1 - 2 - 3
Start of Camp Descriptives
Framing
#| fig-cap: "Start of camp, framing"
<- start_1 %>%
start_1 mutate(when_was_the_pokemon_game_first_created = recode(when_was_the_pokemon_game_first_created,
"I could use or collect a data set to answer this question." = -1,
"I could answer the question without data." = 1,
"I'm not sure." = 0,
.default = 0
))
<- start_1 %>%
start_1 mutate(what_do_kids_learn_by_playing_pokemon_games = recode(what_do_kids_learn_by_playing_pokemon_games,
"I could use or collect a data set to answer this question." = 1,
"I could answer the question without data." = -1,
"I'm not sure." = 1,
.default = 0
))
<- start_1 %>%
start_1 mutate(how_has_the_price_of_the_holographic_charizard_card_changed_since_it_first_came_out = recode(how_has_the_price_of_the_holographic_charizard_card_changed_since_it_first_came_out,
"I could use or collect a data set to answer this question." = 1,
"I could answer the question without data." = -1,
"I'm not sure." = 1,
.default = 0
))
<- start_1 %>%
start_1 mutate(is_pikachu_the_most_popular_pokemon = recode(is_pikachu_the_most_popular_pokemon,
"I could use or collect a data set to answer this question." = 1,
"I could answer the question without data." = -1,
"I'm not sure." = 1,
.default = 0
))
%>% select(when_was_the_pokemon_game_first_created:is_pikachu_the_most_popular_pokemon) %>%
start_1 gather(key, val) %>%
ggplot(aes(x = val)) +
geom_histogram() +
facet_wrap(~key, nrow = 4) +
theme_minimal() +
labs(subtitle = "1 = I could use data; 0 = not sure; -1 = I could not use data")
Collecting
#| fig-cap: "Start of camp, collecting"
#|
%>%
start_2 select(approach_1_if_anyone_gets_sick_its_probably_not_safe:approach_4_place_an_air_quality_sensor_in_each_classroom) %>%
select(-approach_2_ask_the_first_200_students_who_arrive_at_school_if_anything_is_bothering_them) %>%
gather(key, val) %>%
mutate(key = str_sub(key, start = 1, end = 10)) %>%
mutate(key = recode(key,
"approach_1" = "anyone sick",
"approach_3" = "front door",
"approach_4" = "every class"
%>%
)) ggplot(aes(x = key, y = val, fill = val)) +
geom_col(position = "dodge") +
scale_fill_viridis_d("") +
theme_minimal()
Visualizing
#| fig-cap: "Start of camp, visualizing"
%>%
start_3 select(table = how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_table_above_4,
bad_area = how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_chart_above_5,
bar = how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_chart_above_6) %>%
mutate(bad_area = recode(bad_area,
"1" = 5,
"2" = 5,
"3" = 3,
"4" = 2,
"5" = 1)) %>%
gather(key, val) %>%
ggplot(aes(x = val, fill = key)) +
geom_histogram() +
facet_wrap(~key) +
theme_minimal() +
scale_fill_viridis_d() +
theme(legend.position = "none") +
labs(subtitle = "Scale is from 1 (very hard) to 5 (very easy)",
caption = "The first pane, bad_area is reverse-coded, such that the values of 5 were originally 'very hard', and 1 were 'very easy'")
End of Camp Descriptives
Framing
#| fig-cap: "End of camp, framing"
<- end_1 %>%
end_1 slice(-c(1:5))
<- end_1 %>% rename(names = to_start_please_enter_your_first_and_last_name_below)
end_1
<- end_1 %>% mutate(names = tools::toTitleCase(names))
end_1
<- end_1 %>%
end_1 mutate(names = recode(names,
!!!pseudonyms
))
<- end_1 %>% select(names, how_many_points_did_each_player_score_in_a_typical_game, who_is_the_team_mascot, which_player_was_the_best_defender_this_season) %>%
end_1 mutate(how_many_points_did_each_player_score_in_a_typical_game = recode(how_many_points_did_each_player_score_in_a_typical_game,
"I could use data to answer this question." = 1,
"I could answer the question without data." = -1,
"I'm not sure." = 0,
.default = 0
),who_is_the_team_mascot = recode(who_is_the_team_mascot,
"I could use data to answer this question." = -1,
"I could answer the question without data." = 1,
"I'm not sure." = 0,
.default = 0
),which_player_was_the_best_defender_this_season = recode(which_player_was_the_best_defender_this_season,
"I could use data to answer this question." = 1,
"I could answer the question without data." = -1,
"I'm not sure." = 0,
.default = 0
))
%>%
end_1 select(-names) %>%
gather(key, val) %>%
ggplot(aes(x = val)) +
geom_histogram() +
facet_wrap(~key, nrow = 4) +
theme_minimal()
Collecting
#| fig-cap: "End of camp, collecting"
<- end_2 %>%
end_2 slice(-c(1:6))
names(end_2)[7:9] <- str_c("q", 1:3)
# Example list
<- list(1, 2, NULL, 4, 5)
lst
# Replace NULL with NA
$q2 <- lapply(end_2$q2, function(x) if (is.null(x)) NA else x)
end_2$q3 <- lapply(end_2$q3, function(x) if (is.null(x)) NA else x)
end_2
$q1 <- unlist(end_2$q1)
end_2$q2 <- unlist(end_2$q2)
end_2$q3 <- unlist(end_2$q3)
end_2
%>%
end_2 select(q1:q3) %>%
rename(anyone = q1, front_door = q2, each_class = q3) %>%
mutate_all(str_sub, end = 2) %>%
mutate_all(as.numeric) %>%
mutate(anyone = recode(anyone,
"1" = 3,
"3" = 1)) %>%
gather(key, val) %>%
ggplot(aes(x = val)) +
geom_histogram() +
facet_wrap(~key, nrow = 4) +
theme_minimal() +
labs(caption = "1 = worst, 3 = best; 'anyone' reverse coded")
Visualizing
#| fig-cap: "End of camp, visualizing"
%>%
end_3 select(table = how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_table_above,
bad_area = how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_chart_above_4,
bar = how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_chart_above_5) %>%
mutate(bad_area = recode(bad_area,
"1" = 5,
"2" = 5,
"3" = 3,
"4" = 2,
"5" = 1)) %>%
gather(key, val) %>%
ggplot(aes(x = val, fill = key)) +
geom_histogram() +
facet_wrap(~key) +
theme_minimal() +
scale_fill_viridis_d() +
theme(legend.position = "none") +
labs(subtitle = "Scale is from 1 (very hard) to 5 (very easy)",
caption = "The first pane, bad_area is reverse-coded, such that the values of 5 were originally 'very hard', and 1 were 'very easy'")
Pre-Post
Framing
<- start_1 %>% select(names, when_was_the_pokemon_game_first_created:is_pikachu_the_most_popular_pokemon) %>%
start_1_means gather(key, val, -names) %>%
group_by(names) %>%
summarize(mean_score_start = mean(val, na.rm = TRUE))
<- end_1 %>%
end_1_means gather(key, val, -names) %>%
group_by(names) %>%
summarize(mean_score_end = mean(val, na.rm = TRUE))
%>%
start_1_means left_join(end_1_means) %>%
gather(key, val, -names) %>%
mutate(key = recode(key,
"mean_score_start" = "beginning",
"mean_score_end" = "end")) %>%
ggplot(aes(x = key, y = val, group = names, color = names)) +
geom_point() +
geom_line() +
theme_minimal() +
facet_wrap(~names)
%>%
start_1_means left_join(end_1_means) %>%
gather(key, val, -names) %>%
mutate(key = recode(key,
"mean_score_start" = 1,
"mean_score_end" = 2)) %>%
ggplot(aes(x = key, y = val)) +
geom_smooth(method = "lm", se = FALSE) +
geom_point() +
theme_minimal() +
ylab("Mean Score (-1 - 1)")
Gathering (not examined)
<- start_2 %>% rename(names = please_enter_your_name_or_nickname)
start_2
<- start_2 %>% mutate(names = tools::toTitleCase(names)) start_2
<- end_2 %>% rename(names = please_enter_your_name_or_nickname)
end_2
<- end_2 %>% mutate(names = tools::toTitleCase(names)) end_2
<- start_2 %>%
start_2 mutate(names = recode(names,
!!!pseudonyms_two
))
<- end_2 %>%
end_2 mutate(names = recode(names,
!!!pseudonyms_two
))
Visualizing
<- start_3 %>% select(names = please_enter_your_name_or_nickname,
start_3_sub
how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_table_above_3,
how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_table_above_4,
how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_chart_above_5,
how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_chart_above_6)
# Create pseudonyms
<- start_3_sub %>%
start_3_sub mutate(pseudonym = case_when(
== "Colin Chen" ~ "Colin",
names == "Ariana" ~ "Ariana Rojas",
names TRUE ~ names
))
<- end_3 %>% select(names = please_enter_your_name_or_nickname,
end_3_sub
how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_table_above,
how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_chart_above_4,
how_hard_would_it_be_to_find_the_month_with_the_most_birthdays_using_the_chart_above_5)
# start_3_sub$names %>% clipr::write_clip()
# end_3_sub$names %>% clipr::write_clip()