tests/testthat/test_school_growth_percentile.R

context("School Growth Percentile")

#seed

data(ex_CombinedAssessmentResults)
data(ex_CombinedStudentsBySchool)
cdf<-ex_CombinedAssessmentResults %>%
  inner_join(ex_CombinedStudentsBySchool, by=c("StudentID",
                                               "TermName")) %>%
  rename(schoolname=SchoolName.x)

names(cdf)<-tolower(names(cdf))

cdf_fall <- cdf %>% filter(grepl("Fall", termname))


#cdf_fall %>% mutate(equated_rit=cps_equate(testritscore, measurementscale, grade))

cdf_fall_filtered <- cdf_fall %>% filter(measurementscale %in%
                                           c("Reading", "Mathematics"))

cdf_filtered <-  cdf %>% filter(measurementscale %in%
                                       c("Reading", "Mathematics"),
                                     termname %in% c("Spring 2012-2013", "Spring 2013-2014"))

cdf_fall_filtered_equate<-cdf_fall_filtered %>%
  select(studentid, measurementscale, testritscore, grade)

school_growth <- school_growth_percentile(cdf_filtered)


school_growth_equated <- school_growth_percentile(cdf_filtered,
                                                  fall_equate_scores = cdf_fall_filtered_equate)

test_that("school_growth_percentile fails gracefully", {

  expect_error(school_growth_percentile(cdf_fall_filtered),
                "You must have exactly two test terms")
  expect_error(school_growth_percentile(cdf),
               "Your data contains subjects besides Reading and Mathematics.")

  expect_warning(school_growth_percentile(cdf_filtered),
               "our data currently has 202 student-subject pairs")

})

test_that("school_growth_percentiile produces proper output", {
  expect_equal(length(school_growth), 4)
  expect_equal(names(school_growth), c("original_data", "student_level", "grade_level", "school_level"))
  expect_equal(nrow(school_growth$student_level), 1345)
  expect_equal(nrow(school_growth$grade_level), 12)
  expect_equal(nrow(school_growth$school_level), 6)
  expect_equal(round(mean(school_growth$grade_level$growth_pctl),4),
               0.5692)

  expect_equal(round(mean(school_growth$school_level$growth_pctl),3),
               0.527)
})

test_that("school_growth_percentile() figures proper school level percentiles" ,{
  est_pctls<-school_growth$grade_level %>%
    ungroup %>%
    select(measurementscale,
           grade_end,
           avg_rit_start,
           avg_rit_end,
           growth_pctl) %>%
    arrange(desc(measurementscale),grade_end, avg_rit_start)

  # reading
  expect_equal(as.numeric(est_pctls[1,"growth_pctl"]), 0.94)
  expect_equal(as.numeric(est_pctls[2,"growth_pctl"]), 0.57)
  expect_equal(as.numeric(est_pctls[3,"growth_pctl"]), 0.08)
  expect_equal(as.numeric(est_pctls[4,"growth_pctl"]), 0.67)
  expect_equal(as.numeric(est_pctls[5,"growth_pctl"]), 0.72)
  expect_equal(as.numeric(est_pctls[6,"growth_pctl"]), 0.58)

  # math
  expect_equal(as.numeric(est_pctls[7,"growth_pctl"]), 0.54)
  expect_equal(as.numeric(est_pctls[8,"growth_pctl"]), 0.33)
  expect_equal(as.numeric(est_pctls[9,"growth_pctl"]), 0.66)
  expect_equal(as.numeric(est_pctls[10,"growth_pctl"]), 0.31)
  expect_equal(as.numeric(est_pctls[11,"growth_pctl"]), 0.69)
  expect_equal(as.numeric(est_pctls[12,"growth_pctl"]), 0.74)
})

test_that("collapse_grade_to_school() collapses everthing just fine" ,{

  #multi grade schools
  est_pctls<-school_growth$grade_level
  collapsed <- collapse_grade_to_school(est_pctls) %>%
    arrange(grades_served, school, measurementscale)

  # single grade schools
  est_pctls_single_grade<-school_growth$grade_level %>% filter(grade_end==5)
  collapsed_single_grade <- collapse_grade_to_school(est_pctls_single_grade) %>%
    arrange(grades_served, school, measurementscale)


  expect_equal(nrow(collapsed), 6)
  expect_equal(ncol(collapsed), 13)
  # reading
  expect_equal(as.numeric(collapsed[1,"growth_pctl"]), 0.58)
  expect_equal(as.numeric(collapsed[2,"growth_pctl"]), 0.85)
  expect_equal(as.numeric(collapsed[3,"growth_pctl"]), 0.33)
  expect_equal(as.numeric(collapsed[4,"growth_pctl"]), 0.08)
  expect_equal(as.numeric(collapsed[5,"growth_pctl"]), 0.66)
  expect_equal(as.numeric(collapsed[6,"growth_pctl"]), 0.66)


  # single grade schools
  expect_equal(as.numeric(collapsed_single_grade[[1,"growth_pctl"]]), 0.33)
  expect_equal(as.numeric(collapsed_single_grade[[2,"growth_pctl"]]), 0.08)
  expect_equal(as.numeric(collapsed_single_grade[[3,"growth_pctl"]]), 0.66)
  expect_equal(as.numeric(collapsed_single_grade[[4,"growth_pctl"]]), 0.57)

})

test_that("school_growth_equated works when passing fall scores", {
  est_pctls<-school_growth_equated$grade_level %>%
    ungroup %>%
    select(measurementscale,
           grade_end,
           avg_rit_start,
           avg_rit_end,
           growth_pctl) %>%
    arrange(desc(measurementscale),grade_end, avg_rit_start)

  expect_equal(sum(school_growth_equated$student_level$equated), 204)

  # reading
  expect_equal(as.numeric(est_pctls[1,"growth_pctl"]), 0.94)
  expect_equal(as.numeric(est_pctls[2,"growth_pctl"]), 0.57)
  expect_equal(as.numeric(est_pctls[3,"growth_pctl"]), 0.08)
  expect_equal(as.numeric(est_pctls[4,"growth_pctl"]), 0.46)
  expect_equal(as.numeric(est_pctls[5,"growth_pctl"]), 0.72)
  expect_equal(as.numeric(est_pctls[6,"growth_pctl"]), 0.58)

  # math
  expect_equal(as.numeric(est_pctls[7,"growth_pctl"]), 0.54)
  expect_equal(as.numeric(est_pctls[8,"growth_pctl"]), 0.33)
  expect_equal(as.numeric(est_pctls[9,"growth_pctl"]), 0.66)
  expect_equal(as.numeric(est_pctls[10,"growth_pctl"]), 0.42)
  expect_equal(as.numeric(est_pctls[11,"growth_pctl"]), 0.69)
  expect_equal(as.numeric(est_pctls[12,"growth_pctl"]), 0.74)

})
chrishaid/sqrpr documentation built on Dec. 16, 2019, 3:32 a.m.