Skip to content

Course Progressions 2015_2016.1

Adam VanIwaarden edited this page Aug 24, 2016 · 1 revision

Fall 2015 Course Progressions and Analysis Configurations

After the original PARCC data submission was cleaned and prepared here, preliminary analyses were conducted to identify the course progressions with a minimum of 1,000 students. Once the course progressions were identified, they are specified explicitly in SGP analysis configuration code.

Identify Course Progressions

In the source code below, the prepared data are analyzed with the courseProgressionSGP function, which produces a R list object that contains information about the number of students that have a specific course/test taking progression within a given content area domain (e.g. all Mathematics related tests/courses). The code shows how the data was subsetted, analyzed and the results examined to identify the feasible progressions.

The actual R code script is available here.

################################################################################
###                                                                          ###
###         Identify Spring 2015 to Fall 2015 Progressions for PARCC         ###
###                                                                          ###
################################################################################

library(SGP)
library(plyr)
library(data.table)
library(RSQLite)
library(data.table)
# source('./PARCC/courseProgressionSGP.R', chdir = TRUE)

parcc.db <- "./PARCC/Data/PARCC_Data_LONG.sqlite"
PARCC_Data_LONG <- rbindlist(list(
			dbGetQuery(dbConnect(SQLite(), dbname = parcc.db), "select ID, YEAR, CONTENT_AREA, GRADE, VALID_CASE from PARCC_Data_LONG_2015_2"),
			dbGetQuery(dbConnect(SQLite(), dbname = parcc.db), "select ID, YEAR, CONTENT_AREA, GRADE, VALID_CASE from PARCC_Data_LONG_2016_1")))

PARCC_Data_LONG <- PARCC_Data_LONG[grep("_SS", CONTENT_AREA, invert =TRUE),]

###  Get subset of Fall 2015 and Spring 2015 from those IDs
ids <- unique(PARCC_Data_LONG[YEAR=="2015_2016.1"]$ID)
FALL_Data_LONG <- PARCC_Data_LONG[ID %in% ids,]

###  Subset by content area

PARCC_MATH<- FALL_Data_LONG[!CONTENT_AREA %in% "ELA"]
table(PARCC_MATH$CONTENT_AREA, PARCC_MATH$YEAR)

PARCC_ELA <- FALL_Data_LONG[CONTENT_AREA %in% "ELA"]
table(PARCC_ELA$GRADE)

math.prog <- courseProgressionSGP(PARCC_MATH, lag.direction="BACKWARD", year='2015_2016.1')
ela.prog <- courseProgressionSGP(PARCC_ELA, lag.direction="BACKWARD", year='2015_2016.1')


####
####     Mathematics
####

names(math.prog$BACKWARD[['2015_2016.1']])

math.prog$BACKWARD[['2015_2016.1']]$ALGEBRA_I.CT[COUNT>100]
sum(math.prog$BACKWARD[['2015_2016.1']]$ALGEBRA_I.CT[CONTENT_AREA_by_GRADE_PRIOR_YEAR.1=="MATHEMATICS.08"]$COUNT) # 3132
sum(math.prog$BACKWARD[['2015_2016.1']]$ALGEBRA_I.CT[CONTENT_AREA_by_GRADE_PRIOR_YEAR.1=="GEOMETRY.CT"]$COUNT) # 73
sum(math.prog$BACKWARD[['2015_2016.1']]$ALGEBRA_I.CT[CONTENT_AREA_by_GRADE_PRIOR_YEAR.1=="ALGEBRA_I.CT"]$COUNT) # 905 repeaters


math.prog$BACKWARD[['2015_2016.1']]$GEOMETRY.CT[COUNT>100]
sum(math.prog$BACKWARD[['2015_2016.1']]$GEOMETRY.CT[CONTENT_AREA_by_GRADE_PRIOR_YEAR.1=="ALGEBRA_I.CT"]$COUNT)  # 2615
sum(math.prog$BACKWARD[['2015_2016.1']]$GEOMETRY.CT[CONTENT_AREA_by_GRADE_PRIOR_YEAR.1=="ALGEBRA_II.CT"]$COUNT) # 582
sum(math.prog$BACKWARD[['2015_2016.1']]$GEOMETRY.CT[CONTENT_AREA_by_GRADE_PRIOR_YEAR.1=="GEOMETRY.CT"]$COUNT)   # 1012 (repeaters)


math.prog$BACKWARD[['2015_2016.1']]$ALGEBRA_II.CT[COUNT>100]
sum(math.prog$BACKWARD[['2015_2016.1']]$ALGEBRA_II.CT[CONTENT_AREA_by_GRADE_PRIOR_YEAR.1=="GEOMETRY.CT"]$COUNT) # 1884
sum(math.prog$BACKWARD[['2015_2016.1']]$ALGEBRA_II.CT[CONTENT_AREA_by_GRADE_PRIOR_YEAR.1=="ALGEBRA_I.CT"]$COUNT) # 699
sum(math.prog$BACKWARD[['2015_2016.1']]$ALGEBRA_II.CT[CONTENT_AREA_by_GRADE_PRIOR_YEAR.1=="ALGEBRA_II.CT"]$COUNT) # 4877 (repeaters)

math.prog$BACKWARD[['2015_2016.2']]$INTEGRATED_MATH_2.CT[COUNT>100]
sum(math.prog$BACKWARD[['2015_2016.2']]$INTEGRATED_MATH_3.CT[CONTENT_AREA_by_GRADE_PRIOR_YEAR.2=="GEOMETRY.CT"]$COUNT) # 

###
###     ELA
###

names(ela.prog$BACKWARD[['2015_2016.1']])

ela.prog$BACKWARD[['2015_2016.1']]$ELA.09
ela.prog$BACKWARD[['2015_2016.1']]$ELA.10
ela.prog$BACKWARD[['2015_2016.1']]$ELA.11

Specify Analysis Configurations in SGP Config Scripts

Custom configurations are always required to conduct end-of-course test (EOCT) SGP analyses (i.e. when heterogeneous content areas are required in an analysis). Although not necessarily required, configurations are also used for end-of-grade (EOG) SGP analyses as well. Although the SGP functions can automatically produce the required configuration information for analyses with homogeneous content areas, the use of the explicit code allows for the EOCT and EOG analyses to be run with a single call to the analyzeSGP function (or the analyzeSGP step of wrapper functions such as updateSGP).

The configurations associated with the Fall 2016 SGP analyses are located in the PARCC Github repository folder named SGP_CONFIG/2015_2016.1.

The configurations are broken up into four separate R scripts:

Each configuration specifies a set of parameters that defines the norm group of students to be examined. Every potential norm group is defined by, at a minimum, the progressions of content area, academic year and grade-level. Each configuration used for the PARCC EOG analyses contain the first three elements. The EOCT analyses also contain the fourth and Fifth elements:

  • sgp.content.areas: A progression of values that specifies the content areas to be looked at and their order.
  • sgp.panel.years: The progression of the years associated with the content area progression (sgp.content.areas) provided in the configuration, potentially allowing for skipped years, repeated years, etc.
  • sgp.grade.sequences: The grade progression associated with the content area and year progressions provided in the configuration. 'EOCT' stands for 'End Of Course Test'. The use of the generic 'EOCT' allows for secondary students to be compared based on the pattern of course taking rather than being dependent upon grade-level/class-designation.
  • sgp.projection.grade.sequences: This element is used to identify the grade sequence that will be used to produce straight and/or lagged student growth projections. It can, somewhat counter-intuitively, be left out or set to NULL, in which case projections will be produced and the package functions will populate the grade sequence to use based on the values provided in the sgp.grade.sequences element. Alternatively, when set to "NO_PROJECTIONS", no projections will be produced. For EOCT analyses, only configurations that correspond to the canonical course progressions can produce student growth projections. The canonical progressions are codified and stored in the SGP package/SGPstateData object here: SGPstateData[["PARCC"]][["SGP_Configuration"]][["content_area.projection.sequence"]].
  • sgp.norm.group.preference: Because a student can potentially be included in more than one analysis/configuration, multiple SGPs will be produced for some students and a system is required to identify the preferred SGP that will be matched with the student in the combineSGP step. This argument provides a ranking that specifies how preferable SGPs produced from the analysis in question is relative to other possible analyses. Lower numbers correspond with higher preference.

Note that sgp.content.areas, sgp.panel.years, and sgp.grade.sequences elements are all character strings, and their values correspond to levels found in the CONTENT_AREA, YEAR, and GRADE variables in the PARCC data respectively.

As an example, here is the complete Algebra 1 configuration code used to defined the Fall 2015 SGP analyses:

#####################################################################################
###                                                                               ###
###              SGP Configurations for Fall 2015 EOCT Math subjects              ###
###                                                                               ###
#####################################################################################

ALGEBRA_I.2015_2016.1.config <- list(
	ALGEBRA_I.2015_2016.1 = list(
		sgp.content.areas=c("MATHEMATICS", "ALGEBRA_I"),
		sgp.panel.years=c("2014_2015.2", "2015_2016.1"),
		sgp.grade.sequences=list(c("8", "EOCT")), # 9th grade
		sgp.projection.grade.sequences=list("NO_PROJECTIONS"))
)

Clone this wiki locally