Title: | Student Growth Percentiles & Percentile Growth Trajectories |
---|---|
Description: | An analytic framework for the calculation of norm- and criterion-referenced academic growth estimates using large scale, longitudinal education assessment data as developed in Betebenner (2009) <doi:10.1111/j.1745-3992.2009.00161.x>. |
Authors: | Damian W. Betebenner [aut, cre] , Adam R. Van Iwaarden [aut], Ben Domingue [aut], Yi Shang [aut], Jonathan Weeks [ctb], John Stewart [ctb], Jinnie Choi [ctb], Xin Wei [ctb], Hi Shin Shim [ctb], Xiaoyuan Tan [ctb] (Arizona Department of Education), Carrie Giovannini [ctb] (Arizona Department of Education), Sarah Polasky [ctb] (Arizona State University), Rebecca Gau [ctb] (Arizona Charter School Association), Jeffrey Dean [ctb] (University of Arkansas), William Bonk [ctb] (Colorado Department of Education), Marie Huchton [ctb] (Colorado Department of Education), Allison Timberlake [ctb] (Georgia Department of Education), Qi Qin [ctb] (Georgia Department of Education), Melissa Fincher [ctb] (Georgia Department of Education), Kiran Athota [ctb] (Georgia Department of Education), Travis Allen [ctb] (Georgia Department of Education), Glenn Hirata [ctb] (Hawaii Department of Education), Glenn Nochi [ctb] (Hawaii Department of Education), Joshua Lee [ctb] (Hawaii Department of Education), Ayaka Nukui [ctb] (Idaho Department of Education), Carissa Miller [ctb] (Idaho Department of Education), Matthew Raimondi [ctb] (Elgin Area School District U46 (Illinois)), Wes Bruce [ctb] (Indiana Department of Education), Robert Hochsegang [ctb] (Indiana Department of Education), Tony Moss [ctb] (Kansas State Department of Education), Xuewen Sheng [ctb] (Kansas State Department of Education), Kathy Flanagan [ctb] (Massachusetts Department of Elementary and Secondary Education), Robert Lee [ctb] (Massachusetts Department of Elementary and Secondary Education), Ji Zeng [ctb] (Michigan Department of Education), Steve Viger [ctb] (Michigan Department of Education), Joe DeCastra [ctb] (Mississippi Department of Education), Ken Thompson [ctb] (Mississippi Department of Education), Soo Yeon Cho [ctb] (Missouri Department of Education), Jeff Halsell [ctb] (Clark County School District, Nevada), Selcuk Ozdemir [ctb] (Washoe County School District, Nevada), Roger Silva [ctb] (Nevada Department of Education), Deb Wiswell [ctb] (New Hampshire Department of Education), Katya Levitan-Reiner [ctb] (New Haven Public Schools), Catherine McCaslin [ctb] (New Haven Public Schools), Joshua Marland [ctb] (New York Education Department), W Joshua Rew [ctb] (Oregon Department of Education), Jason Becker [ctb] (Rhode Island Department of Education), Jessica Bailey [ctb] (Rhode Island Department of Education), Ana Karantonis [ctb] (Rhode Island Department of Education), Deborah Jonas [ctb] (Virginia Department of Education), Juan D'Brot [ctb] (West Virginia Department of Education), Nate Hixson [ctb] (West Virginia Department of Education), Deb Came [ctb] (Washington Office of Superintendent of Public Instruction), Ashley Colburn [ctb] (Washington Office of Superintendent of Public Instruction), Nick Hassell [ctb] (Washington Office of Superintendent of Public Instruction), Krissy Johnson [ctb] (Washington Office of Superintendent of Public Instruction), Daniel Bush [ctb] (Wisconsin Department of Education), Justin Meyer [ctb] (Wisconsin Department of Education), Joseph Newton [ctb] (Wisconsin Department of Education), Nick Stroud [ctb] (Wisconsin Department of Education), John Paul [ctb] (Wyoming Department of Education), Michael Flicek [ctb] (Michael Flicek Projects LLC working with Wyoming Department of Education), Phyllis Clay [ctb] (Albuquerque Public Schools), Peter Kinyua [ctb] (Albuquerque Public Schools), Brendan Houng [ctb] (University of Melbourne, Australia, NAPLAN), Leslie Rosale [ctb] (Ministry of Education, Guatemala), Nathan Wall [ctb] (eMetric working with Nevada Department of Education and South Dakota Department of Education), Julia English [ctb] (Massachusetts DESE), Sarah Jo Torgrimson [ctb] (Massachusetts DESE), Narek Sahakyan [ctb] (World Class Instruction and Design (WIDA)) |
Maintainer: | Damian W. Betebenner <[email protected]> |
License: | GPL-3 |
Version: | 2.2-0.6 |
Built: | 2024-10-26 05:20:18 UTC |
Source: | https://github.com/centerforassessment/sgp |
SGP contains classes and functions to calculate student growth percentiles and percentile growth projections/trajectories following methodology found in Betebenner (2008, 2009).
The package contains two primary functions, studentGrowthPercentiles
and studentGrowthProjections
, and numerous higher level functions
that make use of them including: prepareSGP
, analyzeSGP
, combineSGP
, summarizeSGP
, visualizeSGP
and
outputSGP
. These functions are used to calculate and visualize student growth percentiles and percentile growth projections/trajectories for students using large scale,
longitudinal assessment data. These norm- and criterion-referenced growth values are currently used in a number of states for many purposes including diagnostic and accountability.
The functions employ quantile regression (using the quantreg
package) to estimate the conditional density for current achievement using each student's achievement history.
Percentile growth projections/trajectories are calculated using the coefficient matrices derived from the student growth percentile analyses. These quantities
are summarized in a variety of ways to describe student growth. Beginning with version 1.4-0.0, the SGP package also calculate time dependent SGPs (SGPt) and allows for student
growth projections to be calculated across assessment transitions by equating the two tests.
Package: | SGP |
Type: | Package |
Version: | 2.2-0.6 |
Date: | 2024-10-26 |
License: | GPL-3 |
LazyLoad: | yes |
Calculation of student growth percentiles and percentile growth trajectories/projections is typically performed by grade and subject. Data for growth percentile
calculation must be specifically formatted. See sgpData
for an example data set. Batch R syntax for performing analyses across all grades and years is
provided in the examples of the studentGrowthPercentiles
and studentGrowthProjections
using the higher level functions
prepareSGP
, analyzeSGP
, combineSGP
, summarizeSGP
, and visualizeSGP
.
Damian W. Betebenner [email protected], Adam Van Iwaarden [email protected], Ben Domingue [email protected] and Yi Shang [email protected]
Betebenner, D. W. (2008). Toward a normative understanding of student growth. In K. E. Ryan & L. A. Shepard (Eds.), The Future of Test Based Accountability (pp. 155-170). New York: Routledge.
Betebenner, D. W. (2009). Norm- and criterion-referenced student growth. Educational Measurement: Issues and Practice, 28(4):42-51.
Betebenner, D. W. (2012). Growth, standards, and accountability. In G. J. Cizek, Setting Performance Standards: Foundations, Methods & Innovations. 2nd Edition (pp. 439-450). New York: Routledge.
Castellano, K. E. & McCaffrey, D. F. (2017). The Accuracy of Aggregate Student Growth Percentiles as Indicators of Educator Performance. Educational Measurement: Issues and Practice, 36(1):14-27.
Koenker, R. (2005). Quantile regression. Cambridge: Cambridge University Press.
Shang, Y., VanIwaarden, A., & Betebenner, D. W. (2015). Covariate measurement error correction for Student Growth Percentiles using the SIMEX method. Educational Measurement: Issues and Practice, 34(1):4-14.
Utility function to perform sequence of 6 steps going from data preparation, prepareSGP
, SGP data analysis, analyzeSGP
,
data combining, combineSGP
, data summary, summarizeSGP
, data visualization visualizeSGP
and data output
outputSGP
.
abcSGP(sgp_object, state=NULL, steps=c("prepareSGP", "analyzeSGP", "combineSGP", "summarizeSGP", "visualizeSGP", "outputSGP"), years=NULL, content_areas=NULL, grades=NULL, prepareSGP.var.names=NULL, prepareSGP.create.additional.variables=FALSE, prepareSGP.create.achievement.level=TRUE, sgp.percentiles=TRUE, sgp.projections=TRUE, sgp.projections.lagged=TRUE, sgp.percentiles.baseline=TRUE, sgp.projections.baseline=TRUE, sgp.projections.lagged.baseline=TRUE, sgp.use.my.coefficient.matrices=NULL, sgp.minimum.default.panel.years=NULL, sgp.target.scale.scores=FALSE, sgp.target.scale.scores.only=FALSE, sgp.test.cohort.size=NULL, return.sgp.test.results=FALSE, simulate.sgps=TRUE, calculate.simex=NULL, calculate.simex.baseline=NULL, calculate.srs=NULL, calculate.srs.baseline=NULL, goodness.of.fit.print=TRUE, parallel.config=NULL, save.intermediate.results=FALSE, save.old.summaries=FALSE, sgPlot.demo.report=FALSE, sgp.config=NULL, sgp.summaries=NULL, summary.groups=NULL, data_supplementary=NULL, confidence.interval.groups=NULL, plot.types=c("bubblePlot", "studentGrowthPlot", "growthAchievementPlot"), outputSGP.output.type=c("LONG_Data", "LONG_FINAL_YEAR_Data", "WIDE_Data", "INSTRUCTOR_Data"), outputSGP.directory="Data", verbose.output=FALSE, sgp.sqlite=FALSE, sgp.percentiles.equated=NULL, sgp.percentiles.equating.method=NULL, sgp.percentiles.calculate.sgps=TRUE, get.cohort.data.info=FALSE, SGPt=NULL, fix.duplicates=NULL)
abcSGP(sgp_object, state=NULL, steps=c("prepareSGP", "analyzeSGP", "combineSGP", "summarizeSGP", "visualizeSGP", "outputSGP"), years=NULL, content_areas=NULL, grades=NULL, prepareSGP.var.names=NULL, prepareSGP.create.additional.variables=FALSE, prepareSGP.create.achievement.level=TRUE, sgp.percentiles=TRUE, sgp.projections=TRUE, sgp.projections.lagged=TRUE, sgp.percentiles.baseline=TRUE, sgp.projections.baseline=TRUE, sgp.projections.lagged.baseline=TRUE, sgp.use.my.coefficient.matrices=NULL, sgp.minimum.default.panel.years=NULL, sgp.target.scale.scores=FALSE, sgp.target.scale.scores.only=FALSE, sgp.test.cohort.size=NULL, return.sgp.test.results=FALSE, simulate.sgps=TRUE, calculate.simex=NULL, calculate.simex.baseline=NULL, calculate.srs=NULL, calculate.srs.baseline=NULL, goodness.of.fit.print=TRUE, parallel.config=NULL, save.intermediate.results=FALSE, save.old.summaries=FALSE, sgPlot.demo.report=FALSE, sgp.config=NULL, sgp.summaries=NULL, summary.groups=NULL, data_supplementary=NULL, confidence.interval.groups=NULL, plot.types=c("bubblePlot", "studentGrowthPlot", "growthAchievementPlot"), outputSGP.output.type=c("LONG_Data", "LONG_FINAL_YEAR_Data", "WIDE_Data", "INSTRUCTOR_Data"), outputSGP.directory="Data", verbose.output=FALSE, sgp.sqlite=FALSE, sgp.percentiles.equated=NULL, sgp.percentiles.equating.method=NULL, sgp.percentiles.calculate.sgps=TRUE, get.cohort.data.info=FALSE, SGPt=NULL, fix.duplicates=NULL)
sgp_object |
A list containing LONG formatted data. See |
state |
Acronym indicating state associated with the data for access to embedded knot and boundaries, cutscores, CSEMs, and other relevant state level data. This can be supplied to the function
automatically by including the full state name (e.g, New_Hampshire_SGP) in the name of the object supplied to |
steps |
Vector containing all or some subset of |
years |
A vector indicating year(s) in which to produce student growth percentiles and/or student growth projections/trajectories. If missing the function will use the data to infer the year(s) in which to perform growth percentile analyses based upon the assumption of having at least three years of panel data for analyses. |
content_areas |
A vector indicating content area(s) in which to produce student growth percentiles and/or student growth projections/trajectories. If missing the function will use the data to infer the content area(s) available for analyses. |
grades |
A vector indicating grades for which to calculate student growth percentiles and/or student growth projections/trajectories. If missing the function will use the data to infer all the grade progressions for student growth percentile and student growth projections/trajectories analyses. |
prepareSGP.var.names |
list supplied to prepareSGP mapping provided variable names to variable names required as part of the SGP package. See |
prepareSGP.create.additional.variables |
Boolean variable indicating whether prepareSGP should create addition variables (e.g., |
prepareSGP.create.achievement.level |
Boolean variable indicating whether prepareSGP should create ACHIEVEMENT_LEVEL variable if it is missing. Defaults to TRUE. |
sgp.percentiles |
Boolean variable indicating whether to calculate student growth percentiles. Defaults to TRUE. |
sgp.projections |
Boolean variable indicating whether to calculate student growth projections. Defaults to TRUE. |
sgp.projections.lagged |
Boolean variable indicating whether to calculate lagged student growth projections often used for growth to standard analyses. Defaults to TRUE. |
sgp.percentiles.baseline |
Boolean variable indicating whether to calculate baseline student growth percentiles and/or coefficient matrices. Defaults to TRUE. |
sgp.projections.baseline |
Boolean variable indicating whether to calculate baseline student growth projections. Defaults to TRUE. |
sgp.projections.lagged.baseline |
Boolean variable indicating whether to calculate lagged baseline student growth projections. Defaults to TRUE. |
sgp.use.my.coefficient.matrices |
Boolean variable indicating whether to use embedded coefficient matrices to calculate SGPs. One should be careful to remove previously calculated SGPs prior to recalculating SGPs. |
sgp.minimum.default.panel.years |
Integer indicating the minimum number of panel years to begin with in the calculation of student growth percentiles. The default is NULL (converted to 3 years). |
sgp.target.scale.scores |
Boolean variable passed to |
sgp.target.scale.scores.only |
Boolean variable passed to |
sgp.test.cohort.size |
Integer indicating the maximum number of students sampled from the full cohort to use in the calculation of student growth percentiles. Intended to be used as a test of the desired analyses to be run. The default, NULL, uses no restrictions (no tests are performed, and analyses use the entire cohort of students). |
return.sgp.test.results |
Boolean variable passed to |
simulate.sgps |
Boolean variable indicating whether to simulate SGP values for students based on test-specific Conditional Standard Errors of Measurement (CSEM).
Test CSEM data must be available for simulation. Must be set to TRUE for confidence interval construction. Defaults to TRUE in |
calculate.simex |
A character state acronym or list including state/csem variable, csem.data.vnames, csem.loss.hoss, simulation.iterations, lambda and extrapolation method.
Returns both SIMEX adjusted SGP ( |
calculate.simex.baseline |
A character state acronym or list including state/csem variable, csem.data.vnames, csem.loss.hoss, simulation.iterations, lambda and extrapolation method. Defaults to NULL, no simex calculations performed.
Alternatively, setting the argument to TRUE uses the same defaults as above along with |
calculate.srs |
A character state acronym or list including [FILL IN LATER]. Creates a longitudinal data set based upon a stratified random sample of variables and proportions for the United States (default) or provided by the user. The argument defaults to NULL, Alternatively, setting the argument to TRUE uses the defaults specified above. This argument is passed to |
calculate.srs.baseline |
A character state acronym or list including [FILL IN LATER]. Calculates SGPs based upon previosly established coefficient matrices derived from a stratified random sample of data. Defaults to NULL, no stratified random sample SGPs are calculated. Alternatively, setting the
argument to TRUE uses the defaults specified above. This argument is passed to |
goodness.of.fit.print |
Boolean variable passed to |
parallel.config |
A named list with, at a minimum, two elements indicating 1) the BACKEND package to be used for parallel computation and 2) the WORKERS list to specify the number of processors to be used in each major analysis. The BACKEND element can be set = to The parallel.config list is passed to |
save.intermediate.results |
Should intermediate results of |
save.old.summaries |
A Boolean argument (defaults to FALSE which will delete the |
sgPlot.demo.report |
A Boolean variable (defaults to FALSE) indicating whether to produce only the demonstration student report catalog. Default is to produce reports for entire current year data. |
sgp.config |
Configuration passed to |
sgp.summaries |
A list giving the summaries requested for each group analyzed based upon the |
summary.groups |
A list consisting of 8 types of groups across which all summaries are taken: |
data_supplementary |
A list argument (or NULL, the default) providing additional multiple membership lookup tables for |
confidence.interval.groups |
A subset of the groups provided in the |
plot.types |
A character vector passed to |
outputSGP.output.type |
An argument passed to outputSGP indicating the output types to be produced. Defaults to |
outputSGP.directory |
A a file path indicating where to save output files. Defaults to |
verbose.output |
A Boolean argument indicating whether the function should output verbose diagnostic messages. |
sgp.sqlite |
A Boolean argument (defaults to FALSE) indicating whether a SQLite database file of the essential SGP data should be created from the |
sgp.percentiles.equated |
A Boolean argument (defaults to NULL, which calculates equated results if in the equating year) passed to |
sgp.percentiles.equating.method |
Character vector argument passed to |
sgp.percentiles.calculate.sgps |
Boolean argument passed to |
get.cohort.data.info |
Boolean argument passd to |
SGPt |
Argument (defaults to NULL) indicating whether to perform time dependent SGP analyses (SGPt). |
fix.duplicates |
Argument to control how |
Function returns a list containing the input long data set in the @Data
slot as a data.table keyed using VALID_CASE
, CONTENT_AREA
,
YEAR
, ID
, SGP results including student growth percentile and student growth projections/trajectories in the SGP slot, and summary results in the
@Summary
slot.
Damian W. Betebenner [email protected] and Adam Van Iwaarden [email protected]
prepareSGP
, analyzeSGP
, combineSGP
, summarizeSGP
, studentGrowthPercentiles
, and studentGrowthProjections
## Not run: ## Runs all 5 steps Demonstration_SGP <- abcSGP(sgp_object=sgpData_LONG, state="DEMO") ## Or letting the function detect the state. Demonstration_SGP <- abcSGP(sgpData_LONG) ### ### Example uses of the parallel.config argument ### Demonstration_SGP <- abcSGP(sgpData_LONG, parallel.config=list( BACKEND="PARALLEL", TYPE="PSOCK", WORKERS=list( PERCENTILES=8, BASELINE_PERCENTILES=8, PROJECTIONS=7, LAGGED_PROJECTIONS=6, SUMMARY=8, GA_PLOTS=8, SG_PLOTS=8) ) ) ## End(Not run)
## Not run: ## Runs all 5 steps Demonstration_SGP <- abcSGP(sgp_object=sgpData_LONG, state="DEMO") ## Or letting the function detect the state. Demonstration_SGP <- abcSGP(sgpData_LONG) ### ### Example uses of the parallel.config argument ### Demonstration_SGP <- abcSGP(sgpData_LONG, parallel.config=list( BACKEND="PARALLEL", TYPE="PSOCK", WORKERS=list( PERCENTILES=8, BASELINE_PERCENTILES=8, PROJECTIONS=7, LAGGED_PROJECTIONS=6, SUMMARY=8, GA_PLOTS=8, SG_PLOTS=8) ) ) ## End(Not run)
Wrapper function used to produce student growth percentiles and student growth projections (both cohort and baseline referenced) using long formatted data like that provided by prepareSGP
.
analyzeSGP(sgp_object, state=NULL, years=NULL, content_areas=NULL, grades=NULL, sgp.percentiles=TRUE, sgp.projections=TRUE, sgp.projections.lagged=TRUE, sgp.percentiles.baseline=TRUE, sgp.projections.baseline=TRUE, sgp.projections.lagged.baseline=TRUE, sgp.percentiles.baseline.max.order=3, sgp.percentiles.srs.baseline.max.order=3, sgp.projections.baseline.max.order=3, sgp.projections.lagged.baseline.max.order=3, sgp.projections.max.forward.progression.years=3, sgp.projections.max.forward.progression.grade=NULL, sgp.projections.use.only.complete.matrices=NULL, sgp.minimum.default.panel.years=NULL, sgp.use.my.coefficient.matrices=NULL, sgp.use.my.sgp_object.baseline.coefficient.matrices=NULL, sgp.test.cohort.size=NULL, return.sgp.test.results=FALSE, simulate.sgps=TRUE, calculate.simex=NULL, calculate.simex.baseline=NULL, calculate.simex.srs.baseline=NULL, calculate.srs=NULL, calculate.srs.baseline=NULL, goodness.of.fit.print=TRUE, sgp.config=NULL, sgp.config.drop.nonsequential.grade.progression.variables=TRUE, sgp.baseline.panel.years=NULL, sgp.baseline.config=NULL, trim.sgp.config=TRUE, parallel.config=NULL, verbose.output=FALSE, print.other.gp=NULL, sgp.projections.projection.unit="YEAR", get.cohort.data.info=FALSE, sgp.sqlite=FALSE, sgp.percentiles.equated=NULL, sgp.percentiles.equating.method=NULL, sgp.percentiles.calculate.sgps=TRUE, SGPt=NULL, fix.duplicates=NULL, ...)
analyzeSGP(sgp_object, state=NULL, years=NULL, content_areas=NULL, grades=NULL, sgp.percentiles=TRUE, sgp.projections=TRUE, sgp.projections.lagged=TRUE, sgp.percentiles.baseline=TRUE, sgp.projections.baseline=TRUE, sgp.projections.lagged.baseline=TRUE, sgp.percentiles.baseline.max.order=3, sgp.percentiles.srs.baseline.max.order=3, sgp.projections.baseline.max.order=3, sgp.projections.lagged.baseline.max.order=3, sgp.projections.max.forward.progression.years=3, sgp.projections.max.forward.progression.grade=NULL, sgp.projections.use.only.complete.matrices=NULL, sgp.minimum.default.panel.years=NULL, sgp.use.my.coefficient.matrices=NULL, sgp.use.my.sgp_object.baseline.coefficient.matrices=NULL, sgp.test.cohort.size=NULL, return.sgp.test.results=FALSE, simulate.sgps=TRUE, calculate.simex=NULL, calculate.simex.baseline=NULL, calculate.simex.srs.baseline=NULL, calculate.srs=NULL, calculate.srs.baseline=NULL, goodness.of.fit.print=TRUE, sgp.config=NULL, sgp.config.drop.nonsequential.grade.progression.variables=TRUE, sgp.baseline.panel.years=NULL, sgp.baseline.config=NULL, trim.sgp.config=TRUE, parallel.config=NULL, verbose.output=FALSE, print.other.gp=NULL, sgp.projections.projection.unit="YEAR", get.cohort.data.info=FALSE, sgp.sqlite=FALSE, sgp.percentiles.equated=NULL, sgp.percentiles.equating.method=NULL, sgp.percentiles.calculate.sgps=TRUE, SGPt=NULL, fix.duplicates=NULL, ...)
sgp_object |
An object of class |
state |
Acronym indicating state associated with the data for access to embedded knot and boundaries, cutscores, CSEMs, and other state related assessment data. |
years |
A vector indicating year(s) in which to produce student growth percentiles and/or student growth projections/trajectories. If missing the function will use the data to infer the year(s) based upon the assumption of having at least three years of panel data for analyses. |
content_areas |
A vector indicating content area(s) in which to produce student growth percentiles and/or student growth projections/trajectories. If left missing the function will use the data to infer the content area(s) available for analyses. |
grades |
A vector indicating grades for which to calculate student growth percentiles and/or student growth projections/trajectories. If left missing the function will use the data to infer all the grade progressions for student growth percentile and student growth projections/trajectories analyses. |
sgp.percentiles |
Boolean variable indicating whether to calculate student growth percentiles. Defaults to TRUE. |
sgp.projections |
Boolean variable indicating whether to calculate student growth projections. Defaults to TRUE. |
sgp.projections.lagged |
Boolean variable indicating whether to calculate lagged student growth projections often used for growth to standard analyses. Defaults to TRUE. |
sgp.percentiles.baseline |
Boolean variable indicating whether to calculate baseline student growth percentiles and/or coefficient matrices. Defaults to TRUE. |
sgp.projections.baseline |
Boolean variable indicating whether to calculate baseline student growth projections. Defaults to TRUE. |
sgp.projections.lagged.baseline |
Boolean variable indicating whether to calculate lagged baseline student growth projections. Defaults to TRUE. |
sgp.percentiles.baseline.max.order |
Integer indicating the maximum order to calculate baseline student growth percentiles (regardless of maximum coefficient matrix order). Also the max order of baseline coefficient matrices to be calculated if requested. Default is 3. To utilize the maximum matrix order, set to NULL. |
sgp.percentiles.srs.baseline.max.order |
Integer indicating the maximum order to calculate baseline, stratified random sample, student growth percentiles (regardless of maximum coefficient matrix order). Also the max order of baseline SRS coefficient matrices to be calculated if requested. Default is 3. To utilize the maximum matrix order, set to NULL. |
sgp.projections.baseline.max.order |
Integer indicating the maximum order to calculate baseline student growth projections (regardless of maximum coefficient matrix order). Default is 3. To utilize the maximum matrix order, set to NULL. |
sgp.projections.lagged.baseline.max.order |
Integer indicating the maximum order to calculate lagged baseline student growth projections (regardless of maximum coefficient matrix order). Default is 3. To utilize the maximum matrix order, set to NULL. |
sgp.projections.max.forward.progression.years |
Integer indicating the maximum number of years forward that cohort based projections will be established for. Default is 3 years. |
sgp.projections.max.forward.progression.grade |
Integer indicating the maximum grade forward that cohort based projections will be established for. Default is NULL, the highest grade. |
sgp.projections.use.only.complete.matrices |
Boolean argument (defaults to TRUE/NULL) indicating whether to produce projections only when a complete set of coefficient matrices is available. |
sgp.minimum.default.panel.years |
Integer indicating the minimum number of panels years to use for default sgp analyses. Default value is NULL (converted to 3) years of data. |
sgp.use.my.coefficient.matrices |
Argument, defaults to NULL, indicating whether to use coefficient matrices embedded in argument supplied to 'sgp_object' to calculate student growth percentiles. |
sgp.use.my.sgp_object.baseline.coefficient.matrices |
Argument, defaults to NULL (FALSE), indicating whether to utilize baseline matrices embedded in supplied |
sgp.test.cohort.size |
Integer indicating the maximum number of students sampled from the full cohort to use in the calculation of student growth percentiles. Intended to be used as a test of the desired analyses to be run. The default, NULL, uses no restrictions (no tests are performed, and analyses use the entire cohort of students). |
return.sgp.test.results |
Boolean variable passed to |
simulate.sgps |
Boolean variable indicating whether to simulate SGP values for students based on test-specific Conditional Standard Errors of Measurement (CSEM). Test CSEM data must be available for simulation and included in |
calculate.simex |
A character state acronym or list including state/csem variable, csem.data.vnames, csem.loss.hoss, simulation.iterations, lambda and extrapolation method.
Returns both SIMEX adjusted SGP ( |
calculate.simex.baseline |
A character state acronym or list including state/csem variable, csem.data.vnames, csem.loss.hoss, simulation.iterations, lambda and extrapolation method. Defaults to NULL, no simex calculations performed.
Alternatively, setting the argument to TRUE uses the same defaults as above along with |
calculate.simex.srs.baseline |
A character state acronym or list including state/csem variable, csem.data.vnames, csem.loss.hoss, simulation.iterations, lambda and extrapolation method. Defaults to NULL, no simex calculations performed for stratified random sample (SRS).
Alternatively, setting the argument to TRUE uses the same defaults as above along with |
calculate.srs |
A character state acronym or list including [FILL IN LATER]. Creates a longitudinal data set based upon a stratified random sample of variables and proportions for the United States (default) or provided by the user. The argument defaults to NULL, Alternatively, setting the argument to TRUE uses the defaults specified above. |
calculate.srs.baseline |
A character state acronym or list including [FILL IN LATER]. Calculates SGPs based upon previosly established coefficient matrices derived from a stratified random sample of data. Defaults to NULL, no stratified random sample SGPs are calculated. Alternatively, setting the argument to TRUE uses the defaults specified above. |
goodness.of.fit.print |
Boolean variable indicating whether to print out Goodness of Fit figures as PDF into a directory labeled Goodness of Fit. Defaults to TRUE. |
sgp.config |
If |
sgp.config.drop.nonsequential.grade.progression.variables |
Boolean variable (defaults to TRUE) indicating whether non-sequential grade progression variables should be dropped when
sgp.config is processed. For example, if a grade progression of c(3,4,6) is provided, the data configuration will assume (default is TRUE) that data for a missing year needs to be dropped prior
to applying |
sgp.baseline.panel.years |
A vector of years to be used for baseline coefficient matrix calculation. Default is to use most recent five years of data. |
sgp.baseline.config |
A list containing three vectors: |
trim.sgp.config |
A Boolean variable indicating whether the arguments |
parallel.config |
A named list with, at a minimum, two elements indicating 1) the BACKEND package to be used for parallel computation and 2) the WORKERS list to specify the number of processors to be used in each major analysis. The BACKEND element can be set = to TYPE is a third element of the The WORKERS list must contain, at a minimum, a single number of processors (nodes) desired or available. If WORKERS is specified in this manner, then the same number of processors will be used for each analysis type (sgp.percentiles, sgp.projections, ... sgp.projections.lagged.baseline). Alternatively, the user may specify the numbers of processors used for each analysis. This allows for better memory management in systems that do not have enough RAM available per core. The choice of the number of cores is a balance between the number of processors available, the amount of RAM a system has and the size of the data (sgp_object). Each system will be different and will require some tailoring. One rule of thumb used by the authors is to allow for 4GB of memory per core used for running large state data. The SGP Demonstration (and data that size) requires more like 1-2GB per core. As an example, PERCENTILES=4 and PROJECTIONS=2 might be used on a quad core machine with 4 GB of RAM. This will use all 4 cores available for the sgp.percentiles analysis and 2 cores for the sgp.projections analysis (which requires more memory than available). The WORKERS list accepts these elements: PERCENTILES, PROJECTIONS (for both cohort and baseline referenced projections), LAGGED_PROJECTIONS (for both cohort and baseline referenced lagged projections), BASELINE_MATRICES (used to produce the baseline coefficient matrices when not available in SGPstateData - very computationally intensive), BASELINE_PERCENTILES (SGP calculation only when baseline coefficient matrices have already been produced and are available - NOT very computationally intensive). Alternatively, the name of an external CLUSTER.OBJECT (PSOCK or MPI) set up by the user outside of the function can be used. Example use cases are provided below. |
verbose.output |
A Boolean argument (defaults to FALSE) indicating whether the function should output verbose diagnostic messages. |
print.other.gp |
A Boolean argument (defaults to FALSE) indicating whether the function should output SGP of all orders. |
sgp.projections.projection.unit |
A character vector argument indicating whether the studentGrowthProjections function should produce projections relative to future grades or future years. Options are "YEAR" and "GRADE", with default being "YEAR". |
get.cohort.data.info |
A Boolean argument (defaults to FALSE) indicating whether a summary of all cohorts to be submitted to the |
sgp.sqlite |
A Boolean argument (defaults to FALSE) indicating whether a SQLite database file of the essential SGP data should be created from the |
sgp.percentiles.equated |
A Boolean argument (defaults to NULL/FALSE) indicating whether equating should be used on the most recent year of test data provided. Equating allows for student growth projections to be calculated in across assessment transitions where the scale for the assessment changes. |
sgp.percentiles.equating.method |
A character vector (defaults to NULL/'equipercentile') indicating the type of equating method to use. Options include any combination of 'identity', 'mean', 'linear', and 'equipercentile'. |
sgp.percentiles.calculate.sgps |
A Boolean argument (defaults to TRUE) indicating whether to calculate percentiles in calls to studentGrowthPercentiles function. Setting to FALSE would indicate desire to calculate only coefficient matrices and no percentiles. |
SGPt |
An argument supplied to implement time-dependent SGP analyses (SGPt). Default is NULL giving standard, non-time dependent argument. If set to TRUE, the function assumes the variables 'TIME' and 'TIME_LAG' are supplied as part of the panel.data. To specify other names, supply a list of the form: list(TIME='my_time_name', TIME_LAG='my_time_lag_name'), substituting your variable names. |
fix.duplicates |
Argument to control how duplicate records based upon the key of VALID_CASE, CONTENT_AREA, YEAR, and ID are dealt with.
If set to 'KEEP.ALL', the function tries to fix the duplicate individual records by adding a '_DUP_***' suffix to the duplicate ID
before running |
... |
Arguments to be passed to |
Function returns a list containing the long data set in the @Data
slot as a data.table
keyed using VALID_CASE
, CONTENT_AREA
,
YEAR
, ID
and the student growth percentile and/or student growth projection/trajectory results in the SGP
slot.
Damian W. Betebenner [email protected] and Adam Van Iwaarden [email protected]
## Not run: ## analyzeSGP is Step 2 of 5 of abcSGP Demonstration_SGP <- sgpData_LONG Demonstration_SGP <- prepareSGP(Demonstration_SGP) Demonstration_SGP <- analyzeSGP(Demonstration_SGP) ## Or (explicitly pass state argument) Demonstration_SGP <- prepareSGP(sgpData_LONG) Demonstration_SGP <- analyzeSGP(Demonstration_SGP, state="DEMO") ### ### Example uses of the sgp.config argument ### # Use only 3 years of Data, for grades 3 to 6 # and only perform analyses for most recent year (2012) my.custom.config <- list( MATHEMATICS.2013_2014 = list( sgp.content.areas=rep("MATHEMATICS", 3), # Note, must be same length as sgp.panel.years sgp.panel.years=c('2011_2012', '2012_2013', '2013_2014'), sgp.grade.sequences=list(3:4, 3:5, 4:6)), READING.2013_2014 = list( sgp.content.areas=rep("READING", 3), sgp.panel.years=c('2011_2012', '2012_2013', '2013_2014'), sgp.grade.sequences=list(3:4, 3:5, 4:6))) Demonstration_SGP <- prepareSGP(sgpData_LONG) Demonstration_SGP <- analyzeSGP(Demonstration_SGP, sgp.config=my.custom.config, sgp.percentiles.baseline = FALSE, sgp.projections.baseline = FALSE, sgp.projections.lagged.baseline = FALSE, simulate.sgps=FALSE) ## Another example sgp.config list: # Use different CONTENT_AREA priors, and only 1 year of prior data my.custom.config <- list( MATHEMATICS.2013_2014.READ_PRIOR = list( sgp.content.areas=c("READING", "MATHEMATICS"), sgp.panel.years=c('2012_2013', '2013_2014'), sgp.grade.sequences=list(3:4, 4:5, 5:6)), READING.2013_2014.MATH_PRIOR = list( sgp.content.areas=c("MATHEMATICS", "READING"), sgp.panel.years=c('2012_2013', '2013_2014'), sgp.grade.sequences=list(3:4, 4:5, 5:6))) ## An example showing multiple priors within a single year Demonstration_SGP <- prepareSGP(sgpData_LONG) DEMO.config <- list( READING.2012_2013 = list( sgp.content.areas=c("MATHEMATICS", "READING", "MATHEMATICS", "READING", "READING"), sgp.panel.years=c('2010_2011', '2010_2011', '2011_2012', '2011_2012', '2012_2013'), sgp.grade.sequences=list(c(3,3,4,4,5), c(4,4,5,5,6), c(5,5,6,6,7), c(6,6,7,7,8))), MATHEMATICS.2012_2013 = list( sgp.content.areas=c("READING", "MATHEMATICS", "READING", "MATHEMATICS", "MATHEMATICS"), sgp.panel.years=c('2010_2011', '2010_2011', '2011_2012', '2011_2012', '2012_2013'), sgp.grade.sequences=list(c(3,3,4,4,5), c(4,4,5,5,6), c(5,5,6,6,7), c(6,6,7,7,8)))) Demonstration_SGP <- analyzeSGP( Demonstration_SGP, sgp.config=DEMO.config, sgp.projections=FALSE, sgp.projections.lagged=FALSE, sgp.percentiles.baseline=FALSE, sgp.projections.baseline=FALSE, sgp.projections.lagged.baseline=FALSE, sgp.config.drop.nonsequential.grade.progression.variables=FALSE) ### ### Example uses of the parallel.config argument ### ## Windows users must use a snow socket cluster: # possibly a quad core machine with low RAM Memory # 4 workers for percentiles, 2 workers for projections. # Note the PSOCK type cluster is used for single machines. Demonstration_SGP <- prepareSGP(sgpData_LONG) Demonstration_SGP <- analyzeSGP(Demonstration_SGP, parallel.config=list( BACKEND="PARALLEL", TYPE="PSOCK", WORKERS=list(PERCENTILES=4, PROJECTIONS=2, LAGGED_PROJECTIONS=2, BASELINE_PERCENTILES=4)) ## New parallel package - only available with R 2.13 or newer # Note there are up to 16 workers, and MPI is used, # suggesting this example is for a HPC cluster, possibly Windows OS. ... parallel.config=list( BACKEND="PARALLEL", TYPE="MPI", WORKERS=list(PERCENTILES=16, PROJECTIONS=8, LAGGED_PROJECTIONS=6, BASELINE_PERCENTILES=12)) ... ## FOREACH use cases: ... parallel.config=list( BACKEND="FOREACH", TYPE="doParallel", WORKERS=3) ... # NOTE: This list of parallel.config specifications is NOT exhaustive. # See examples in analyzeSGP documentation for some others.0 ### ### Advanced Example: restrict years, recalculate baseline SGP ### coefficient matrices, and use parallel processing ### # Remove existing DEMO baseline coefficient matrices from # the SGPstateData object so that new ones will be computed. SGPstateData$DEMO$Baseline_splineMatrix <- NULL # set up a customized sgp.config list . . . # set up a customized sgp.baseline.config list . . . # to be completed ## End(Not run)
## Not run: ## analyzeSGP is Step 2 of 5 of abcSGP Demonstration_SGP <- sgpData_LONG Demonstration_SGP <- prepareSGP(Demonstration_SGP) Demonstration_SGP <- analyzeSGP(Demonstration_SGP) ## Or (explicitly pass state argument) Demonstration_SGP <- prepareSGP(sgpData_LONG) Demonstration_SGP <- analyzeSGP(Demonstration_SGP, state="DEMO") ### ### Example uses of the sgp.config argument ### # Use only 3 years of Data, for grades 3 to 6 # and only perform analyses for most recent year (2012) my.custom.config <- list( MATHEMATICS.2013_2014 = list( sgp.content.areas=rep("MATHEMATICS", 3), # Note, must be same length as sgp.panel.years sgp.panel.years=c('2011_2012', '2012_2013', '2013_2014'), sgp.grade.sequences=list(3:4, 3:5, 4:6)), READING.2013_2014 = list( sgp.content.areas=rep("READING", 3), sgp.panel.years=c('2011_2012', '2012_2013', '2013_2014'), sgp.grade.sequences=list(3:4, 3:5, 4:6))) Demonstration_SGP <- prepareSGP(sgpData_LONG) Demonstration_SGP <- analyzeSGP(Demonstration_SGP, sgp.config=my.custom.config, sgp.percentiles.baseline = FALSE, sgp.projections.baseline = FALSE, sgp.projections.lagged.baseline = FALSE, simulate.sgps=FALSE) ## Another example sgp.config list: # Use different CONTENT_AREA priors, and only 1 year of prior data my.custom.config <- list( MATHEMATICS.2013_2014.READ_PRIOR = list( sgp.content.areas=c("READING", "MATHEMATICS"), sgp.panel.years=c('2012_2013', '2013_2014'), sgp.grade.sequences=list(3:4, 4:5, 5:6)), READING.2013_2014.MATH_PRIOR = list( sgp.content.areas=c("MATHEMATICS", "READING"), sgp.panel.years=c('2012_2013', '2013_2014'), sgp.grade.sequences=list(3:4, 4:5, 5:6))) ## An example showing multiple priors within a single year Demonstration_SGP <- prepareSGP(sgpData_LONG) DEMO.config <- list( READING.2012_2013 = list( sgp.content.areas=c("MATHEMATICS", "READING", "MATHEMATICS", "READING", "READING"), sgp.panel.years=c('2010_2011', '2010_2011', '2011_2012', '2011_2012', '2012_2013'), sgp.grade.sequences=list(c(3,3,4,4,5), c(4,4,5,5,6), c(5,5,6,6,7), c(6,6,7,7,8))), MATHEMATICS.2012_2013 = list( sgp.content.areas=c("READING", "MATHEMATICS", "READING", "MATHEMATICS", "MATHEMATICS"), sgp.panel.years=c('2010_2011', '2010_2011', '2011_2012', '2011_2012', '2012_2013'), sgp.grade.sequences=list(c(3,3,4,4,5), c(4,4,5,5,6), c(5,5,6,6,7), c(6,6,7,7,8)))) Demonstration_SGP <- analyzeSGP( Demonstration_SGP, sgp.config=DEMO.config, sgp.projections=FALSE, sgp.projections.lagged=FALSE, sgp.percentiles.baseline=FALSE, sgp.projections.baseline=FALSE, sgp.projections.lagged.baseline=FALSE, sgp.config.drop.nonsequential.grade.progression.variables=FALSE) ### ### Example uses of the parallel.config argument ### ## Windows users must use a snow socket cluster: # possibly a quad core machine with low RAM Memory # 4 workers for percentiles, 2 workers for projections. # Note the PSOCK type cluster is used for single machines. Demonstration_SGP <- prepareSGP(sgpData_LONG) Demonstration_SGP <- analyzeSGP(Demonstration_SGP, parallel.config=list( BACKEND="PARALLEL", TYPE="PSOCK", WORKERS=list(PERCENTILES=4, PROJECTIONS=2, LAGGED_PROJECTIONS=2, BASELINE_PERCENTILES=4)) ## New parallel package - only available with R 2.13 or newer # Note there are up to 16 workers, and MPI is used, # suggesting this example is for a HPC cluster, possibly Windows OS. ... parallel.config=list( BACKEND="PARALLEL", TYPE="MPI", WORKERS=list(PERCENTILES=16, PROJECTIONS=8, LAGGED_PROJECTIONS=6, BASELINE_PERCENTILES=12)) ... ## FOREACH use cases: ... parallel.config=list( BACKEND="FOREACH", TYPE="doParallel", WORKERS=3) ... # NOTE: This list of parallel.config specifications is NOT exhaustive. # See examples in analyzeSGP documentation for some others.0 ### ### Advanced Example: restrict years, recalculate baseline SGP ### coefficient matrices, and use parallel processing ### # Remove existing DEMO baseline coefficient matrices from # the SGPstateData object so that new ones will be computed. SGPstateData$DEMO$Baseline_splineMatrix <- NULL # set up a customized sgp.config list . . . # set up a customized sgp.baseline.config list . . . # to be completed ## End(Not run)
Utility function/exemplar used to produce student growth percentiles using long formatted data like that provided by prepareSGP
. Used as part of analyzeSGP
for baseline referenced student growth percentile analyses.
baselineSGP(sgp_object, state=NULL, years=NULL, content_areas=NULL, grades=NULL, exclude.years=NULL, sgp.config=NULL, sgp.baseline.config=NULL, sgp.baseline.panel.years=NULL, sgp.percentiles.baseline.max.order=3, return.matrices.only=FALSE, calculate.baseline.sgps=TRUE, calculate.simex.baseline=NULL, goodness.of.fit.print=TRUE, parallel.config=NULL, SGPt=NULL, ...)
baselineSGP(sgp_object, state=NULL, years=NULL, content_areas=NULL, grades=NULL, exclude.years=NULL, sgp.config=NULL, sgp.baseline.config=NULL, sgp.baseline.panel.years=NULL, sgp.percentiles.baseline.max.order=3, return.matrices.only=FALSE, calculate.baseline.sgps=TRUE, calculate.simex.baseline=NULL, goodness.of.fit.print=TRUE, parallel.config=NULL, SGPt=NULL, ...)
sgp_object |
An object of class |
state |
Acronym indicating state associated with the data for access to embedded knot and boundaries. |
years |
A vector indicating year(s) in which to produce baseline referenced student growth percentiles. |
content_areas |
A vector indicating content area in which to produce baseline referenced student growth percentiles. |
grades |
A vector indicating which grades to calculate baseline referenced student growth percentiles. |
exclude.years |
A vector indicating which years to exclude from the calculations? |
sgp.config |
If |
sgp.baseline.config |
A list containing three vectors: |
sgp.baseline.panel.years |
A character vector indicating the years to be used for the calculation of baseline SGPs. Default is to use most recent five years of data. |
sgp.percentiles.baseline.max.order |
Integer indicating the maximum order to calculate baseline student growth percentiles (regardless of maximum coefficient matrix order). Default is 3. To utilize the maximum matrix order, set to NULL. |
return.matrices.only |
Boolean variable indicating whether the function will only return baseline referenced coefficient matrices. Defaults to FALSE. |
calculate.baseline.sgps |
Boolean variable indicating whether the function will calculate baseline referenced student growth percentiles from baseline referenced coefficient matrices. Defaults to TRUE. |
calculate.simex.baseline |
A list including state/csem variable, csem.data.vnames, csem.loss.hoss, simulation.iterations, lambda and extrapolation method. Defaults to NULL, no simex calculations performed. Alternatively, setting the argument to TRUE sets the list up with state=state, lambda=seq(0,2,0.5), simulation.iterations=50, simex.sample.size=25000, extrapolation="linear" and save.matrices=TRUE. |
goodness.of.fit.print |
Boolean variable indicating whether the function will export goodness of fit plots if baseline referenced student growth percentiles are calculated. Defaults to TRUE. |
parallel.config |
parallel configuration argument allowing for parallel analysis by 'tau'. Defaults to NULL. |
SGPt |
Argument supplied to generate time dependent SGPs. Defaults to NULL/FALSE. |
... |
Arguments to be passed internally to |
If return.matrices.only
is set to TRUE function returns a list containing the baseline referenced coefficient matrices. Otherwise function returns the SGP object provided with the sgp_object argument with the baseline referenced coefficient matrices, growth percentiles, etc. embedded.
Adam Van Iwaarden [email protected], Ben Domingue [email protected] and Damian W. Betebenner [email protected]
prepareSGP
, analyzeSGP
, combineSGP
## Not run: ## Calculate baseline referenced SGPs ## (using coefficient matrices embedded in SGPstateData) Demonstration_SGP <- prepareSGP(sgpData_LONG) Demonstration_SGP <- baselineSGP(Demonstration_SGP) ## Calculate baseline referenced coefficient matrices SGPstateData[["DEMO"]][["Baseline_splineMatrix"]] <- NULL Demonstration_SGP <- prepareSGP(sgpData_LONG) DEMO_Baseline_Matrices <- baselineSGP( Demonstration_SGP, return.matrices.only=TRUE, calculate.baseline.sgps=FALSE) ## Calculate baseline referenced coefficient matrices and ## baseline referenced SGPs with 4 years of data SGPstateData[["DEMO"]][["Baseline_splineMatrix"]] <- NULL sgpData_LONG_4_YEAR <- subset(sgpData_LONG, YEAR!="2013_2014") Demonstration_SGP <- prepareSGP(sgpData_LONG_4_YEAR) Demonstration_SGP <- baselineSGP(Demonstration_SGP) ## End(Not run)
## Not run: ## Calculate baseline referenced SGPs ## (using coefficient matrices embedded in SGPstateData) Demonstration_SGP <- prepareSGP(sgpData_LONG) Demonstration_SGP <- baselineSGP(Demonstration_SGP) ## Calculate baseline referenced coefficient matrices SGPstateData[["DEMO"]][["Baseline_splineMatrix"]] <- NULL Demonstration_SGP <- prepareSGP(sgpData_LONG) DEMO_Baseline_Matrices <- baselineSGP( Demonstration_SGP, return.matrices.only=TRUE, calculate.baseline.sgps=FALSE) ## Calculate baseline referenced coefficient matrices and ## baseline referenced SGPs with 4 years of data SGPstateData[["DEMO"]][["Baseline_splineMatrix"]] <- NULL sgpData_LONG_4_YEAR <- subset(sgpData_LONG, YEAR!="2013_2014") Demonstration_SGP <- prepareSGP(sgpData_LONG_4_YEAR) Demonstration_SGP <- baselineSGP(Demonstration_SGP) ## End(Not run)
Function to create bubble plots associated with student growth percentile and percentile growth trajectory results. The function is adaptable to many representations but
is used in conjunction with results derived from summarizeSGP
to represent summary level results of growth against achievement
(usually, median student growth percentile against percentage at/above proficient). The function has MANY options and users are advised to
read this documentation thoroughly as well as investigate the source code for the function itself to see what the many different representations
that are possible. The function has the ability to produce interactive data tips using the pdf2
package available on R-Forge. This package is NOT
installed as part of the SGP package and must be installed separately from the package to take advantage of this functionality of the bubblePlot
function.
To install pdf2
from the R
prompt type: install.packages("pdf2",repos="http://R-Forge.R-project.org")
. The use of the pdf2 package is
scheduled to be deprecated as it is no longer maintained by the creator and requires use of a pre 2.14 version of R.
bubblePlot( bubble_plot_data.X, bubble_plot_data.Y, bubble_plot_data.SUBSET=NULL, bubble_plot_data.INDICATE=NULL, bubble_plot_data.BUBBLE_CENTER_LABEL=NULL, bubble_plot_data.SIZE, bubble_plot_data.LEVELS=NULL, bubble_plot_data.BUBBLE_TIPS_LINES, bubble_plot_labels.X=c("Growth", "Median Student Growth Percentile"), bubble_plot_labels.Y=c("Achievement", "Percent at/above Proficient"), bubble_plot_labels.SIZE=c(50, 100, 500, 1000), bubble_plot_labels.LEVELS=NULL, bubble_plot_labels.BUBBLE_TIPS_LINES=list("Median SGP (Count)", "Percent at/above Proficient"), bubble_plot_labels.BUBBLE_TITLES, bubble_plot_titles.MAIN="Growth and Achievement", bubble_plot_titles.SUB1="State School Performance", bubble_plot_titles.SUB2="Growth & Current Achievement", bubble_plot_titles.LEGEND1="School Size", bubble_plot_titles.LEGEND2_P1=NULL, bubble_plot_titles.LEGEND2_P2=NULL, bubble_plot_titles.NOTE=NULL, bubble_plot_configs.BUBBLE_MIN_MAX=c(0.03, 0.03), bubble_plot_configs.BUBBLE_X_TICKS=seq(0,100,10), bubble_plot_configs.BUBBLE_X_TICKS_SIZE=c(rep(0.6, 5), 1, rep(0.6, 5)), bubble_plot_configs.BUBBLE_X_BANDS=NULL, bubble_plot_configs.BUBBLE_X_BAND_LABELS=NULL, bubble_plot_configs.BUBBLE_Y_TICKS=seq(0,100,10), bubble_plot_configs.BUBBLE_Y_TICKS_SIZE=rep(0.6, 11), bubble_plot_configs.BUBBLE_Y_BANDS=NULL, bubble_plot_configs.BUBBLE_Y_BAND_LABELS=NULL, bubble_plot_configs.BUBBLE_SUBSET_INCREASE=0, bubble_plot_configs.BUBBLE_SUBSET_ALPHA=list(Transparent=0.3, Opaque=0.95), bubble_plot_configs.BUBBLE_COLOR="deeppink2", bubble_plot_configs.BUBBLE_COLOR_GRADIENT_REVERSE=FALSE, bubble_plot_configs.BUBBLE_TIPS=TRUE, bubble_plot_configs.BUBBLE_PLOT_DEVICE="PDF", bubble_plot_configs.BUBBLE_PLOT_FORMAT="print", bubble_plot_configs.BUBBLE_PLOT_LEGEND=FALSE, bubble_plot_configs.BUBBLE_PLOT_TITLE=TRUE, bubble_plot_configs.BUBBLE_PLOT_SUMMARY_STATISTICS=TRUE, bubble_plot_configs.BUBBLE_PLOT_BACKGROUND_LABELS=c("Growth", "Achievement"), bubble_plot_configs.BUBBLE_PLOT_EXTRAS="BASE_LINE", bubble_plot_configs.BUBBLE_PLOT_DIMENSION=NULL, ## List of WIDTH and HEIGHT bubble_plot_configs.BUBBLE_PLOT_NAME="bubblePlot.pdf", bubble_plot_configs.BUBBLE_PLOT_PATH="Figures", bubble_plot_pdftk.CREATE_CATALOG=FALSE)
bubblePlot( bubble_plot_data.X, bubble_plot_data.Y, bubble_plot_data.SUBSET=NULL, bubble_plot_data.INDICATE=NULL, bubble_plot_data.BUBBLE_CENTER_LABEL=NULL, bubble_plot_data.SIZE, bubble_plot_data.LEVELS=NULL, bubble_plot_data.BUBBLE_TIPS_LINES, bubble_plot_labels.X=c("Growth", "Median Student Growth Percentile"), bubble_plot_labels.Y=c("Achievement", "Percent at/above Proficient"), bubble_plot_labels.SIZE=c(50, 100, 500, 1000), bubble_plot_labels.LEVELS=NULL, bubble_plot_labels.BUBBLE_TIPS_LINES=list("Median SGP (Count)", "Percent at/above Proficient"), bubble_plot_labels.BUBBLE_TITLES, bubble_plot_titles.MAIN="Growth and Achievement", bubble_plot_titles.SUB1="State School Performance", bubble_plot_titles.SUB2="Growth & Current Achievement", bubble_plot_titles.LEGEND1="School Size", bubble_plot_titles.LEGEND2_P1=NULL, bubble_plot_titles.LEGEND2_P2=NULL, bubble_plot_titles.NOTE=NULL, bubble_plot_configs.BUBBLE_MIN_MAX=c(0.03, 0.03), bubble_plot_configs.BUBBLE_X_TICKS=seq(0,100,10), bubble_plot_configs.BUBBLE_X_TICKS_SIZE=c(rep(0.6, 5), 1, rep(0.6, 5)), bubble_plot_configs.BUBBLE_X_BANDS=NULL, bubble_plot_configs.BUBBLE_X_BAND_LABELS=NULL, bubble_plot_configs.BUBBLE_Y_TICKS=seq(0,100,10), bubble_plot_configs.BUBBLE_Y_TICKS_SIZE=rep(0.6, 11), bubble_plot_configs.BUBBLE_Y_BANDS=NULL, bubble_plot_configs.BUBBLE_Y_BAND_LABELS=NULL, bubble_plot_configs.BUBBLE_SUBSET_INCREASE=0, bubble_plot_configs.BUBBLE_SUBSET_ALPHA=list(Transparent=0.3, Opaque=0.95), bubble_plot_configs.BUBBLE_COLOR="deeppink2", bubble_plot_configs.BUBBLE_COLOR_GRADIENT_REVERSE=FALSE, bubble_plot_configs.BUBBLE_TIPS=TRUE, bubble_plot_configs.BUBBLE_PLOT_DEVICE="PDF", bubble_plot_configs.BUBBLE_PLOT_FORMAT="print", bubble_plot_configs.BUBBLE_PLOT_LEGEND=FALSE, bubble_plot_configs.BUBBLE_PLOT_TITLE=TRUE, bubble_plot_configs.BUBBLE_PLOT_SUMMARY_STATISTICS=TRUE, bubble_plot_configs.BUBBLE_PLOT_BACKGROUND_LABELS=c("Growth", "Achievement"), bubble_plot_configs.BUBBLE_PLOT_EXTRAS="BASE_LINE", bubble_plot_configs.BUBBLE_PLOT_DIMENSION=NULL, ## List of WIDTH and HEIGHT bubble_plot_configs.BUBBLE_PLOT_NAME="bubblePlot.pdf", bubble_plot_configs.BUBBLE_PLOT_PATH="Figures", bubble_plot_pdftk.CREATE_CATALOG=FALSE)
bubble_plot_data.X |
A vector of X coordinates for the bubbles to be plotted. |
bubble_plot_data.Y |
A vector of Y coordinates for the bubbles to be plotted. |
bubble_plot_data.SUBSET |
A Boolean vector indicating a subset of the bubbles to be highlighted and plotted. When BUBBLE_TIPS are indicated, only subsetted bubbles will show bubble tips.
To further accentuate highlight bubbles, their radius can be altered using the bubble_plot_configs.BUBBLE_SUBSET_INCREASE argument.
Default value is |
bubble_plot_data.INDICATE |
A Boolean vector indicating whether to attached a label to to further highlight in a manner suitable for printing. Usually done for few bubbles.
Default value is |
bubble_plot_data.BUBBLE_CENTER_LABEL |
A character vector to label the interior of the bubbles with. Usually a vector of singleton characters.
Default value is |
bubble_plot_data.SIZE |
A vector indicating the size of each of the bubbles plotted. |
bubble_plot_data.LEVELS |
A vector (usually a factor) indicating categories to which the bubbles belong. Default value is |
bubble_plot_data.BUBBLE_TIPS_LINES |
A list of arbitrary length indicating the different values supplied when bubble tips are requested.
Default value is |
bubble_plot_labels.X |
A vector of length 2 where the 1st component is, usually a one word summary for the axis (e.g., Growth) and the 2nd component of the vector is a label for the
axis (e.g., Median Student Growth Percentile). Default value is |
bubble_plot_labels.Y |
A vector of length 2 where the 1st component is, usually a one word summary for the axis (e.g., Achievement) and the 2nd component of the vector is a label for the
axis (e.g., Percent at/above Proficient). Default value is |
bubble_plot_labels.SIZE |
A vector of quantities giving breaking points for the size bubbles indicated in the legend of the plot.
Default value is |
bubble_plot_labels.LEVELS |
A vector of quantities giving level labels associated with |
bubble_plot_labels.BUBBLE_TIPS_LINES |
A list of labels that appear in the mouse over data tips. Should be of same length as the list from |
bubble_plot_labels.BUBBLE_TITLES |
A character vector with of the same length as number of points plotted indicated what name should appear on each mouse over bubble tip (e.g., the school name associated
with the bubble. Default value is |
bubble_plot_titles.MAIN |
The main title of the bubble plot. Default value is |
bubble_plot_titles.SUB1 |
The right upper title of the bubble plot. Default value is |
bubble_plot_titles.SUB2 |
The right lower title of the bubble plot. Default value is |
bubble_plot_titles.LEGEND1 |
The title of the upper legend to the right of the bubble plot. Default value is |
bubble_plot_titles.LEGEND2_P1 |
The 1st line of the title of the lower legend of the bubble plot. Default value is |
bubble_plot_titles.LEGEND2_P2 |
The 2nd line of the title of the lower legend of the bubble plot. Default value is |
bubble_plot_titles.NOTE |
A note, message, description, etc to be placed in lower half of the legend. Default value is |
bubble_plot_configs.BUBBLE_MIN_MAX |
A vector of length two indicating min and max values for the bubbles in inches. Default value is |
bubble_plot_configs.BUBBLE_X_TICKS |
A vector indicating what x coordinates to display for the x axis of the bubble plot. Default value is |
bubble_plot_configs.BUBBLE_X_TICKS_SIZE |
A vector, the same length as |
bubble_plot_configs.BUBBLE_X_BANDS |
A vector of cutpoints used to separate the plot background into horizontal rectangular regions. |
bubble_plot_configs.BUBBLE_X_BAND_LABELS |
A character vector of labels used to labels the rectangles produced with |
bubble_plot_configs.BUBBLE_Y_TICKS |
A vector indicating what x coordinates to display for the x axis of the bubble plot. Default value is |
bubble_plot_configs.BUBBLE_Y_TICKS_SIZE |
A vector, the same length as |
bubble_plot_configs.BUBBLE_Y_BANDS |
A vector of cutpoints used to separate the plot background into horizontal rectangular regions. |
bubble_plot_configs.BUBBLE_Y_BAND_LABELS |
A character vector of labels used to labels the rectangles produced with |
bubble_plot_configs.BUBBLE_SUBSET_INCREASE |
Default value is |
bubble_plot_configs.BUBBLE_SUBSET_ALPHA |
Default value is |
bubble_plot_configs.BUBBLE_COLOR |
Default value is |
bubble_plot_configs.BUBBLE_COLOR_GRADIENT_REVERSE |
Boolean argument (defaults to FALSE) indicating whether to reverse color gradient associated with bubbles. |
bubble_plot_configs.BUBBLE_TIPS |
Default value is |
bubble_plot_configs.BUBBLE_PLOT_DEVICE |
Default value is |
bubble_plot_configs.BUBBLE_PLOT_FORMAT |
Default value is |
bubble_plot_configs.BUBBLE_PLOT_LEGEND |
Default value is |
bubble_plot_configs.BUBBLE_PLOT_TITLE |
Default value is |
bubble_plot_configs.BUBBLE_PLOT_SUMMARY_STATISTICS |
Default value is |
bubble_plot_configs.BUBBLE_PLOT_BACKGROUND_LABELS |
Default value is |
bubble_plot_configs.BUBBLE_PLOT_EXTRAS |
Default value is |
bubble_plot_configs.BUBBLE_PLOT_DIMENSION |
Default value is |
bubble_plot_configs.BUBBLE_PLOT_NAME |
Default value is |
bubble_plot_configs.BUBBLE_PLOT_PATH |
Default value is |
bubble_plot_pdftk.CREATE_CATALOG |
Default value is |
Typical use of the function is as part of visualizeSGP
function. However, function can be used more generically for diverse plots showing many dimensions of data simultaneously.
Function creates a bubble chart and writes the result as a PDF to bubble_plot_configs.BUBBLE_PATH
.
Damian W. Betebenner [email protected]
Function includes a number of "styles" associated with bubblePlot
to create bubble plots depicting a variety of relationships often of interest
to stakeholders. The bubblePlot
function itself is adaptable to many representations but is most often used in conjunction with results derived
from summarizeSGP
to represent summary level results of growth against achievement (usually, median student growth percentile against percentage
at/above proficient).
bubblePlot_Styles( sgp_object, state, bPlot.years=NULL, bPlot.content_areas=NULL, bPlot.districts=NULL, bPlot.schools=NULL, bPlot.instructors=NULL, bPlot.styles=c(1), bPlot.levels=NULL, bPlot.level.cuts=NULL, bPlot.full.academic.year=TRUE, bPlot.minimum.n=10, bPlot.anonymize=FALSE, bPlot.prior.achievement=TRUE, bPlot.draft=FALSE, bPlot.demo=FALSE, bPlot.output="PDF", bPlot.format="print", bPlot.folder="Visualizations/bubblePlots")
bubblePlot_Styles( sgp_object, state, bPlot.years=NULL, bPlot.content_areas=NULL, bPlot.districts=NULL, bPlot.schools=NULL, bPlot.instructors=NULL, bPlot.styles=c(1), bPlot.levels=NULL, bPlot.level.cuts=NULL, bPlot.full.academic.year=TRUE, bPlot.minimum.n=10, bPlot.anonymize=FALSE, bPlot.prior.achievement=TRUE, bPlot.draft=FALSE, bPlot.demo=FALSE, bPlot.output="PDF", bPlot.format="print", bPlot.folder="Visualizations/bubblePlots")
sgp_object |
An object of class SGP containing long formatted data in the |
state |
Acronym indicating state associated with the summaries for access to assessment program information embedded in |
bPlot.years |
A vector indicating year(s) in which to produce |
bPlot.content_areas |
A vector indicating content area(s) to produce |
bPlot.districts |
A vector indicating districts to produce |
bPlot.schools |
A vector indicating schools to produce |
bPlot.instructors |
A vector indicating instructors to produce |
bPlot.styles |
A vector of positive integers indicating the types of |
bPlot.levels |
A character vector of levels to be used to color bubbles in the |
bPlot.level.cuts |
A vector of cuts to be used to distinguish levels used to color bubbles in the |
bPlot.full.academic.year |
A Boolean argument (defaults to TRUE) indicating whether |
bPlot.minimum.n |
A positive integer (defaults to 10) indicating the minimum size for summary values to be displayed in the |
bPlot.anonymize |
A Boolean argument (defaults to FALSE) indicating whether to anonymize |
bPlot.prior.achievement |
A Boolean argument (defaults to TRUE) indicating whether to produce |
bPlot.draft |
A Boolean argument (defaults to FALSE) indicating whether to put an indicator on the chart noting that the results are draft and to not distribute. |
bPlot.demo |
A Boolean argument (defaults to FALSE) indicating whether to produce demo student level plots (styles 150 and/or 153) for instructors. |
bPlot.output |
Argument indicating the desired type of output format for bubble plots. Either 'PDF' (default) or 'PNG'. |
bPlot.format |
Either "print" or "presentation" indicating whether to optimize the plot for print form (light background) or presentation form (dark background). |
bPlot.folder |
Character vector indicating where |
bubblePlot_Styles
is an omnibus function containing a number of applications of the bubblePlot
function with data output from SGP
analyses. As added styles are
constructed they will be added to the function allowing user to construct plots of their liking. User wishing to participate and provide or suggest specific styles of their own should
contact the package maintainer. Styles representing summary level data (e.g., growth and achievement for schools) are currently assigned numbers from 1 to 99 and styles representing
individual level data (e.g., growth and achievement for students within a single grade) are currently assigned numbers from 100 to 199.
1 : |
Growth and achievement bubblePlot s for the entire state with bubbles representing schools. |
100 : |
Growth and achievement bubblePlot s by grade for students in selected schools and districts. |
Function produces numerous PDF bubble charts in the styles specified by the function.
Damian W. Betebenner [email protected] and Adam Van Iwaarden [email protected]
The function capwords converts characters to mixed case character as intelligently as possible and leading/trailing spaces.
capwords(x, special.words = c("ELA","I", "II", "III", "IV", "CCSD", "CUSD", "CUD", "USD", "PSD", "UD", "ESD", "DCYF", "EMH", "HS", "MS", "ES", "SES", "IEP", "ELL", "MAD", "PARCC", "SBAC", "SD", "SWD", "US", "SGP", "SIMEX", "SS", "SAT", "PSAT", "WIDA", "ACCESS", "WIDA-ACCESS"))
capwords(x, special.words = c("ELA","I", "II", "III", "IV", "CCSD", "CUSD", "CUD", "USD", "PSD", "UD", "ESD", "DCYF", "EMH", "HS", "MS", "ES", "SES", "IEP", "ELL", "MAD", "PARCC", "SBAC", "SD", "SWD", "US", "SGP", "SIMEX", "SS", "SAT", "PSAT", "WIDA", "ACCESS", "WIDA-ACCESS"))
x |
A character string to be converted to mixed case. |
special.words |
A character vector (see default above), specifying words to not convert to mixed case. |
Returns a mixed case character string.
Damian W. Betebenner [email protected]
capwords("TEST") ## Test capwords("TEST1 TEST2") ## Test1 Test2 capwords("O'NEIL") ## O'Neil capwords("JOHN'S") ## John's ## Use sapply for converting character vectors test.vector <- paste("TEST", 1:10, sep="") sapply(test.vector, capwords) ## With factors, convert levels instead of the entire vector test.factor <- factor(paste("TEST", rep(letters[1:10], each=50))) levels(test.factor) <- sapply(levels(test.factor), capwords) levels(test.factor)
capwords("TEST") ## Test capwords("TEST1 TEST2") ## Test1 Test2 capwords("O'NEIL") ## O'Neil capwords("JOHN'S") ## John's ## Use sapply for converting character vectors test.vector <- paste("TEST", 1:10, sep="") sapply(test.vector, capwords) ## With factors, convert levels instead of the entire vector test.factor <- factor(paste("TEST", rep(letters[1:10], each=50))) levels(test.factor) <- sapply(levels(test.factor), capwords) levels(test.factor)
Utility function that merges student long data in the @Data slot with results from student growth percentiles and/or student growth projections calculations.
Default values of this function are designed to be used following use of other utility functions: prepareSGP
and analyzeSGP
.
Function is integrated with cutscores embedded in SGPstateData
to calculate growth-to-standard SGP targets and their associated scale scores
with catch-up/keep-up to proficient status and/or move-up/stay-up to advanced status as well as the scale scores associated with these targets.
combineSGP(sgp_object, state=NULL, years=NULL, content_areas=NULL, sgp.percentiles=TRUE, sgp.percentiles.baseline=TRUE, sgp.projections=TRUE, sgp.projections.baseline=TRUE, sgp.projections.lagged=TRUE, sgp.projections.lagged.baseline=TRUE, sgp.target.scale.scores=FALSE, sgp.target.scale.scores.only=FALSE, sgp.target.scale.scores.merge=FALSE, sgp.target.content_areas=NULL, max.sgp.target.years.forward=3, update.all.years=FALSE, sgp.config=NULL, sgp.percentiles.equated=NULL, SGPt=NULL, fix.duplicates=NULL, parallel.config=NULL)
combineSGP(sgp_object, state=NULL, years=NULL, content_areas=NULL, sgp.percentiles=TRUE, sgp.percentiles.baseline=TRUE, sgp.projections=TRUE, sgp.projections.baseline=TRUE, sgp.projections.lagged=TRUE, sgp.projections.lagged.baseline=TRUE, sgp.target.scale.scores=FALSE, sgp.target.scale.scores.only=FALSE, sgp.target.scale.scores.merge=FALSE, sgp.target.content_areas=NULL, max.sgp.target.years.forward=3, update.all.years=FALSE, sgp.config=NULL, sgp.percentiles.equated=NULL, SGPt=NULL, fix.duplicates=NULL, parallel.config=NULL)
sgp_object |
An object of class SGP containing slots |
state |
Acronym for which state is to be used for the lagged projections and growth to standard analyses. Function will try to guess state name from passed |
years |
A vector of years indicating years of data to merge with |
content_areas |
A vector of content areas indicating content areas of student growth percentile data to merge with |
sgp.percentiles |
A Boolean variable indicating whether to combine student growth percentiles. |
sgp.percentiles.baseline |
A Boolean variable indicating whether to combine baseline student growth percentiles. |
sgp.projections |
A Boolean variable indicating whether to combine current year student growth projections and calculate catch-up/keep-up and move-up/stay-up values. |
sgp.projections.baseline |
A Boolean variable indicating whether to combine current year baseline student growth projections and calculate catch-up/keep-up and move-up/stay-up values. |
sgp.projections.lagged |
A Boolean variable indicating whether to combine lagged student growth projections and calculate catch-up/keep-up and move-up/stay-up values. |
sgp.projections.lagged.baseline |
A Boolean variable indicating whether to combine lagged baseline student growth projections and calculate catch-up/keep-up move-up/stay-up values. |
sgp.target.scale.scores |
A Boolean variable indicating whether scale scores from calculated SGP targets should be calculated. |
sgp.target.scale.scores.only |
A Boolean variable indicating whether combineSGP should skip merging and only calculate scale scores from calculated SGP targets. Default is FALSE. |
sgp.target.scale.scores.merge |
An argument (defaults to FALSE) indicating whether & how target scale scores should be merged with the LONG data in the @Data slot. |
sgp.target.content_areas |
A Boolean variable indicating whether content area associated with SGP targets should be calculated. |
max.sgp.target.years.forward |
A integer indicating the number of years forward from the lagged (last year's) score to project forward for growth to standard calculations. Default is 3 years from the present, 4 years from the lagged year, which is the standard in most growth to standard calculations used by state departments of education. |
update.all.years |
A Boolean argument defaulting to FALSE indicating whether |
sgp.config |
Argument (defaults to NULL) passed utilized only for target scale score calculation. If targets for end of course tests are required, user must specify configurations
directly. See code from |
sgp.percentiles.equated |
Boolean variable indicating whether equated percentiles are being merged (defaults to NULL which is converted to FALSE unless otherwise explicitly declared. If scale score targets are being calculated, linkages will be passed to scale score targets for calculation. |
SGPt |
Argument used to pass SGPt configuration to |
fix.duplicates |
Argument to control how duplicate records based upon the key of VALID_CASE, CONTENT_AREA, YEAR, and ID are dealt with.
If set to 'KEEP.ALL', the function tries to fix the duplicate individual records. If present and a '_DUP_***' suffix has been added to the
duplicate ID before running |
parallel.config |
Parallel configuration only used when 'sgp.target.scale.scores' is set to TRUE. Default is NULL consistent with no targets being calculated. To utilize parallel processing in the calculation of SGP scale score targets user must specify a list designating a backend (e.g, BACKEND='PARALLEL') and a number of workers (e.g., 'WORKERS=list(SGP_SCALE_SCORE_TARGETS=4)'). |
Function returns a list containing the input long data set in the @Data
slot as a data.table
keyed using VALID_CASE
, CONTENT_AREA
,
YEAR
, ID
merged with student growth percentiles and/or straight/lagged projection targets and catch-up/keep-up and move-up/stay-up status with, if requested, the scale scores
associated with such targets.
Damian W. Betebenner [email protected] and Adam Van Iwaarden [email protected]
## Not run: ## combineSGP is Step 3 of 5 of abcSGP Demonstration_SGP <- sgpData_LONG Demonstration_SGP <- prepareSGP(Demonstration_SGP) Demonstration_SGP <- analyzeSGP(Demonstration_SGP) Demonstration_SGP <- combineSGP(Demonstration_SGP) ## End(Not run)
## Not run: ## combineSGP is Step 3 of 5 of abcSGP Demonstration_SGP <- sgpData_LONG Demonstration_SGP <- prepareSGP(Demonstration_SGP) Demonstration_SGP <- analyzeSGP(Demonstration_SGP) Demonstration_SGP <- combineSGP(Demonstration_SGP) ## End(Not run)
Utility function used to analyze supplied long data or an existing SGP class object to identify potential course progressions suitable for analysis with analyzeSGP
, studentGrowthPercentiles
, etc. See examples for more information.
courseProgressionSGP( sgp_object, lag.direction=c("FORWARD", "BACKWARD"), year)
courseProgressionSGP( sgp_object, lag.direction=c("FORWARD", "BACKWARD"), year)
sgp_object |
Either a panel data set in long form or an object of class SGP. See embedded |
lag.direction |
Character string indicating whether the progressions should be produced prospectively or retrospectively. |
year |
Character indicating the value of YEAR that is the focus of analysis. |
Function returns a nested list
class object. The final node of each nested list is a data.table
which summarizes the number of students with a particular GRADE by CONTENT_AREA by YEAR course progression
Adam Van Iwaarden [email protected] and Damian W. Betebenner [email protected]
## Not run: ## Run courseProgressionSGP on the subset of the long data that contains ## ONLY mathematics related records (would realistically also contain EOCT math courses) Math_Data <- subset(SGPdata::sgpData_LONG, CONTENT_AREA == "MATHEMATICS") Math_Progressions <- courseProgressionSGP(Math_Data, lag.direction= "BACKWARD", year="2015_2016") ## Examine results for Adcademic Year 2015-2016, 5th grade Mathematics. Math_Progressions[['BACKWARD']][['2015_2016']][['MATHEMATICS.05']] Math_Progressions[['BACKWARD']][['2015_2016']][['MATHEMATICS.05']][COUNT>100] ## End(Not run)
## Not run: ## Run courseProgressionSGP on the subset of the long data that contains ## ONLY mathematics related records (would realistically also contain EOCT math courses) Math_Data <- subset(SGPdata::sgpData_LONG, CONTENT_AREA == "MATHEMATICS") Math_Progressions <- courseProgressionSGP(Math_Data, lag.direction= "BACKWARD", year="2015_2016") ## Examine results for Adcademic Year 2015-2016, 5th grade Mathematics. Math_Progressions[['BACKWARD']][['2015_2016']][['MATHEMATICS.05']] Math_Progressions[['BACKWARD']][['2015_2016']][['MATHEMATICS.05']][COUNT>100] ## End(Not run)
The function createKnotsBoundaries creates Knots, Boundaries and Loss/Hoss scores for subsequent use and embedding in SGPstateData. Function can be called separately but is usually called as part of
prepareSGP
. See examples below.
createKnotsBoundaries(tmp.data, knot.cut.percentiles=c(0.2,0.4,0.6,0.8))
createKnotsBoundaries(tmp.data, knot.cut.percentiles=c(0.2,0.4,0.6,0.8))
tmp.data |
Data supplied to function in LONG format. See sgpData_LONG for an exemplar. tmp.data must contain, at least, variables 'VALID_CASE', 'CONTENT_AREA', 'SCALE_SCORE', 'GRADE'. |
knot.cut.percentiles |
A numeric vector of quantiles of 'SCALE_SCORE' to be used as the cut points. Default is to use the 20th, 40th, 60th, and 80th percentiles (i.e., c(0.2,0.4,0.6,0.8)). |
Returns a list containing Knots, Boundaries and Loss/Hoss scores.
Damian W. Betebenner [email protected]
## Not run: ### Run on supplied long data DEMO_Knots_Boundaries <- createKnotsBoundaries(sgpData_LONG) ### Run as part of prepareSGP ### First NULL out knots and boundaries embedded in SGPstateData SGPstateData[["DEMO"]][["Achievement"]][["Knots_Boundaries"]] <- NULL Demonstration_SGP <- prepareSGP(sgpData_LONG) ## End(Not run)
## Not run: ### Run on supplied long data DEMO_Knots_Boundaries <- createKnotsBoundaries(sgpData_LONG) ### Run as part of prepareSGP ### First NULL out knots and boundaries embedded in SGPstateData SGPstateData[["DEMO"]][["Achievement"]][["Knots_Boundaries"]] <- NULL Demonstration_SGP <- prepareSGP(sgpData_LONG) ## End(Not run)
The function createSuperCohortData creates a longitudinal data set from another longitudinal data set in which individual years are merged together in order to create a multi-year, super-cohort of longitudinal data. See examples below.
createSuperCohortData( base_data, sgp.config, supercohort_base_years, indicate_cohort=FALSE)
createSuperCohortData( base_data, sgp.config, supercohort_base_years, indicate_cohort=FALSE)
base_data |
Longitudinal data from which to create the super-cohort. Longitudinal data is long formatted data where each row represents a unique student by grade by year by content area record. For SGP and sgpFlow analyses, data should, at a minimum provide the variables: 'VALID_CASE', 'CONTENT_AREA', 'YEAR', 'GRADE', 'SCALE_SCORE'. |
sgp.config |
Configurations that detail the super-cohorts of student assessment records to be produced. |
supercohort_base_years |
Subset of years in the supplied |
indicate_cohort |
Boolean variable (defaults to FALSE) indicating whether to include a variable in the super-cohort data set indicating from which cohort the data record emanates. |
Returns a data.table consisting of the multi-year, super-cohort data.
Damian W. Betebenner [email protected]
## Not run: ### super-cohort configurations MATHEMATICS.config <- list( list( sgp.content.areas=rep("MATHEMATICS", 2), sgp.panel.years=c("2022_2023", "2023_2024"), sgp.grade.sequences=c("3", "4"), sgp.grade.sequences.lags=1), list( sgp.content.areas=rep("MATHEMATICS", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("3", "4", "5"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("MATHEMATICS", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("4", "5", "6"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("MATHEMATICS", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("5", "6", "7"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("MATHEMATICS", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("6", "7", "8"), sgp.grade.sequences.lags=c(1,1)) ) READING.config <- list( list( sgp.content.areas=rep("READING", 2), sgp.panel.years=c("2022_2023", "2023_2024"), sgp.grade.sequences=c("3", "4"), sgp.grade.sequences.lags=1), list( sgp.content.areas=rep("READING", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("3", "4", "5"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("READING", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("4", "5", "6"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("READING", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("5", "6", "7"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("READING", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("6", "7", "8"), sgp.grade.sequences.lags=c(1,1)) ) super_cohort_config <- c(MATHEMATICS.config, READING.config) super_cohort_data <- createSuperCohortData( base_data=SGPdata::sgpData_LONG, sgp.config=super_cohort_config) ## End(Not run)
## Not run: ### super-cohort configurations MATHEMATICS.config <- list( list( sgp.content.areas=rep("MATHEMATICS", 2), sgp.panel.years=c("2022_2023", "2023_2024"), sgp.grade.sequences=c("3", "4"), sgp.grade.sequences.lags=1), list( sgp.content.areas=rep("MATHEMATICS", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("3", "4", "5"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("MATHEMATICS", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("4", "5", "6"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("MATHEMATICS", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("5", "6", "7"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("MATHEMATICS", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("6", "7", "8"), sgp.grade.sequences.lags=c(1,1)) ) READING.config <- list( list( sgp.content.areas=rep("READING", 2), sgp.panel.years=c("2022_2023", "2023_2024"), sgp.grade.sequences=c("3", "4"), sgp.grade.sequences.lags=1), list( sgp.content.areas=rep("READING", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("3", "4", "5"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("READING", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("4", "5", "6"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("READING", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("5", "6", "7"), sgp.grade.sequences.lags=c(1,1)), list( sgp.content.areas=rep("READING", 3), sgp.panel.years=c("2021_2022", "2022_2023", "2023_2024"), sgp.grade.sequences=c("6", "7", "8"), sgp.grade.sequences.lags=c(1,1)) ) super_cohort_config <- c(MATHEMATICS.config, READING.config) super_cohort_data <- createSuperCohortData( base_data=SGPdata::sgpData_LONG, sgp.config=super_cohort_config) ## End(Not run)
The function getStateAbbreviation converts state/organization abbreviations to their long form and back. For example ID gets converted to Idaho.
getStateAbbreviation( supplied.name, SGPfunction=NULL, type="ABBREVIATION")
getStateAbbreviation( supplied.name, SGPfunction=NULL, type="ABBREVIATION")
supplied.name |
A character string state/organization abbreviation or long form name. |
SGPfunction |
SGP package function from which |
type |
Either |
Returns a character string.
Damian W. Betebenner [email protected]
getStateAbbreviation("IDAHO") ## ID getStateAbbreviation("ID", type="Long") ## Idaho
getStateAbbreviation("IDAHO") ## ID getStateAbbreviation("ID", type="Long") ## Idaho
The function gofPrint is used to output Goodness of Fit plots from R grobs stored in a SGP object.
gofPrint( sgp_object, years = NULL, content_areas = NULL, grades = NULL, sgp_types = NULL, norm_group = NULL, output_format = c("PDF", "SVG", "DECILE_TABLES"), output_path = "Goodness_of_Fit", ...)
gofPrint( sgp_object, years = NULL, content_areas = NULL, grades = NULL, sgp_types = NULL, norm_group = NULL, output_format = c("PDF", "SVG", "DECILE_TABLES"), output_path = "Goodness_of_Fit", ...)
sgp_object |
SGP object resulting from SGP analyses |
years |
The academic year(s) for which fit plots should be produced |
content_areas |
The content area(s) for which fit plots should be produced |
grades |
The grade(s) for which fit plots should be produced |
sgp_types |
The SGP type for which fit plots should be produdced (e.g., cohort or baseline referenced, SIMEX adjusted, etc.). |
norm_group |
The specific norm group (cohort or course progression) for which fit plots should be produced |
output_format |
The graphical file type of plots that should be produced and/or the decile tables as a .Rdata file. Defaults are PDF, SVG and decile tables. PNG file type is also available. |
output_path |
Directory path for plot/table output |
... |
Additional arguments to pass to |
Returns a graphical output of the fit plot(s) requested based on the arguments provided. Can also save the decile table data in Rdata format.
Adam Van Iwaarden [email protected] and Damian W. Betebenner [email protected]
## Not run: gofPrint(Demonstration_SGP) ## End(Not run)
## Not run: gofPrint(Demonstration_SGP) ## End(Not run)
gofSGP creates goodness-of-fit plots in either PDF or PNG for showing SGP distribution by prior achievement level and prior scale score decile. These plots expand upon the plots currently produced
with the studentGrowthPercentiles
function.
gofSGP( sgp_object, state=NULL, years=NULL, content_areas=NULL, content_areas_prior=NULL, grades=NULL, ceiling.floor=TRUE, use.sgp="SGP", output.format="PDF", color.scale="reds.and.blues")
gofSGP( sgp_object, state=NULL, years=NULL, content_areas=NULL, content_areas_prior=NULL, grades=NULL, ceiling.floor=TRUE, use.sgp="SGP", output.format="PDF", color.scale="reds.and.blues")
sgp_object |
The SGP object from which the goodness-of-fit data will be used. |
state |
The 'state' for the sgp_object. Derive from sgp_object name if not explicitly supplied. |
years |
The years that goodness-of-fit plots are requested. Default is to use all years available. |
content_areas |
The content area(s) that goodness-of-fit plots are requested. Default is to use all content areas available. |
content_areas_prior |
The content area(s) of the prior year which growth by achievement level is being produced that goodness-of-fit plots are requested. Default is to use all content areas available. |
grades |
The grade(s) that goodness-of-fit plots are requested. Default is to use all grade available. |
ceiling.floor |
Boolean variable to explictly control display of ceiling/floor portion of goodness of fit plot. |
use.sgp |
Character vectors (defaults to 'SGP') indicating what student growth percentile variable to calculate goodness-of-fit plots for. |
output.format |
Character vectors (defaults to 'PDF') indicating what driver to use to output results. Options currently include 'PDF', 'PNG' and 'SVG'. 'SVG' is currently experimental. |
color.scale |
Character vectors (defaults to 'red') indicating what color palette to use for creating percentile distribution table. |
Returns output ('PDF' , 'PNG' or 'SVG') associated with goodness-of-fit analyses.
Damian W. Betebenner [email protected]
## Not run: Demonstration_SGP <- abcSGP(sgpData_LONG) gofSGP(Demonstration_SGP) ## End(Not run)
## Not run: Demonstration_SGP <- abcSGP(sgpData_LONG) gofSGP(Demonstration_SGP) ## End(Not run)
Function to create growth and achievement plots depicting system level results associated with student growth percentile results. The charts show, simultaneously, norm- and criterion-referenced student achievement (i.e., status) as well as norm- and criterion-referenced student growth. These charts are those shown on the cover of the December 2009 Issue of Educational Measurement: Issues and Practice. See Betebenner (2009) and Betebenner (2012) for more details
growthAchievementPlot( gaPlot.sgp_object, gaPlot.students=NULL, gaPlot.percentile_trajectories, gaPlot.achievement_percentiles=c(.01, seq(.05, .95, by=.05), .99), gaPlot.show.scale.transformations=TRUE, gaPlot.grade_range, gaPlot.max.order.for.progression=NULL, gaPlot.start.points="Achievement Level Cuts", gaPlot.back.extrapolated.cuts=NULL, gaPlot.subtitle = TRUE, gaPlot.SGPt=NULL, state, content_area, year, format="print", baseline=FALSE, equated=NULL, output.format="PDF", output.folder, assessment.name)
growthAchievementPlot( gaPlot.sgp_object, gaPlot.students=NULL, gaPlot.percentile_trajectories, gaPlot.achievement_percentiles=c(.01, seq(.05, .95, by=.05), .99), gaPlot.show.scale.transformations=TRUE, gaPlot.grade_range, gaPlot.max.order.for.progression=NULL, gaPlot.start.points="Achievement Level Cuts", gaPlot.back.extrapolated.cuts=NULL, gaPlot.subtitle = TRUE, gaPlot.SGPt=NULL, state, content_area, year, format="print", baseline=FALSE, equated=NULL, output.format="PDF", output.folder, assessment.name)
gaPlot.sgp_object |
The sgp_object containing system information for constructing the growth and achievement plot. Object is calculated using |
gaPlot.students |
Either NULL (the default) or a list of student IDs for whom one wishes to generate growth and achievement plots. |
gaPlot.percentile_trajectories |
A vector indicating the growth percentile trajectories to be depicted on the plot. If missing, the percentile trajectories will be the trajectories associated with the state supplied. If no state is supplied, the percentile trajectories will be 10, 35, 50, 65, 90. |
gaPlot.achievement_percentiles |
A vector of percentiles that achievement (i.e., status) percentiles will be depicted across the range of grades. |
gaPlot.show.scale.transformations |
A Boolean arguments (defaults to TRUE) indicating whether to show the scale as a vertical axis if a scale transformation is applied to the supplied data. |
gaPlot.grade_range |
The grade range for which to demonstrate plot. If missing, function uses supplied state to derive grade range. |
gaPlot.max.order.for.progression |
The maximum coefficient matrix order to use for each progression. Default is NULL which utilizes the maximum order available with the coefficient matrices. |
gaPlot.start.points |
Either 'Achievement Level Cuts' or 'Achievement Percentiles' defining where the growth percentiles trajectories will start in the growth achievement plots. |
gaPlot.back.extrapolated.cuts |
Scale score in final year for which nth percentile growth culminates from back-extrapolated scale scores. |
gaPlot.subtitle |
Boolean variable (defaults to TRUE) indicating whether subtitle is printed on the growth achievement chart indicating student starting point. |
gaPlot.SGPt |
A boolean variable indicating whether time dependent coefficient matrices (SGPt) are to be used in student growth projection calculation. |
state |
A two letter acronym for the state associated with the supplied data. |
content_area |
A character vector indicating the content area to produce the growth and achievement chart. Note that the supplied content area must match that used in the internal labeling of content area for the sgp_object. |
year |
The year for which to produce the growth and achievement plots. |
format |
Either "print" (the default) for light background or "presentation" for dark background slides. |
baseline |
Boolean variable (defaults to FALSE) indicating whether to create percentile trajectories using baseline referenced coefficient matrices. |
equated |
Boolean variable (defaults to FALSE) indicating whether to utilize linked matrices to generate growth and achievement plots. |
output.format |
A character vector indicating which output format to use. Currently support 'PDF' (the default) and 'PNG'. The call to growthAchievementPlot in |
output.folder |
A character vector indicating where to put the produced growth and achievement plot. |
assessment.name |
A character vector indicating the assessment.name. If missing, the supplied state is used to determine the assessment.name. |
Typical use of the function is as part of visualizeSGP
function. However, function can be used to produce growth and achievement charts.
Function creates a growth and achievement chart and writes the result as a PDF to output.folder
.
Damian W. Betebenner [email protected]
Betebenner, D. W. (2012). Growth, standards, and accountability. In G. J. Cizek, Setting Performance Standards: Foundations, Methods & Innovations. 2nd Edition (pp. 439-450). New York: Routledge.
Betebenner, D. W. (2009). Norm- and criterion-referenced student growth. Educational Measurement: Issues and Practice, 28(4):42-51.
Utility function used to export student data and SGP results for a variety of purposes. Current functionality exports data in wide format for data visualization purposes. See source code for detailed functionality.
outputSGP(sgp_object, state=NULL, output.type=c("LONG_Data", "LONG_FINAL_YEAR_Data", "WIDE_Data", "INSTRUCTOR_Data"), baseline.sgps=FALSE, outputSGP_SUMMARY.years=NULL, outputSGP_SUMMARY.content_areas=NULL, outputSGP_INDIVIDUAL.years=NULL, outputSGP_INDIVIDUAL.content_areas=NULL, outputSGP.anonymize=FALSE, outputSGP.student.groups=NULL, outputSGP.directory="Data", outputSGP.translate.names=TRUE, outputSGP.projection.years.for.target=3, outputSGP.pass.through.variables=NULL)
outputSGP(sgp_object, state=NULL, output.type=c("LONG_Data", "LONG_FINAL_YEAR_Data", "WIDE_Data", "INSTRUCTOR_Data"), baseline.sgps=FALSE, outputSGP_SUMMARY.years=NULL, outputSGP_SUMMARY.content_areas=NULL, outputSGP_INDIVIDUAL.years=NULL, outputSGP_INDIVIDUAL.content_areas=NULL, outputSGP.anonymize=FALSE, outputSGP.student.groups=NULL, outputSGP.directory="Data", outputSGP.translate.names=TRUE, outputSGP.projection.years.for.target=3, outputSGP.pass.through.variables=NULL)
sgp_object |
An object of class SGP containing data to be exported. |
state |
Acronym for which state is to be used for the lagged projections and growth to standard analyses. Function will try to guess state name from passed |
years |
A vector indicating the years to be included in the output. Default is to use all years. |
content_areas |
A vector indicating the content areas to be included in the output. Default is to use all content areas. |
output.type |
A character vector indicating what output type is requested. Currently |
baseline.sgps |
Boolean vector indicating whether to output baseline SGPs for cohort referenced SGPs. |
outputSGP_SUMMARY.years |
A character vector indicating the year to be used for output file construction for summary tables. |
outputSGP_SUMMARY.content_areas |
A character vector indicating the content areas to be used for output file construction for summary tables. |
outputSGP_INDIVIDUAL.years |
A character vector indicating the year to be used for output file construction for individual level file. |
outputSGP_INDIVIDUAL.content_areas |
A character vector indicating the content areas to be used for output file construction for individual level file. |
outputSGP.anonymize |
A Boolean variable indicating whether to anonymize output files. |
outputSGP.student.groups |
A list of variables to be used for student groups in individual and summary tables. |
outputSGP.directory |
A a file path indicating where to save output files. Defaults to |
outputSGP.translate.names |
A Boolean argument, defaults to TRUE, indicating whether data output should refer to 'names.provided' or 'names.sgp' in @Names slot of supplied SGP object. This argument allows for the the conversion of variable naming conventions from the SGP package back to that used by the state/organization. |
outputSGP.projection.years.for.target |
An integer argument indicating what projection to supply with regard to the number of years projected forward. |
outputSGP.pass.through.variables |
A character vector of variables in @Data that are to be merged with output in RLI output.type. Default is NULL or no. |
Function writes data in multiple formats including .Rdata, .txt (pipe delimited) and zipped versions of .txt.
Damian W. Betebenner [email protected]
abcSGP
, prepareSGP
, analyzeSGP
, combineSGP
, summarizeSGP
## Not run: Demonstration_SGP <- prepareSGP(sgpData_LONG) Demonstration_SGP <- analyzeSGP(Demonstration_SGP) Demonstration_SGP <- combineSGP(Demonstration_SGP) outputSGP(Demonstration_SGP) ## Output current year outputSGP(Demonstration_SGP, output.type="LONG_FINAL_YEAR_Data") ## End(Not run)
## Not run: Demonstration_SGP <- prepareSGP(sgpData_LONG) Demonstration_SGP <- analyzeSGP(Demonstration_SGP) Demonstration_SGP <- combineSGP(Demonstration_SGP) outputSGP(Demonstration_SGP) ## Output current year outputSGP(Demonstration_SGP, output.type="LONG_FINAL_YEAR_Data") ## End(Not run)
Utility function/exemplar used to embed supplied long data into a list object as a keyed data.table. NOTE: This function also serves the purposes of running many checks on the SGP object you
construct to make sure it is up to date and in the best shape possible. If you have an older object that you wish to make sure is up to date with the latest version of the SGP package, running
prepareSGP
on an object is never bad thing to do. See examples for more information.
prepareSGP(data, data_supplementary=NULL, state=NULL, var.names=NULL, create.additional.variables=TRUE, fix.duplicates=NULL, create.achievement.level=TRUE)
prepareSGP(data, data_supplementary=NULL, state=NULL, var.names=NULL, create.additional.variables=TRUE, fix.duplicates=NULL, create.achievement.level=TRUE)
data |
A panel data set in long form or an object of class SGP. See embedded |
data_supplementary |
Supplementary data (e.g., student teacher lookup tables) to be embedded in SGP object in slot @Data_Supplementary. Data must be embedded in a list. Default is no data supplied. |
state |
A two letter acronym indicating the state associated with the data. If not supplied, the function will try to infer what the state is from the data object name supplied. |
var.names |
A list or a data.frame that includes all required columns that do not match the SGP conventions, as well as all secondary columns needed for summarizing and reporting. |
create.additional.variables |
Boolean argument indicating whether prepareSGP should create additional variables often used in analyses. For example, the function can create a variable
|
fix.duplicates |
Argument to control how |
create.achievement.level |
Boolean argument indicating whether prepareSGP should create the ACHIEVEMENT_LEVEL variable if it is missing. Defaults to TRUE. |
Function returns an object of class SGP
. The long data is
in the data
slot.
Adam Van Iwaarden [email protected], Damian W. Betebenner [email protected], and Ben Domingue [email protected]
## Not run: ## prepareSGP is Step 1 of 5 of abcSGP Demonstration_SGP <- prepareSGP(sgpData_LONG) ## Running prepareSGP on an already create SGP object as part of a annual update Demonstration_SGP <- prepareSGP(Demonstration_SGP) ## Running prepareSGP on a long data set without creating addition variables Demonstration_SGP <- prepareSGP(sgpData_LONG, create.additional.variables=FALSE) ## End(Not run)
## Not run: ## prepareSGP is Step 1 of 5 of abcSGP Demonstration_SGP <- prepareSGP(sgpData_LONG) ## Running prepareSGP on an already create SGP object as part of a annual update Demonstration_SGP <- prepareSGP(Demonstration_SGP) ## Running prepareSGP on a long data set without creating addition variables Demonstration_SGP <- prepareSGP(sgpData_LONG, create.additional.variables=FALSE) ## End(Not run)
rliSGP is a wrapper function design to expedite SGP analyses on Renaissance Learning Incorporated (RLI) interim STAR assessments.
rliSGP( sgp_object, additional.data=NULL, state=NULL, content_areas=c("MATHEMATICS", "MATHEMATICS_SPANISH", "READING", "READING_SPANISH", "READING_UNIFIED", "EARLY_LITERACY", "EARLY_LITERACY_SPANISH"), testing.window, eow.or.update="UPDATE", update.save.shell.only=FALSE, configuration.year, sgp.percentiles.baseline=TRUE, sgp.projections.baseline=TRUE, sgp.projections.lagged.baseline=FALSE, sgp.target.scale.scores=TRUE, update.ids=NULL, SGPt=TRUE, simulate.sgps=FALSE, save.intermediate.results=FALSE, coefficient.matrices=NULL, goodness.of.fit.print=FALSE, return.updated.shell=FALSE, fix.duplicates="KEEP.ALL", eow.calculate.sgps=FALSE, score.type="RASCH", cutscore.file.name="Cutscores.csv", get.cohort.data.info=FALSE, use.latest.rliMatrices=TRUE, parallel.config=NULL)
rliSGP( sgp_object, additional.data=NULL, state=NULL, content_areas=c("MATHEMATICS", "MATHEMATICS_SPANISH", "READING", "READING_SPANISH", "READING_UNIFIED", "EARLY_LITERACY", "EARLY_LITERACY_SPANISH"), testing.window, eow.or.update="UPDATE", update.save.shell.only=FALSE, configuration.year, sgp.percentiles.baseline=TRUE, sgp.projections.baseline=TRUE, sgp.projections.lagged.baseline=FALSE, sgp.target.scale.scores=TRUE, update.ids=NULL, SGPt=TRUE, simulate.sgps=FALSE, save.intermediate.results=FALSE, coefficient.matrices=NULL, goodness.of.fit.print=FALSE, return.updated.shell=FALSE, fix.duplicates="KEEP.ALL", eow.calculate.sgps=FALSE, score.type="RASCH", cutscore.file.name="Cutscores.csv", get.cohort.data.info=FALSE, use.latest.rliMatrices=TRUE, parallel.config=NULL)
sgp_object |
An object of class SGP or a |
additional.data |
Current window's data for UPDATE or EOW (end of window) processing. Can be NULL if new data all fed into argument 'sgp_object' as data.frame. |
state |
Abbreviation for STATE/ORGANIZATION being analyzed. Currently only available for 'RLI' or 'RLI_UK'. |
content_areas |
Character vector indicating which content areas |
testing.window |
Argument indicating testing window being analyzed. Either 'FALL', 'WINTER', 'SPRING' indicating what testing window's data is being analyzed. |
eow.or.update |
Argument indicating whether end-of-window or within-window updates are being done. Either 'EOW' (end of window) or 'UPDATE' (within window). |
update.save.shell.only |
Boolean argument indicating whether End of Window processing should only produce/save RLI_SGP_UPDATE_SHELL and bypass coefficient matrix production. |
configuration.year |
Year associated with SGP analyses (configuration year) to be used. |
sgp.percentiles.baseline |
Boolean variable passed to |
sgp.projections.baseline |
Boolean variable passed to |
sgp.projections.lagged.baseline |
Boolean variable passed to |
sgp.target.scale.scores |
Boolean variable passed to |
update.ids |
Argument that allows ID to be updated based upon a supplied two column data frame where the first column represents the ORIGINAL/OLD ID and the second column the NEW ID that is to replace it. NOTE that ID needn't be replaced in either 'sgp_object' nor 'additional.data' that are provided as part of the 'rliSGP' call. Substitution will occur on entire data set before analysis. Default is NULL, no ID replacement is performed. |
SGPt |
Argument indicating whether to perform time dependent SGP (SGPt) analyses. Current default is TRUE based upon transition to SGPt in Summer 2015. |
simulate.sgps |
A Boolean argument indicating whether to calculate SGP standard errors based upon CSEMs provided by either an embedded CSEM-scale score lookup or an embedded variable. Default is FALSE. |
save.intermediate.results |
Boolean variable passed to |
coefficient.matrices |
List of baseline matrices to be used for analyses (overrides what exists in |
goodness.of.fit.print |
Boolean argument passed to |
return.updated.shell |
Boolean argument (defaults to FALSE) indicating whether to return |
fix.duplicates |
Character argument (defaults to 'KEEP.ALL') indicating how to deal with duplicates submitted as part of data for analysis. Setting 'fix.duplicates' to null sets no modification of duplicates. |
eow.calculate.sgps |
Boolean argument passed to |
score.type |
Either |
cutscore.file.name |
Cutscore file name and path for input and creation of RLI Cutscores. Default is |
get.cohort.data.info |
Boolean argument passed to |
use.latest.rliMatrices |
Boolean argument indicating whether to ensure use of latest version of RLImatrices (defaults to TRUE). |
parallel.config |
Argument passed to |
Saves relevant results to disc for use in subsequent analyses.
Damian W. Betebenner [email protected]
## Not run: ####### For Within Window processing testSGP('RLI') ####### For End-of-Window processing ## End(Not run)
## Not run: ####### For Within Window processing testSGP('RLI') ####### For End-of-Window processing ## End(Not run)
outputSGP
) from
a state/organization naming conventions to those used in the SGP packagesetNamesSGP renames a dataset (without copying or returning the data).
setNamesSGP( data, state=NULL)
setNamesSGP( data, state=NULL)
data |
The dataset to be renamed. For example longitudinal data exported
from |
state |
The 'state' for the |
NULL. Simply renames the data. Note that the state
must be included
in the SGPstateData
and have a Variable_Name_Lookup
entry to work.
Adam R. Van Iwaarden [email protected]
## Not run: load("Data/Demonstration_SGP_LONG_Data.Rdata") setNamesSGP(Demonstration_SGP_LONG_Data) ## End(Not run)
## Not run: load("Data/Demonstration_SGP_LONG_Data.Rdata") setNamesSGP(Demonstration_SGP_LONG_Data) ## End(Not run)
The formal S4 class for SGP. This class stores the data object for use with the functions analyzeSGP
, combineSGP
, summarizeSGP
,
and visualizeSGP
. The SGP class contains and organizes all the results associated with SGP analyses. is.SGP
tests for membership for this class.
combines class list
and class NULL
Objects can be created by calls of the form new("SGP", ...)
, but this is not encouraged. To instantiate a new instance of SGP class use the function prepareSGP
instead.
is.SGP(x)
Data
:A data.table including student-level data in a (long) format. For annual testing, each VALID_CASE, CONTENT_AREA, YEAR, ID combination represents a unique case in the data. For instances with multiple tests within a year, each VALID_CASE, CONTENT_AREA, YEAR, ID, WITHIN_YEAR combination represents a unique case in the data. See sgpData_LONG for an exemplar data set
Data_Supplementary
:A list (possibly NULL) providing additional data.tables containing student level multiple-membership lookup tables. For example, sgpData_INSTRUCTOR_NUMBER provides student teacher linkages and can be embedded in this slot using a list that contains it.
Names
:A data.frame with five columns: 'names.provided', 'names.sgp', 'names.type', 'names.info', 'names.output'. This data.frame is used as a lookup table to translate state specific variable names to SGP variable names as well as provide information for summarizeSGP on the types of summary tables to produce.
SGP
:A list including the output from analyzeSGP
Summary
:A list including the output from summarizeSGP
Version
:A list of meta-data including the version of the SGP package used to construct the SGP object and the date the object was created.
Jonathan P. Weeks [email protected], Adam Van Iwaarden [email protected] and Damian W. Betebenner [email protected]
An environment (an object of class environment) containing information on state assessment programs, organized by state. Currently the environment contains achievement level cutscores and labels for the state assessments, assessment name and abbreviation, growth cutscores and labels, information on vertical scaling, conditional standard errors of measurement (CSEMs), knots and boundaries, and state specific configurations currently being used for SGP analyses at the agency (state, district, national) level. The cutscores, in particular, are used to calculate growth-to-standard/projection values. States currently included in the data set are Arizona (AZ), Arkansas (AR), California (CA), Colorado (CO), Connecticut (CT), Georgia (GA), Hawaii (HI), Idaho (ID), Indiana (IN), Kansas (KS), Maine (ME), Massachusetts (MA), Minnesota (MN), Mississippi (MS), Missouri (MO), Nebraska (NE), Nevada (NV), New Hampshire (NH), New Mexico (NM), New Jersey (NJ), New York (NY), Oregon (OR), Rhode Island (RI), South Dakota (SD), Utah (UT), Vermont (VT), Virginia (VA), West Virginia (WV), Wisconsin (WI), Archdioces of Baltimore (AOB), Colorado English Language Assessment (CELA), Demonstration (DEMO), Albuquerque (ABQ), Australia NAPLAN (NAPLAN), Guatemala (GUA), Renaissance Learning Incorporated (RLI), Renaissance Learning Incorporated UK (RLI_UK), and New Haven (NEW_HAVEN).
Damian W. Betebenner [email protected] and Adam Van Iwaarden [email protected]
State assessment data and technical assessment documentation
The formal S4 class for coefficient matrices produced from the studentGrowthPercentiles
function. This class stores the B-spline knots and boundaries used by the coefficient matrix object for the production of student growth percentiles and projections.
This class contains the S3 matrix
class, inheriting its methods. The slot Knots
should be one or more lists of numeric vector(s) used in the internal call
to bs
, which generates a B-spline basis matrix from student scores. There are typically with 4 values for the knots. Similarly, Boundaries
are used in bs
for the
Boundary.knots
argument. This is always two values which are at or slightly beyond the lowest and highest observed student scores. Content_Areas
and
Grade_Progression
provide information about the data (sub)set used to produce the matrix.
Objects can be created by calls of the form new("splineMatrix", ...)
, but this is not encouraged. Previously produced coefficient matrices MUST be bound to the IDENTICAL knots and boundaries used to create them. Use the function studentGrowthPercentiles
instead.
.Data
:A coefficient matrix derived from studentGrowthPercentiles
.
Knots
:A list(s) of numeric values used as the knots
to generate the B-spline basis matrix in studentGrowthPercentiles
.
Boundaries
:A list(s) of numeric values used as the Boundary.knots
to generate the B-spline basis matrix in studentGrowthPercentiles
.
Content_Areas
:A list of time dependent content area names included in the data used to produce the coefficient matrix.
Grade_Progression
:A list of the time dependent grades included in the data used to produce matrices.
Time
:A list of the Times (e.g., years) measurements occurred included in the data used to produce matrices.
Time_Lags
:A list of the time lags/differences between Time (e.g., years) included in the data used to produce matrices.
Version
:A list including the version of the SGP package used to construct the splineMatrix object and the date the object was created.
Adam Van Iwaarden [email protected], Ben Domingue [email protected] and Damian W. Betebenner [email protected]
Function to calculate student growth percentiles using large scale assessment data.
Outputs growth percentiles for each student and supplies various options as function arguments.
Results from this function are utilized to calculate percentile growth projections/trajectories
using the studentGrowthProjections
function.
studentGrowthPercentiles(panel.data, sgp.labels, panel.data.vnames=NULL, additional.vnames.to.return=NULL, grade.progression, content_area.progression, year.progression, year_lags.progression, num.prior, max.order.for.percentile=NULL, return.additional.max.order.sgp=NULL, subset.grade, percentile.cuts, growth.levels, use.my.knots.boundaries, use.my.coefficient.matrices, calculate.confidence.intervals, print.other.gp=FALSE, print.sgp.order=FALSE, calculate.sgps=TRUE, rq.method="br", rq.method.for.large.n="fn", max.n.for.coefficient.matrices=NULL, knot.cut.percentiles=c(0.2,0.4,0.6,0.8), knots.boundaries.by.panel=FALSE, exact.grade.progression.sequence=FALSE, drop.nonsequential.grade.progression.variables=TRUE, convert.0and100=TRUE, sgp.quantiles="Percentiles", sgp.quantiles.labels=NULL, sgp.loss.hoss.adjustment=NULL, sgp.cohort.size=NULL, sgp.less.than.sgp.cohort.size.return=NULL, sgp.test.cohort.size=NULL, percuts.digits=0L, isotonize=TRUE, convert.using.loss.hoss=TRUE, goodness.of.fit=TRUE, goodness.of.fit.minimum.n=NULL, goodness.of.fit.output.format="GROB", return.prior.scale.score=TRUE, return.prior.scale.score.standardized=TRUE, return.norm.group.identifier=TRUE, return.norm.group.scale.scores=NULL, return.norm.group.dates=NULL, return.norm.group.preference=NULL, return.panel.data=identical(parent.frame(), .GlobalEnv), print.time.taken=TRUE, parallel.config=NULL, calculate.simex=NULL, sgp.percentiles.set.seed=314159, sgp.percentiles.equated=NULL, SGPt=NULL, SGPt.max.time=NULL, verbose.output=FALSE)
studentGrowthPercentiles(panel.data, sgp.labels, panel.data.vnames=NULL, additional.vnames.to.return=NULL, grade.progression, content_area.progression, year.progression, year_lags.progression, num.prior, max.order.for.percentile=NULL, return.additional.max.order.sgp=NULL, subset.grade, percentile.cuts, growth.levels, use.my.knots.boundaries, use.my.coefficient.matrices, calculate.confidence.intervals, print.other.gp=FALSE, print.sgp.order=FALSE, calculate.sgps=TRUE, rq.method="br", rq.method.for.large.n="fn", max.n.for.coefficient.matrices=NULL, knot.cut.percentiles=c(0.2,0.4,0.6,0.8), knots.boundaries.by.panel=FALSE, exact.grade.progression.sequence=FALSE, drop.nonsequential.grade.progression.variables=TRUE, convert.0and100=TRUE, sgp.quantiles="Percentiles", sgp.quantiles.labels=NULL, sgp.loss.hoss.adjustment=NULL, sgp.cohort.size=NULL, sgp.less.than.sgp.cohort.size.return=NULL, sgp.test.cohort.size=NULL, percuts.digits=0L, isotonize=TRUE, convert.using.loss.hoss=TRUE, goodness.of.fit=TRUE, goodness.of.fit.minimum.n=NULL, goodness.of.fit.output.format="GROB", return.prior.scale.score=TRUE, return.prior.scale.score.standardized=TRUE, return.norm.group.identifier=TRUE, return.norm.group.scale.scores=NULL, return.norm.group.dates=NULL, return.norm.group.preference=NULL, return.panel.data=identical(parent.frame(), .GlobalEnv), print.time.taken=TRUE, parallel.config=NULL, calculate.simex=NULL, sgp.percentiles.set.seed=314159, sgp.percentiles.equated=NULL, SGPt=NULL, SGPt.max.time=NULL, verbose.output=FALSE)
panel.data |
REQUIRED. Object of class list, data.frame, or matrix containing longitudinal student data in wide format. If supplied as part of a list, data should be
contained in |
sgp.labels |
REQUIRED. A list, |
panel.data.vnames |
Vector of variables to use in student growth percentile calculations. If not specified, function attempts to use all available variables. |
additional.vnames.to.return |
A list of the form list(VARIABLE_NAME_SUPPLIED=VARIABLE_NAME_TO_BE_RETURNED) indicating data to be returned with results
from |
grade.progression |
Preferred argument to specify a student grade/time progression in the data. For example, |
content_area.progression |
Character vector of content area names of same length as grade.progression to be provided if not all identical to 'my.subject' in sgp.labels list. Vector will be used to populate the @Content_Areas slot of the splineMatrix class coefficient matrices. If missing, 'sgp.labels$my.subject' is repeated in a vector length equal to grade.progression. |
year.progression |
Character vector of years associated with grade and content area progressions. If missing then the year.progression is assumed to end in 'my.year' provided in sgp.labels and be of the same length as grade.progression. Vector will be used to populate the @Years slot of the splineMatrix class coefficient matrices. |
year_lags.progression |
A numeric vector indicating the time lags/span between observations in the columns supplied to |
num.prior |
Number of prior scores one wishes to use in the analysis. Defaults to |
max.order.for.percentile |
A positive integer indicating the maximum order for percentiles desired. Similar limiting of number of priors used can be accomplished using the |
return.additional.max.order.sgp |
A positive integer (defaults to NULL) indicating the order of an additional SGP to be returned: |
subset.grade |
Student grade level for sub-setting. If the data fed into the function contains multiple
grades, setting |
percentile.cuts |
Additional percentile cuts (supplied as a vector) between 1 and 99 associated with each student's conditional distribution. Default is to provide NO growth percentile cuts (scale scores associated with those growth percentiles) for each student. |
growth.levels |
A two letter state acronym or a list of the form |
use.my.knots.boundaries |
A list of the form |
use.my.coefficient.matrices |
A list of the form |
calculate.confidence.intervals |
A character vector providing either a state acronym or a variable name from the supplied panel data. If a state acronym, CSEM tables from the embedded
|
print.other.gp |
Boolean argument (defaults to FALSE) indicating whether growth percentiles of all orders should be returned. The default returns only the highest order growth percentile for each student. |
print.sgp.order |
Boolean argument (defaults to FALSE) indicating whether the order of the growth percentile should be provided in addition to the SGP itself. |
calculate.sgps |
Boolean argument (defaults to TRUE) indicating whether student growth percentiles should be calculated following coefficient matrix calculation. |
rq.method |
Argument defining the estimation method used in the quantile regression calculations. The default is the |
rq.method.for.large.n |
Argument defining the estimation method used in the quantile regression calculations when norm group cohort size exceeds 300,000 students. The default is the |
max.n.for.coefficient.matrices |
Argument the defines a size threshold above which a subset of data is taken with a number of cases equal to the sgp.subset.size.threshold argument. Default is NULL, no subset is taken. |
knot.cut.percentiles |
Argument that specifies the quantiles to be used for calculation of B-spline knots. Default is to place knots at the 0.2, 0.4, 0.6, and 0.8 quantiles. |
knots.boundaries.by.panel |
Boolean argument (defaults to FALSE) indicating whether knots and boundaries should be calculated by panel in supplied panel data instead of aggregating across panel. If panels are on different scales, then different knots and boundaries may be required to accommodate quantile regression analyses. |
exact.grade.progression.sequence |
Boolean argument indicating whether the grade.progression supplied is used exactly (TRUE) as supplied or whether lower order analyses are run as part of the whole analysis (FALSE–the default). |
drop.nonsequential.grade.progression.variables |
Boolean argument indicating whether to drop variables that do not occur with a non-sequential grade progress. For example, if the grade progression 7, 8, 10 is provided, the penultimate variable in |
convert.0and100 |
Boolean argument (defaults to TRUE) indicating whether conversion of growth percentiles of 0 and 100 to growth percentiles of 1 and 99, respectively, occurs. The default produces growth percentiles ranging from 1 to 99. |
sgp.quantiles |
Argument to specify quantiles for quantile regression estimation. Default is Percentiles. User can additionally submit a vector of quantiles (between 0 and 1). Goodness of fit output only available currently for PERCENTILES. |
sgp.quantiles.labels |
Argument to specify integer labels associated with provided 'sgp.quantiles'. Integer labels must a vector of length 1 longer than the length of 'sgp.quantiles'. |
sgp.loss.hoss.adjustment |
Argument to control whether SGP is calculated using which.max for values associated with the hoss embedded in SGPstateData. Providing two letter state acronym utilizes this adjustment whereas supply NULL (the default) uses no adjustment. |
sgp.cohort.size |
Argument to control the minimum cohort size used to calculate SGPs and associated coefficient matrices. NULL (the default) uses no restriction. If not NULL, argument should be an integer value. |
sgp.less.than.sgp.cohort.size.return |
If non-NULL, indicates whether a data set should be returned with the indicated character string in place of the SGP
that would be calculated. If set to TRUE, then character string: |
sgp.test.cohort.size |
Integer indicating the maximum number of students sampled from the full cohort to use in the calculation of student growth percentiles. Intended to be used as a test of the desired analyses to be run. The default, NULL, uses no restrictions (no tests are performed, and analyses use the entire cohort of students). |
percuts.digits |
Argument specifying how many digits (defaults to 2) to print percentile cuts (if asked for) with. |
isotonize |
Boolean argument (defaults to TRUE) indicating whether quantile regression results are isotonized to prevent quantile crossing following the methods derived by Chernozhukov, Fernandez-Val and Glichon (2010). |
convert.using.loss.hoss |
Boolean argument (defaults to TRUE) indicating whether requested percentile cuts are adjusted using the lowest obtainable scale score (LOSS) and highest obtainable scale score (HOSS). Those percentile cuts above the HOSS are replaced with the HOSS and those percentile cuts below the LOSS are replaced with the LOSS. The LOSS and HOSS are obtained from the loss and hoss calculated with the knots and boundaries used for spline calculations. |
goodness.of.fit |
Boolean argument (defaults to TRUE) indicating whether to produce goodness of fit results associated with produced student growth percentiles.
Goodness of fit results are grid.grobs stored in |
goodness.of.fit.minimum.n |
Integer argument (defaults to 250) indicating the minimum number of observations necessary before goodness of fit plots are constructed." |
goodness.of.fit.output.format |
Character argument (defaults to graphical object 'GROB') indicating output format for goodness of fit plots. Options include: 'GROB', 'PDF', 'PNG', 'SVG'. |
return.prior.scale.score |
Boolean argument (defaults to TRUE) indicating whether to include the prior scale score in the SGP data output. Useful for examining relationship between prior achievement and student growth. |
return.prior.scale.score.standardized |
Boolean argument (defaults to TRUE) indicating whether to include the standardized prior scale score in the SGP data output. Useful for examining relationship between prior achievement and student growth. |
return.norm.group.identifier |
Boolean argument (defaults to TRUE) indicating whether to include the content areas and years that form students' specific norm group in the SGP data output. |
return.norm.group.scale.scores |
Boolean argument (defaults to NULL) indicating whether to return a semi-colon separated character vector of the scores associated with the SGP_NORM_GROUP to which the student belongs. |
return.norm.group.dates |
Boolean argument or character string (defaults to NULL) indicating whether to return a semi-colon separated character vector of the dates associated with time dependent SGPt calculations. If TRUE is supplied, 'DATE' is the assumed name for the date variable. |
return.norm.group.preference |
A single numeric value (defaults to NULL). When 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 |
return.panel.data |
Boolean argument indicating whether to return the original data provided in |
print.time.taken |
Boolean argument (defaults to TRUE) indicating whether to print message indicating information on |
parallel.config |
parallel configuration argument allowing for parallel analysis by 'tau'. Defaults to NULL. |
calculate.simex |
A character state acronym or list including state/csem variable, csem.data.vnames, csem.loss.hoss, simulation.iterations, simulation.sample.size, lambda and extrapolation method.
Returns both SIMEX adjusted SGP ( |
sgp.percentiles.set.seed |
An integer (or NULL) argument indicating whether to set.seed to make analyses fully reproducible. To turn off, set argument to NULL. Default is 314159. |
sgp.percentiles.equated |
An object containing information (linkages, year, ...) on equating done for calculating student growth percentiles. |
SGPt |
An argument supplied to implement time-dependent SGP analyses (SGPt). Default is NULL giving standard, non-time dependent argument. If set to TRUE, the function assumes the variables 'TIME' and 'TIME_LAG' are supplied as part of the panel.data. To specify other names, supply a list of the form: list(TIME='my_time_name', TIME_LAG='my_time_lag_name'), substituting your variable names. |
SGPt.max.time |
Boolean argument (defaults to NULL/FALSE) indicating whether cuts/trajectories should be calculated based upon the maximum Time value in the matrices. Such cuts are sometimes used to provide within window trajectories. |
verbose.output |
A Boolean argument indicating whether the function should output verbose diagnostic messages. |
Typical use of the function is to submit a data frame to the function containing records of all students across all grades, allowing the function to subset
out specific grade progressions using grade.progression
. Additional uses include using pre-calculated results to recalculate SGPs for baseline referencing.
studentGrowthPercentiles
examples provide code for use in analyzing assessment data across multiple grades.
Function returns an object of class list containing objects: Coefficient_Matrices, Goodness_of_Fit, Knots_Boundaries, Panel_Data, SGPercentiles, Simulated_SGPs.
Damian W. Betebenner [email protected] and Adam Van Iwaarden [email protected]
Betebenner, D. W. (2008). Toward a normative understanding of student growth. In K. E. Ryan & L. A. Shepard (Eds.), The Future of Test Based Accountability (pp. 155-170). New York: Routledge.
Betebenner, D. W. (2009). Norm- and criterion-referenced student growth. Educational Measurement: Issues and Practice, 28(4):42-51.
Betebenner, D. W. (2012). Growth, standards, and accountability. In G. J. Cizek, Setting Performance Standards: Foundations, Methods & Innovations. 2nd Edition (pp. 439-450). New York: Routledge.
Castellano, K. E. & McCaffrey, D. F. (2017). The Accuracy of Aggregate Student Growth Percentiles as Indicators of Educator Performance. Educational Measurement: Issues and Practice, 36(1):14-27.
Chernozhukov, V., Fernandez-Val, I. and Galichon, A. (2010), Quantile and Probability Curves Without Crossing. Econometrica, 78: 1093-1125.
Koenker, R. (2005). Quantile regression. Cambridge: Cambridge University Press.
Shang, Y., VanIwaarden, A., & Betebenner, D. W. (2015). Covariate measurement error correction for Student Growth Percentiles using the SIMEX method. Educational Measurement: Issues and Practice, 34(1):4-14.
studentGrowthProjections
, sgpData
, sgpData_LONG
, SGPstateData
## Not run: ## Calculate 4th grade student growth percentiles using included sgpData require(SGPdata) sgp_g4 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), subset.grade=4, num.prior=1) ## NOTE: "grade.progression" can be used in place of "subset.grade" and "num.prior" sgp_g4_v2 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), grade.progression=c(3,4)) identical(sgp_g4$SGPercentiles, sgp_g4_v2$SGPercentiles) ## Established state Knots and Boundaries are available in the supplied SGPstateData ## file and used by supplying the appropriate two letter state acronym. sgp_g4_DEMO <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), use.my.knots.boundaries="DEMO", grade.progression=c(3,4)) ## Sample code for running non-sequential grade progression analysis. sgp_g8_DEMO <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), use.my.knots.boundaries="DEMO", grade.progression=c(5,6,8)) ## NOTE: Unless specified with 'goodness.of.fit.output.format' ## Goodness of Fit results are stored as graphical objects in the ## Goodness_of_Fit slot. To view or save (using any R output device) try: ## Load 'grid' package to access grid.draw function require(grid) grid.draw(sgp_g4$Goodness_of_Fit$READING.2015[[1]][["PLOT"]]) require(grid) pdf(file="Grade_4_Reading_2015_GOF.pdf", width=8.5, height=8) grid.draw(sgp_g4$Goodness_of_Fit$READING.2015[[1]][["PLOT"]]) dev.off() # Other grades sgp_g5 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), grade.progression=3:5) sgp_g6 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), grade.progression=3:6) sgp_g7 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), grade.progression=3:7) sgp_g8 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), grade.progression=4:8) ## All output of studentGrowthPercentiles (e.g., coefficient matrices) is contained ## in the object. See, for example, names(sgp_g8), for all included objects. ## Results are stored in the slot SGPercentiles. # Combine all results sgp_all <- rbind( sgp_g4$SGPercentiles$READING.2015, sgp_g5$SGPercentiles$READING.2015, sgp_g6$SGPercentiles$READING.2015, sgp_g7$SGPercentiles$READING.2015, sgp_g8$SGPercentiles$READING.2015) # Save SGP results to .csv file write.csv(sgp_all, file="sgp_all.csv", row.names=FALSE, quote=FALSE, na="") ## NOTE: studentGrowthPercentiles ADDs results to the current SGP object. ## This allows one to "recycle" the object for multiple grades and subjects as desired. # Loop to calculate all SGPs for all grades without percentile cuts # but with growth levels and goodness of fit plots exported automatically as PDFs, PNGs, SVGs, # and DECILE_TABLES (10x10 table at bottom left of goodness of fit plots) my.grade.sequences <- list(3:4, 3:5, 3:6, 3:7, 4:8) my.sgpData <- list(Panel_Data=sgpData) ### Put sgpData into Panel_Data slot for (i in seq_along(my.grade.sequences)) { my.sgpData <- studentGrowthPercentiles(panel.data=my.sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), growth.levels="DEMO", goodness.of.fit="DEMO", goodness.of.fit.output.format=c("PDF", "PNG", "SVG", "DECILE_TABLES"), grade.progression=my.grade.sequences[[i]]) } # Save Student Growth Percentiles results to a .csv file: write.csv(my.sgpData$SGPercentiles$READING.2015, file="2015_Reading_SGPercentiles.csv", row.names=FALSE, quote=FALSE, na="") ## Loop to calculate all SGPs for all grades using 2010 to 2013 data my.grade.sequences <- list(3:4, 3:5, 3:6, 3:7, 4:8) for (i in seq_along(my.grade.sequences)) { my.sgpData_2009 <- studentGrowthPercentiles(panel.data=my.sgpData, panel.data.vnames=c("ID", "GRADE_2010", "GRADE_2011", "GRADE_2012", "GRADE_2013", "SS_2010", "SS_2011", "SS_2012", "SS_2013"), sgp.labels=list(my.year=2013, my.subject="Reading"), grade.progression=my.grade.sequences[[i]]) } ## Loop to calculate all SGPs for all grades WITH 80 my.grade.sequences <- list(3:4, 3:5, 3:6, 3:7, 4:8) for (i in seq_along(my.grade.sequences)) { my.sgpData <- studentGrowthPercentiles(panel.data=my.sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), calculate.confidence.intervals=list(state="DEMO", confidence.quantiles=c(0.1, 0.9), simulation.iterations=100, distribution="Normal", round=1), grade.progression=my.grade.sequences[[i]]) } ### Example showing how to use pre-calculated coefficient ### matrices to calculate student growth percentiles my.grade.sequences <- list(3:4, 3:5, 3:6, 3:7, 4:8) my.sgpData <- list(Panel_Data=sgpData) ### Put sgpData into Panel_Data slot for (i in seq_along(my.grade.sequences)) { my.sgpData <- studentGrowthPercentiles(panel.data=my.sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), growth.levels="DEMO", grade.progression=my.grade.sequences[[i]]) } percentiles.1st.run <- my.sgpData$SGPercentiles$READING.2015 ### my.sgpData has as full set of coefficient matrices for Reading, 2015. To view these names(my.sgpData$Coefficient_Matrices$READING.2015) ## Let's NULL out the SGPercentiles slot and recreate the percentiles ## using the embedded coefficient matrices my.sgpData$SGPercentiles$READING.2015 <- NULL for (i in seq_along(my.grade.sequences)) { my.sgpData <- studentGrowthPercentiles(panel.data=my.sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), use.my.knots.boundaries=list(my.year=2015, my.subject="Reading"), use.my.coefficient.matrices=list(my.year=2015, my.subject="Reading"), growth.levels="DEMO", grade.progression=my.grade.sequences[[i]]) } percentiles.2nd.run <- my.sgpData$SGPercentiles$READING.2015 identical(percentiles.1st.run, percentiles.2nd.run) ## End(Not run)
## Not run: ## Calculate 4th grade student growth percentiles using included sgpData require(SGPdata) sgp_g4 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), subset.grade=4, num.prior=1) ## NOTE: "grade.progression" can be used in place of "subset.grade" and "num.prior" sgp_g4_v2 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), grade.progression=c(3,4)) identical(sgp_g4$SGPercentiles, sgp_g4_v2$SGPercentiles) ## Established state Knots and Boundaries are available in the supplied SGPstateData ## file and used by supplying the appropriate two letter state acronym. sgp_g4_DEMO <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), use.my.knots.boundaries="DEMO", grade.progression=c(3,4)) ## Sample code for running non-sequential grade progression analysis. sgp_g8_DEMO <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), use.my.knots.boundaries="DEMO", grade.progression=c(5,6,8)) ## NOTE: Unless specified with 'goodness.of.fit.output.format' ## Goodness of Fit results are stored as graphical objects in the ## Goodness_of_Fit slot. To view or save (using any R output device) try: ## Load 'grid' package to access grid.draw function require(grid) grid.draw(sgp_g4$Goodness_of_Fit$READING.2015[[1]][["PLOT"]]) require(grid) pdf(file="Grade_4_Reading_2015_GOF.pdf", width=8.5, height=8) grid.draw(sgp_g4$Goodness_of_Fit$READING.2015[[1]][["PLOT"]]) dev.off() # Other grades sgp_g5 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), grade.progression=3:5) sgp_g6 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), grade.progression=3:6) sgp_g7 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), grade.progression=3:7) sgp_g8 <- studentGrowthPercentiles( panel.data=sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), percentile.cuts=c(1,35,65,99), grade.progression=4:8) ## All output of studentGrowthPercentiles (e.g., coefficient matrices) is contained ## in the object. See, for example, names(sgp_g8), for all included objects. ## Results are stored in the slot SGPercentiles. # Combine all results sgp_all <- rbind( sgp_g4$SGPercentiles$READING.2015, sgp_g5$SGPercentiles$READING.2015, sgp_g6$SGPercentiles$READING.2015, sgp_g7$SGPercentiles$READING.2015, sgp_g8$SGPercentiles$READING.2015) # Save SGP results to .csv file write.csv(sgp_all, file="sgp_all.csv", row.names=FALSE, quote=FALSE, na="") ## NOTE: studentGrowthPercentiles ADDs results to the current SGP object. ## This allows one to "recycle" the object for multiple grades and subjects as desired. # Loop to calculate all SGPs for all grades without percentile cuts # but with growth levels and goodness of fit plots exported automatically as PDFs, PNGs, SVGs, # and DECILE_TABLES (10x10 table at bottom left of goodness of fit plots) my.grade.sequences <- list(3:4, 3:5, 3:6, 3:7, 4:8) my.sgpData <- list(Panel_Data=sgpData) ### Put sgpData into Panel_Data slot for (i in seq_along(my.grade.sequences)) { my.sgpData <- studentGrowthPercentiles(panel.data=my.sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), growth.levels="DEMO", goodness.of.fit="DEMO", goodness.of.fit.output.format=c("PDF", "PNG", "SVG", "DECILE_TABLES"), grade.progression=my.grade.sequences[[i]]) } # Save Student Growth Percentiles results to a .csv file: write.csv(my.sgpData$SGPercentiles$READING.2015, file="2015_Reading_SGPercentiles.csv", row.names=FALSE, quote=FALSE, na="") ## Loop to calculate all SGPs for all grades using 2010 to 2013 data my.grade.sequences <- list(3:4, 3:5, 3:6, 3:7, 4:8) for (i in seq_along(my.grade.sequences)) { my.sgpData_2009 <- studentGrowthPercentiles(panel.data=my.sgpData, panel.data.vnames=c("ID", "GRADE_2010", "GRADE_2011", "GRADE_2012", "GRADE_2013", "SS_2010", "SS_2011", "SS_2012", "SS_2013"), sgp.labels=list(my.year=2013, my.subject="Reading"), grade.progression=my.grade.sequences[[i]]) } ## Loop to calculate all SGPs for all grades WITH 80 my.grade.sequences <- list(3:4, 3:5, 3:6, 3:7, 4:8) for (i in seq_along(my.grade.sequences)) { my.sgpData <- studentGrowthPercentiles(panel.data=my.sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), calculate.confidence.intervals=list(state="DEMO", confidence.quantiles=c(0.1, 0.9), simulation.iterations=100, distribution="Normal", round=1), grade.progression=my.grade.sequences[[i]]) } ### Example showing how to use pre-calculated coefficient ### matrices to calculate student growth percentiles my.grade.sequences <- list(3:4, 3:5, 3:6, 3:7, 4:8) my.sgpData <- list(Panel_Data=sgpData) ### Put sgpData into Panel_Data slot for (i in seq_along(my.grade.sequences)) { my.sgpData <- studentGrowthPercentiles(panel.data=my.sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), growth.levels="DEMO", grade.progression=my.grade.sequences[[i]]) } percentiles.1st.run <- my.sgpData$SGPercentiles$READING.2015 ### my.sgpData has as full set of coefficient matrices for Reading, 2015. To view these names(my.sgpData$Coefficient_Matrices$READING.2015) ## Let's NULL out the SGPercentiles slot and recreate the percentiles ## using the embedded coefficient matrices my.sgpData$SGPercentiles$READING.2015 <- NULL for (i in seq_along(my.grade.sequences)) { my.sgpData <- studentGrowthPercentiles(panel.data=my.sgpData, sgp.labels=list(my.year=2015, my.subject="Reading"), use.my.knots.boundaries=list(my.year=2015, my.subject="Reading"), use.my.coefficient.matrices=list(my.year=2015, my.subject="Reading"), growth.levels="DEMO", grade.progression=my.grade.sequences[[i]]) } percentiles.2nd.run <- my.sgpData$SGPercentiles$READING.2015 identical(percentiles.1st.run, percentiles.2nd.run) ## End(Not run)
Function used to produce individual student growth and achievement chart (an achievement time lines indicating student growth) based upon output from student growth percentile
and student growth projection analyses. Function is integrated with SGPstateData
to accommodate state specific scales and nomenclature including performance
level names. See Betebenner (2012) for discussion
studentGrowthPlot(Scale_Scores, Plotting_Scale_Scores, Achievement_Levels, SGP, SGP_Levels, Grades, Content_Areas, Cuts, Plotting_Cuts, SGP_Targets, SGP_Scale_Score_Targets, Plotting_SGP_Scale_Score_Targets, Cutscores, Years, Report_Parameters)
studentGrowthPlot(Scale_Scores, Plotting_Scale_Scores, Achievement_Levels, SGP, SGP_Levels, Grades, Content_Areas, Cuts, Plotting_Cuts, SGP_Targets, SGP_Scale_Score_Targets, Plotting_SGP_Scale_Score_Targets, Cutscores, Years, Report_Parameters)
Scale_Scores |
A vector of historical scale scores. |
Plotting_Scale_Scores |
A vector of scale scores used as the vertical coordinates for plotting. If supplied, |
Achievement_Levels |
A vector of historical performance levels. |
SGP |
A vector of historical student growth percentiles. |
SGP_Levels |
A vector of historical growth (SGP) levels (e.g., low, typical, high). |
Grades |
A vector of historical grades student was tested in. |
Content_Areas |
A vector of historical content areas student was tested in. |
Cuts |
A list of cuts scores for NY1, NY2, and NY3. |
Plotting_Cuts |
A list of plotting cuts scores for NY1, NY2, and NY3. Plotting cuts are identical to Cuts for states with a vertical scale and are transformed for non-vertical scale states. |
SGP_Targets |
A list of CUKU, CUKU_Current, MUSU, MUSU_Current targets. |
SGP_Scale_Score_Targets |
A list of CUKU, CUKU_Current, MUSU, MUSU_Current scale score targets. |
Plotting_SGP_Scale_Score_Targets |
A list of CUKU, CUKU_Current, MUSU, MUSU_Current scale score targets for plotting that are transformed when no vertical scale exists. |
Cutscores |
A data.frame of long formatted achievement level cutscores. |
Years |
A vector of years corresponding to supplied scale scores. |
Report_Parameters |
A list containing arguments: |
Function currently used as part of SGP package to produce student growth charts for states. Function is usually called from the higher level function visualizeSGP
which
allows for the creation of a student growth plot catalog for each school with student reports organized by grade and student name.
Returns a student growth plot graphical object that is usually exported in either PDF or PNG format.
Damian W. Betebenner [email protected]
Betebenner, D. W. (2012). Growth, standards, and accountability. In G. J. Cizek, Setting Performance Standards: Foundations, Methods & Innovations. 2nd Edition (pp. 439-450). New York: Routledge.
Function includes five "styles" associated with studentGrowthPlot
to create PDF student growth plots depicting the growth and achievement for an individual
student over time. The five styles display one to five content area student growth plots on a single page. The one, two, and three content area plots are rendered on 8.5 by 11
PDFs and the four and five content area plots are rendered on 11 by 17 PDFs. These charts are currently being used in multiple states to report student growth results. This function
is called by visualizeSGP
to generate individual student reports. This function may expand in the future to incorporate other possible individual student reports.
studentGrowthPlot_Styles( sgPlot.data, sgPlot.sgp_object, sgPlot.cutscores, state, last.year, content_areas, districts, schools, reports.by.student, reports.by.instructor, reports.by.school, sgPlot.years, sgPlot.demo.report, sgPlot.folder, sgPlot.folder.names, sgPlot.anonymize, sgPlot.front.page, sgPlot.header.footer.color, sgPlot.fan, sgPlot.sgp.targets, sgPlot.cleanup, sgPlot.baseline, sgPlot.sgp.targets.timeframe, sgPlot.zip, sgPlot.output.format, sgPlot.linkages)
studentGrowthPlot_Styles( sgPlot.data, sgPlot.sgp_object, sgPlot.cutscores, state, last.year, content_areas, districts, schools, reports.by.student, reports.by.instructor, reports.by.school, sgPlot.years, sgPlot.demo.report, sgPlot.folder, sgPlot.folder.names, sgPlot.anonymize, sgPlot.front.page, sgPlot.header.footer.color, sgPlot.fan, sgPlot.sgp.targets, sgPlot.cleanup, sgPlot.baseline, sgPlot.sgp.targets.timeframe, sgPlot.zip, sgPlot.output.format, sgPlot.linkages)
sgPlot.data |
Wide formatted individual student report data used to produce student growth plots. To view structure of wide formatted data, utilize the
|
sgPlot.sgp_object |
SGP object containing coefficient matrices and knots and boundaries for percentile trajectory calculations associated with JSON output. |
sgPlot.cutscores |
List of cutscores, possibly transformed, for plotting studentGrowthPlots |
state |
Acronym indicating state associated with the summaries for access to assessment program information embedded in |
last.year |
Argument indicating the final year represented in the student growth plots. |
content_areas |
Argument providing the content areas depicted in the student growth plots. |
districts |
A vector of district numbers indicating which districts student growth plots should be produced for. |
schools |
A vector of school numbers indicating which schools student growth plots should be produce for. |
reports.by.student |
A Boolean variable passed to |
reports.by.instructor |
A Boolean variable passed to |
reports.by.school |
A Boolean variable passed to |
sgPlot.years |
A vector of all years over which student growth plots are being produced. |
sgPlot.demo.report |
A Boolean argument indicating whether a demonstration report catalog (with anonymized individual, school, and district names) is to be produced. |
sgPlot.folder |
A character argument specifying the folder into which the student growth reports will be placed. |
sgPlot.folder.names |
Either |
sgPlot.anonymize |
A Boolean argument indicating whether individual, school, and district names should be anonymized. |
sgPlot.front.page |
A character vector indicating the file, the the base directory, that should be used as the front page for the student growth plots. |
sgPlot.header.footer.color |
A color (as a character) specifying the header/footer color of the report. |
sgPlot.fan |
A Boolean argument indicating whether the projection fan indicating growth rates necessary to reach 1 years targets be displayed. |
sgPlot.sgp.targets |
A Boolean argument indicating whether the sgp targets are to be displayed. |
sgPlot.cleanup |
A Boolean argument indicating whether to cleanup/remove files produced as part of pdfLaTeX build. |
sgPlot.baseline |
A Boolean argument indicating whether to use baseline referenced student growth percentiles in student growth plots. |
sgPlot.sgp.targets.timeframe |
An integer argument indicating the number of years forward associated with SGP targets. |
sgPlot.zip |
A Boolean argument indicating whether to school folders. |
sgPlot.output.format |
Argument indicating the desired type of output format for student growth plots. Either 'PDF', 'PNG', or 'PDF_PIECES'. |
sgPlot.linkages |
Argument passing linkage information (defaults to NULL) associated with assessment scale transition. |
studentGrowthPlot_Styles
is a utility function containing five templates for displaying studentGrowthPlot
s. The templates display two or three
content areas depending upon the availability of test data for the state. This function will expand in the future to allow for other types of individual growth and
achievement reports.
Function produces numerous (potentially hundreds of thousands of) PDF/PNG student growth plots.
Damian W. Betebenner [email protected] and Adam Van Iwaarden [email protected]
Betebenner, D. W. (2012). Growth, standards, and accountability. In G. J. Cizek, Setting Performance Standards: Foundations, Methods & Innovations. 2nd Edition (pp. 439-450). New York: Routledge.
Function to calculate percentile growth projections/trajectories using large scale assessment data and results derived from student growth percentile calculation. Function can produce percentile growth trajectories, as well as growth percentiles, sufficient for each student to reach a set of predefined scale score cut.
studentGrowthProjections(panel.data, sgp.labels, grade.progression, content_area.progression=NULL, year_lags.progression=NULL, grade.projection.sequence=NULL, content_area.projection.sequence=NULL, year_lags.projection.sequence=NULL, max.forward.progression.years=NULL, max.forward.progression.grade=NULL, max.order.for.progression, use.my.knots.boundaries, use.my.coefficient.matrices, panel.data.vnames, achievement.level.prior.vname=NULL, performance.level.cutscores, calculate.sgps=TRUE, convert.0and100=TRUE, trajectories.chunk.size=50000L, sgp.projections.equated=NULL, projection.unit="YEAR", projection.unit.label=NULL, percentile.trajectory.values=NULL, percentile.trajectory.values.max.forward.progression.years=NULL, return.percentile.trajectory.values=NULL, return.projection.group.identifier=NULL, return.projection.group.scale.scores=NULL, return.projection.group.dates=NULL, isotonize=TRUE, lag.increment=0L, lag.increment.label=NULL, sgp.exact.grade.progression=FALSE, projcuts.digits=NULL, sgp.projections.use.only.complete.matrices=NULL, SGPt=NULL, print.time.taken=TRUE)
studentGrowthProjections(panel.data, sgp.labels, grade.progression, content_area.progression=NULL, year_lags.progression=NULL, grade.projection.sequence=NULL, content_area.projection.sequence=NULL, year_lags.projection.sequence=NULL, max.forward.progression.years=NULL, max.forward.progression.grade=NULL, max.order.for.progression, use.my.knots.boundaries, use.my.coefficient.matrices, panel.data.vnames, achievement.level.prior.vname=NULL, performance.level.cutscores, calculate.sgps=TRUE, convert.0and100=TRUE, trajectories.chunk.size=50000L, sgp.projections.equated=NULL, projection.unit="YEAR", projection.unit.label=NULL, percentile.trajectory.values=NULL, percentile.trajectory.values.max.forward.progression.years=NULL, return.percentile.trajectory.values=NULL, return.projection.group.identifier=NULL, return.projection.group.scale.scores=NULL, return.projection.group.dates=NULL, isotonize=TRUE, lag.increment=0L, lag.increment.label=NULL, sgp.exact.grade.progression=FALSE, projcuts.digits=NULL, sgp.projections.use.only.complete.matrices=NULL, SGPt=NULL, print.time.taken=TRUE)
panel.data |
Object of class |
sgp.labels |
REQUIRED. A list, |
grade.progression |
REQUIRED. Argument to specify a student grade/time progression in the data to be used for percentile growth projection/trajectory calculation.
This argument helps in replacing previous arguments |
content_area.progression |
Argument to specify a student content area progression in the data supplied for percentile growth projection/trajectory calculation. Defaults to NULL and is calculated from supplied argument 'sgp.labels'. |
year_lags.progression |
Argument to specify a student year progression lags in the data supplied for percentile growth projection/trajectory calculation. Defaults to NULL assuming annual increment calculated from supplied argument 'sgp.labels' and 'grade.progression'. |
grade.projection.sequence |
Argument to manually supply grade sequence over which projection is made. Defaults to NULL and is calculated from available data. |
content_area.projection.sequence |
Argument to manually supply content area sequence over which projection is made. Defaults to NULL and assumes current year content area is repeated going forward. |
year_lags.projection.sequence |
Argument to manually supply year lags sequence over which projection is made. Length of supplied sequence should be 1 less than length of supplied 'grade.projection.sequence' and 'content_area.projection.sequence'. Defaults to NULL and assumes annual (1 year lags). |
max.forward.progression.years |
The MAXIMUM number of years/grades/time periods to project forward conditional upon available coefficient matrices. If missing/NULL (the default), function will project forward as far as allowed by available coefficient matrices. |
max.forward.progression.grade |
The MAXIMUM grade to project forward based upon available coefficient matrices. If missing/NULL (the default), function will project forward as far as allowed by available coefficient matrices. |
max.order.for.progression |
Argument to specify the maximum coefficient matrix order to be used for percentile growth projection/trajectory calculation. If missing, the function utilizes the highest matrix order available. |
use.my.knots.boundaries |
A list of the form |
use.my.coefficient.matrices |
A list of the form |
panel.data.vnames |
Vector of variables to use in percentile growth projection/trajectory calculations. If not specified, function attempts to use all available variables. |
achievement.level.prior.vname |
Character vector indicating variable is supplied panel data corresponding to the prior achievement level to be added to the output. Used in the production of growth to standard analyses. |
performance.level.cutscores |
Argument for supplying performance level cutscores to be used for determining growth-to-standard percentile growth trajectory calculations. Argument accepts a two letter state acronym (e.g., "CO") that retrieves cutscores that are automatically embedded in a data set contained in the SGP package. Argument also accepts a subject specific list of the form: performance.level.cutscores <- list( Reading=list(GRADE_3=c(cut1, cut2, cut3), GRADE_4=c(cut1, cut2, cut3), . . . GRADE_8=c(cut1, cut2, cut3)), Math=list(GRADE_3=c(cut1, cut2, cut3), . . . GRADE_7=c(cut1, cut2, cut3), GRADE_8=c(cut1, cut2, cut3))) Note that the subject name must match that provided by |
calculate.sgps |
Boolean argument (defaults to TRUE) indicating whether to calculate student growth projections. Currently used to bypass calculations in |
convert.0and100 |
Boolean argument (defaults to TRUE) indicating whether conversion of growth percentiles of 0 and 100 to growth percentiles of 1 and 99, respectively, occurs. The default produces growth percentiles ranging from 1 to 99. |
trajectories.chunk.size |
To enhance speed, large data sets are broken up into smaller data sets before trajectories and cuts are calculated. The default chunk.size is 50,000 and is utilized
when data sets of over 150 percent of the |
sgp.projections.equated |
A list (defaults to NULL) specifying the Year and Linkages associated with the equating used for projection purposes. |
projection.unit |
Argument specifying the units in which the projections/trajectories and cuts are reported. Either |
projection.unit.label |
Argument specifying the label associated with the units in which the projections/trajectories and cuts are reported. Defaults to NULL utilizing the value associated
with the argument supplied to |
percentile.trajectory.values |
An integer argument with values ranging from 1 to 100 that returns a vector of percentile trajectory cuts (default is NULL, no percentile trajectory values returned). The returned values are the lower bound for the interval associated with the percentile(s) requested. For example, by specifying 'percentile.trajectory.values=1' the user would receive the conditional .005 quantile associated with each student's distribution. Supplied values can also be a vector of targets that will return Scale Scores associated with those targets. |
percentile.trajectory.values.max.forward.progression.years |
An integer argument indicating the number of years associated with the trajectory calculated by |
return.percentile.trajectory.values |
A Boolean variable indicating whether to return the percentile trajectory values when they are supplied as targets via panel.data. Default is NULL/FALSE. |
return.projection.group.identifier |
A Boolean variable indicating whether to return the projection group identifier to distinguish different projection trajectories. Defaults to NULL/FALSE. |
return.projection.group.scale.scores |
A Boolean variable indicating whether to return the projection group scale scores for each student. Defaults to NULL/FALSE. |
return.projection.group.dates |
A Boolean variable indicating whether to return the projection group dates associated with the students' scale scores. Defaults to NULL/FALSE. |
isotonize |
Boolean argument (defaults to TRUE) indicating whether quantile regression results are isotonized to prevent quantile crossing following the methods derived by Chernozhukov, Fernandez-Val and Glichon (2010). |
lag.increment |
A non-negative integer (defaults to 0) indicating the lag associated with the data supplied for projections. Only relevant if Cutscores or Knots and Boundaries are year dependent. |
lag.increment.label |
Overrides default ways in which lagged targets and straight targets are labelled ("" and "_CURRENT", respectively). |
sgp.exact.grade.progression |
A Boolean argument (defaults to FALSE) indicating whether to use the exact grade progression supplied or all orders up to the grade progression supplied. |
projcuts.digits |
The number of digits (defaults to NULL/0) percentile trajectories (if requested) are formatted. |
sgp.projections.use.only.complete.matrices |
A Boolean argument (defaults to TRUE) indicating whether projections should be
calculated even when all matrices are not available for the given |
SGPt |
Character vector indicating the name of the 'DATE' variable to be used for time dependent student growth projection calculations. Defaults to NULL, non-time-dependent SGP calculations. |
print.time.taken |
Boolean argument (defaults to TRUE) indicating whether to print message indicating information on |
Function returns the input panel.data
list object with the additional percentile growth trajectories/percentiles stored in
panel.data$SGProjections$my.year.my.subject
consisting of student IDs and the associated percentile growth projections/trajectories and cuts.
The data frame contains projections/trajectories for each performance level cut-point supplied and each percentile cut the user specifies.
Use of this function assumes prior calculation of student growth percentiles, making the coefficient matrices available within the panel.data$Coefficient_Matrices
list object. Additionally, if cutscores are desired they must be supplied explicitly by the user (as detailed above in
performance.level.cutscores
) or included in the SGPstateData
data set. If your state's cutscores are not included or are incorrect, please contact [email protected] to have cutscores added or corrected!
Damian W. Betebenner [email protected] and Adam Van Iwaarden [email protected]
Betebenner, D. W. (2008). Toward a normative understanding of student growth. In K. E. Ryan & L. A. Shepard (Eds.), The Future of Test Based Accountability (pp. 155-170). New York: Routledge.
Betebenner, D. W. (2009). Norm- and criterion-referenced student growth. Educational Measurement: Issues and Practice, 28(4):42-51.
Betebenner, D. W. (2012). Growth, standards, and accountability. In G. J. Cizek, Setting Performance Standards: Foundations, Methods & Innovations. 2nd Edition (pp. 439-450). New York: Routledge.
Chernozhukov, V., Fernandez-Val, I. and Galichon, A. (2010), Quantile and Probability Curves Without Crossing. Econometrica, 78: 1093-1125.
studentGrowthPercentiles
, sgpData
## Not run: ## First calculate SGPs for 2014 my.grade.sequences <- list(3:4, 3:5, 3:6, 3:7, 4:8) my.sgpData <- list(Panel_Data = sgpData) for (i in seq_along(my.grade.sequences)) { my.sgpData <- studentGrowthPercentiles(panel.data=my.sgpData, sgp.labels=list(my.year=2014, my.subject="Reading"), use.my.knots.boundaries="DEMO", grade.progression=my.grade.sequences[[i]]) } ## Calculate Growth Projections my.grade.progressions <- list(3, 3:4, 3:5, 3:6, 4:7) for (i in seq_along(my.grade.progressions)) { my.sgpData <- studentGrowthProjections(panel.data=my.sgpData, sgp.labels=list(my.year=2014, my.subject="Reading"), projcuts.digits=0, projection.unit="GRADE", performance.level.cutscores="DEMO", percentile.trajectory.values=c(25, 50, 75), grade.progression=my.grade.progressions[[i]]) } ## Save the Student Growth Projections Results to a .csv file: write.csv(my.sgpData$SGProjections$READING.2014, file= "2014_Reading_SGProjections.csv", row.names=FALSE, quote=FALSE) ## End(Not run)
## Not run: ## First calculate SGPs for 2014 my.grade.sequences <- list(3:4, 3:5, 3:6, 3:7, 4:8) my.sgpData <- list(Panel_Data = sgpData) for (i in seq_along(my.grade.sequences)) { my.sgpData <- studentGrowthPercentiles(panel.data=my.sgpData, sgp.labels=list(my.year=2014, my.subject="Reading"), use.my.knots.boundaries="DEMO", grade.progression=my.grade.sequences[[i]]) } ## Calculate Growth Projections my.grade.progressions <- list(3, 3:4, 3:5, 3:6, 4:7) for (i in seq_along(my.grade.progressions)) { my.sgpData <- studentGrowthProjections(panel.data=my.sgpData, sgp.labels=list(my.year=2014, my.subject="Reading"), projcuts.digits=0, projection.unit="GRADE", performance.level.cutscores="DEMO", percentile.trajectory.values=c(25, 50, 75), grade.progression=my.grade.progressions[[i]]) } ## Save the Student Growth Projections Results to a .csv file: write.csv(my.sgpData$SGProjections$READING.2014, file= "2014_Reading_SGProjections.csv", row.names=FALSE, quote=FALSE) ## End(Not run)
Utility function used to produce summary tables using long formatted data that contain student growth percentiles. An exemplar is provided from the successive execution of prepareSGP
, analyzeSGP
and combineSGP
.
summarizeSGP(sgp_object, state, years, content_areas, sgp.summaries=NULL, summary.groups=NULL, confidence.interval.groups=NULL, produce.all.summary.tables=FALSE, summarizeSGP.baseline=NULL, projection.years.for.target=NULL, save.old.summaries=FALSE, highest.level.summary.grouping="STATE", parallel.config=NULL)
summarizeSGP(sgp_object, state, years, content_areas, sgp.summaries=NULL, summary.groups=NULL, confidence.interval.groups=NULL, produce.all.summary.tables=FALSE, summarizeSGP.baseline=NULL, projection.years.for.target=NULL, save.old.summaries=FALSE, highest.level.summary.grouping="STATE", parallel.config=NULL)
sgp_object |
An object of class SGP containing long formatted data in the |
||||||||||||||||||||||
state |
Acronym indicating state associated with the summaries for access to assessment program information embedded in |
||||||||||||||||||||||
years |
A character vector indicating year(s) in which to produce summary tables associated with student growth percentile and percentile growth trajectory/projection analyses. If missing the function will use the data to calculate years and produce summaries for the most recent three years. |
||||||||||||||||||||||
content_areas |
A character vector indicating content area(s) in which to produce student growth percentiles and/or student growth projections/trajectories. If missing the function will use the data to infer the content area(s) available for analyses. |
||||||||||||||||||||||
sgp.summaries |
A list giving the summaries requested for each group analyzed based upon the
NOTE: The internal function |
||||||||||||||||||||||
summary.groups |
A list consisting of 8 elements indicating the types of groups across which all summaries are taken (Inclusion means that summaries will be calculated for levels of the
associated variable). For state data, if the list is not explicitly provided, the function will attempt to determine levels based upon meta data supplied in the
All group slots MUST be included in the list, although |
||||||||||||||||||||||
confidence.interval.groups |
A list consisting of information used to calculate group confidence intervals:
For |
||||||||||||||||||||||
produce.all.summary.tables |
A Boolean variable, defaults to FALSE, indicating whether the function should produce ALL possible summary table. By default, a set of approximately 70 tables are produced that are used in other parts of the packages (e.g., bubblePlots). |
||||||||||||||||||||||
summarizeSGP.baseline |
A Boolean variable, defaults to FALSE, indicating whether the function should utilize baseline sgp for summary table production. By default, a set of approximately 100 tables are produced that are used in other parts of the packages (e.g., bubblePlots). |
||||||||||||||||||||||
projection.years.for.target |
An integer/NULL argument (defaults to NULL) indicating |
||||||||||||||||||||||
save.old.summaries |
A Boolean argument, defaults to FALSE, indicating whether to save the |
||||||||||||||||||||||
highest.level.summary.grouping |
A character vector indicating the highest level for summary groups, defaults to 'STATE'. |
||||||||||||||||||||||
parallel.config |
A named list with, at a minimum, two elements indicating 1) the BACKEND package to be used for parallel computation and 2) the WORKERS list to specify the number of processors to be used in each major analysis. The BACKEND element can be set = to TYPE is a third element of the The WORKERS element is a list with SUMMARY specifying the number of processors (nodes) desired or available. For example, SUMMARY=2 may be used on a dual core machine to use both cores available. (NOTE: choice of the number of cores is a balance between the number of processors available and the amount of RAM a system has; each system will be different and may require some adjustment). Default is FOREACH as the back end, TYPE=NA and WORKERS=1, which produces summary tables sequentially: 'list(BACKEND="FOREACH", TYPE=NA, WORKERS=list(SUMMARY=1))' Example parallel use cases are provided below. |
Function makes use of the foreach
package to parallel process summary tables of student data. The proper choice of parallel backend is dependent upon the user's operating system, software and system memory capacity. Please see the foreach
documentation for details. By default, the function will process the summary tables sequentially.
Function returns lists containing the summary tables as data.table objects in the @Summary
slot of the SGP data object. Each institution
has a slot in the @Summary
list.
Damian W. Betebenner [email protected] and Adam Van Iwaarden [email protected]
prepareSGP
, analyzeSGP
, combineSGP
## Not run: ## summarizeSGP is Step 4 of 5 of abcSGP Demonstration_SGP <- sgpData_LONG Demonstration_SGP <- prepareSGP(Demonstration_SGP) Demonstration_SGP <- analyzeSGP(Demonstration_SGP) Demonstration_SGP <- combineSGP(Demonstration_SGP) Demonstration_SGP <- summarizeSGP(Demonstration_SGP) ### Example uses of the parallel.config argument ## Windows users must use the parallel package and R version >= 2.13: # Note the number of workers is 8, and PSOCK type cluster is used. # This example is would be good for a single workstation with 8 cores. . . . parallel.config=list( BACKEND="PARALLEL", TYPE="PSOCK", WORKERS=list(SUMMARY=2)) . . . # doParallel package - only available with R 2.13 or newer . . . parallel.config=list( BACKEND="FOREACH", TYPE="doParallel", WORKERS=list(SUMMARY=6)) . . . ## parallel package - only available with R 2.13 or newer # Note the number of workers is 50, and MPI is used, # suggesting this example is for a HPC cluster usage. . . . parallel.config=list( BACKEND="PARALLEL", TYPE="MPI"), WORKERS=list(SUMMARY=50)) . . . # NOTE: This list of parallel.config specifications is NOT exhaustive. # See examples in analyzeSGP documentation for some others. ## End(Not run)
## Not run: ## summarizeSGP is Step 4 of 5 of abcSGP Demonstration_SGP <- sgpData_LONG Demonstration_SGP <- prepareSGP(Demonstration_SGP) Demonstration_SGP <- analyzeSGP(Demonstration_SGP) Demonstration_SGP <- combineSGP(Demonstration_SGP) Demonstration_SGP <- summarizeSGP(Demonstration_SGP) ### Example uses of the parallel.config argument ## Windows users must use the parallel package and R version >= 2.13: # Note the number of workers is 8, and PSOCK type cluster is used. # This example is would be good for a single workstation with 8 cores. . . . parallel.config=list( BACKEND="PARALLEL", TYPE="PSOCK", WORKERS=list(SUMMARY=2)) . . . # doParallel package - only available with R 2.13 or newer . . . parallel.config=list( BACKEND="FOREACH", TYPE="doParallel", WORKERS=list(SUMMARY=6)) . . . ## parallel package - only available with R 2.13 or newer # Note the number of workers is 50, and MPI is used, # suggesting this example is for a HPC cluster usage. . . . parallel.config=list( BACKEND="PARALLEL", TYPE="MPI"), WORKERS=list(SUMMARY=50)) . . . # NOTE: This list of parallel.config specifications is NOT exhaustive. # See examples in analyzeSGP documentation for some others. ## End(Not run)
testSGP runs large scale tests of the SGP package to test for consistent performance across releases.
testSGP(TEST_NUMBER, save.results=TRUE, test.option=list(), memory.profile=FALSE, stop.fail=TRUE)
testSGP(TEST_NUMBER, save.results=TRUE, test.option=list(), memory.profile=FALSE, stop.fail=TRUE)
TEST_NUMBER |
An integer indicating the test to be run. Type 'testSGP()' to see list and description of available tests. |
save.results |
A Boolean variable, defaulting to FALSE, indicating whether the results of the analysis is saved to the working directory. |
test.option |
A character string (defaults to NULL) supplying a test option to the given test specified by TEST_NUMBER. Argument is test specific. See source code for testSGP for possible arguments. |
memory.profile |
A Boolean variable indicating whether to use memory profiling via |
stop.fail |
A Boolean variable indicating whether to stop the function if a test fails Defaults to TRUE. |
Returns output associated with functions being run.
Damian W. Betebenner [email protected] and Adam Van Iwaarden [email protected]
## Not run: ## testSGP(0): Test of studentGrowthPercentiles, studentGrowthProjections, and sgpData testSGP(0) ## testSGP(1) & testSGP('1b') runs abcSGP for all years in sgpData_LONG with/without sqliteSGP testSGP(1) testSGP('1b') ## testSGP(2): Various tests of updateSGP functionality. ## testSGP('2a'): Test of updateSGP performing SGP analyses in two steps: ## Create what_sgp_object: 2010-2011 to 2013-2014 then add with_sgp_data_LONG 2014-2015 using ## overwrite.existing.data=FALSE and sgp.use.my.coefficient.matrices=FALSE. ## testSGP('2b'): Test of updateSGP performing SGP analyses in two steps: ## Create what_sgp_object: 2010-2011 to 2013-2014 then add with_sgp_data_LONG 2014-2015 using ## overwrite.existing.data=TRUE and sgp.use.my.coefficient.matrices=FALSE. ## testSGP('2c'): Test of updateSGP performing SGP analyses in two steps: ## Create what_sgp_object: 2010-2011 to 2013-2014 then add with_sgp_data_LONG 2014-2015 using ## overwrite.existing.data=TRUE and sgp.use.my.coefficient.matrices=TRUE. ## testSGP('2d'): Test of updateSGP performing SGP analyses in two steps: ## Create what_sgp_object: 2010-2011 to 2013-2014 then add with_sgp_data_LONG 2014-2015 using ## overwrite.existing.data=FALSE and sgp.use.my.coefficient.matrices=TRUE. testSGP('2a') testSGP('2b') testSGP('2c') testSGP('2d') ## testSGP(3) runs abcSGP on grade progressions including End of Course Tests in Mathematics ## (Algebra I and Algebra II) and Reading (Grade 9 Literature and American Literature) testSGP(3) ## testSGP(4) runs prepareSGP and analyzeSGP with simex adjustment for measurement error testSGP(4) ## testSGP(5) runs abcSGP assuming at test transition in the most recent year. NOTE YET COMPLETED testSGP(5) ## testSGP(6) runs a basic baseline SGP analysis including the construction of baseline matrices. testSGP(6) ## End(Not run)
## Not run: ## testSGP(0): Test of studentGrowthPercentiles, studentGrowthProjections, and sgpData testSGP(0) ## testSGP(1) & testSGP('1b') runs abcSGP for all years in sgpData_LONG with/without sqliteSGP testSGP(1) testSGP('1b') ## testSGP(2): Various tests of updateSGP functionality. ## testSGP('2a'): Test of updateSGP performing SGP analyses in two steps: ## Create what_sgp_object: 2010-2011 to 2013-2014 then add with_sgp_data_LONG 2014-2015 using ## overwrite.existing.data=FALSE and sgp.use.my.coefficient.matrices=FALSE. ## testSGP('2b'): Test of updateSGP performing SGP analyses in two steps: ## Create what_sgp_object: 2010-2011 to 2013-2014 then add with_sgp_data_LONG 2014-2015 using ## overwrite.existing.data=TRUE and sgp.use.my.coefficient.matrices=FALSE. ## testSGP('2c'): Test of updateSGP performing SGP analyses in two steps: ## Create what_sgp_object: 2010-2011 to 2013-2014 then add with_sgp_data_LONG 2014-2015 using ## overwrite.existing.data=TRUE and sgp.use.my.coefficient.matrices=TRUE. ## testSGP('2d'): Test of updateSGP performing SGP analyses in two steps: ## Create what_sgp_object: 2010-2011 to 2013-2014 then add with_sgp_data_LONG 2014-2015 using ## overwrite.existing.data=FALSE and sgp.use.my.coefficient.matrices=TRUE. testSGP('2a') testSGP('2b') testSGP('2c') testSGP('2d') ## testSGP(3) runs abcSGP on grade progressions including End of Course Tests in Mathematics ## (Algebra I and Algebra II) and Reading (Grade 9 Literature and American Literature) testSGP(3) ## testSGP(4) runs prepareSGP and analyzeSGP with simex adjustment for measurement error testSGP(4) ## testSGP(5) runs abcSGP assuming at test transition in the most recent year. NOTE YET COMPLETED testSGP(5) ## testSGP(6) runs a basic baseline SGP analysis including the construction of baseline matrices. testSGP(6) ## End(Not run)
updateSGP takes an object of class SGP and adds in additional data (usually an additional year's data) and runs analyses on that additional year's data including the results in the supplied SGP object.
updateSGP( what_sgp_object=NULL, with_sgp_data_LONG=NULL, with_sgp_data_INSTRUCTOR_NUMBER=NULL, state=NULL, steps=c("prepareSGP", "analyzeSGP", "combineSGP", "summarizeSGP", "visualizeSGP", "outputSGP"), years=NULL, content_areas=NULL, grades=NULL, sgp.percentiles=TRUE, sgp.projections=TRUE, sgp.projections.lagged=TRUE, sgp.percentiles.baseline=TRUE, sgp.projections.baseline=TRUE, sgp.projections.lagged.baseline=TRUE, sgp.test.cohort.size=NULL, return.sgp.test.results=FALSE, simulate.sgps=TRUE, save.old.summaries=NULL, save.intermediate.results=TRUE, calculate.simex=NULL, calculate.simex.baseline=NULL, sgp.use.my.coefficient.matrices=NULL, sgp.target.scale.scores=FALSE, sgp.target.scale.scores.only=FALSE, overwrite.existing.data=TRUE, update.old.data.with.new=TRUE, output.updated.data=TRUE, sgPlot.demo.report=TRUE, plot.types=c("bubblePlot", "studentGrowthPlot", "growthAchievementPlot"), outputSGP.output.type=c("LONG_Data", "LONG_FINAL_YEAR_Data", "WIDE_Data", "INSTRUCTOR_Data"), outputSGP.directory="Data", sgp.config=NULL, goodness.of.fit.print=TRUE, parallel.config=NULL, sgp.sqlite=FALSE, SGPt=NULL, sgp.percentiles.equated=NULL, sgp.percentiles.equating.method=NULL, sgp.percentiles.calculate.sgps=TRUE, fix.duplicates=NULL, get.cohort.data.info=FALSE, ...)
updateSGP( what_sgp_object=NULL, with_sgp_data_LONG=NULL, with_sgp_data_INSTRUCTOR_NUMBER=NULL, state=NULL, steps=c("prepareSGP", "analyzeSGP", "combineSGP", "summarizeSGP", "visualizeSGP", "outputSGP"), years=NULL, content_areas=NULL, grades=NULL, sgp.percentiles=TRUE, sgp.projections=TRUE, sgp.projections.lagged=TRUE, sgp.percentiles.baseline=TRUE, sgp.projections.baseline=TRUE, sgp.projections.lagged.baseline=TRUE, sgp.test.cohort.size=NULL, return.sgp.test.results=FALSE, simulate.sgps=TRUE, save.old.summaries=NULL, save.intermediate.results=TRUE, calculate.simex=NULL, calculate.simex.baseline=NULL, sgp.use.my.coefficient.matrices=NULL, sgp.target.scale.scores=FALSE, sgp.target.scale.scores.only=FALSE, overwrite.existing.data=TRUE, update.old.data.with.new=TRUE, output.updated.data=TRUE, sgPlot.demo.report=TRUE, plot.types=c("bubblePlot", "studentGrowthPlot", "growthAchievementPlot"), outputSGP.output.type=c("LONG_Data", "LONG_FINAL_YEAR_Data", "WIDE_Data", "INSTRUCTOR_Data"), outputSGP.directory="Data", sgp.config=NULL, goodness.of.fit.print=TRUE, parallel.config=NULL, sgp.sqlite=FALSE, SGPt=NULL, sgp.percentiles.equated=NULL, sgp.percentiles.equating.method=NULL, sgp.percentiles.calculate.sgps=TRUE, fix.duplicates=NULL, get.cohort.data.info=FALSE, ...)
what_sgp_object |
The SGP object to which the additional data will be added and analyzed. This object must be specified. |
with_sgp_data_LONG |
The additional data in LONG format to be added to the supplied SGP object. The additional data must be in the same form as the data in the @Data slot. If with_sgp_data_LONG is not supplied, the function with update the sgp_object supplied in 'what_sgp_object' using the embedded coefficient matrices, essentially re-doing the analyses. |
with_sgp_data_INSTRUCTOR_NUMBER |
The addition INSTRUCTOR_NUMBER data in LONG format to be added to the supplied SGP object. The additional data must be in the same format as the data in the @Data_Supplementary[['INSTRUCTOR_NUMBER']] slot. Default is NULL, no INSTRUCTOR_NUMBER data is supplied. |
state |
The 'state' for the sgp_object. Derived from sgp_object name if not explicitly supplied. |
steps |
A vector indicting the steps abcSGP will perform as part of the update. Defaults to all steps: |
years |
If only 'what_sgp_object' is supplied, years specifies the years to be run among those in the provided sgp_object. |
content_areas |
If only 'what_sgp_object' is supplied, content_areas specifies the content areas to be run among those provided by the coefficient matrices in the sgp_object. Default is to run all analyses associated with the coefficient matrices. |
grades |
A vector indicating grades for which to calculate student growth percentiles and/or student growth projections/trajectories.
If missing the function will use the data to infer all the grade progressions for student growth percentile and student growth projections/trajectories analyses. This argument is passed to either |
sgp.percentiles |
Boolean variable indicating whether to calculate student growth percentiles (if analyzeSGP is included in the 'steps' argument). Defaults to TRUE. |
sgp.projections |
Boolean variable indicating whether to calculate student growth projections (if analyzeSGP is included in the 'steps' argument). Defaults to TRUE. |
sgp.projections.lagged |
Boolean variable indicating whether to calculate lagged student growth projections often used for growth to standard analyses (if analyzeSGP is included in the 'steps' argument). Defaults to TRUE. |
sgp.percentiles.baseline |
Boolean variable indicating whether to calculate baseline student growth percentiles and/or coefficient matrices (if analyzeSGP is included in the 'steps' argument). Defaults to TRUE. |
sgp.projections.baseline |
Boolean variable indicating whether to calculate baseline student growth projections (if analyzeSGP is included in the 'steps' argument). Defaults to TRUE. |
sgp.projections.lagged.baseline |
Boolean variable indicating whether to calculate lagged baseline student growth projections (if analyzeSGP is included in the 'steps' argument). Defaults to TRUE. |
sgp.test.cohort.size |
Integer indicating the maximum number of students sampled from the full cohort to use in the calculation of student growth percentiles. Intended to be used as a test of the desired analyses to be run. The default, NULL, uses no restrictions (no tests are performed, and analyses use the entire cohort of students). |
return.sgp.test.results |
Boolean variable passed to |
simulate.sgps |
Boolean variable indicating whether to simulate SGP values for students based on test-specific Conditional Standard Errors of Measurement (CSEM). Test CSEM data must be available for simulation and included in |
save.old.summaries |
A Boolean argument (defaults to NULL/TRUE which will save the |
save.intermediate.results |
A Boolean argument (defaults to FALSE) indicating whether results should be save to the current directory after each step of the analysis. |
calculate.simex |
A character state acronym or list including state/csem variable, csem.data.vnames, csem.loss.hoss, simulation.iterations, lambda and extrapolation method.
Returns both SIMEX adjusted SGP ( |
calculate.simex.baseline |
A character state acronym or list including state/csem variable, csem.data.vnames, csem.loss.hoss, simulation.iterations, lambda and extrapolation method. Defaults to NULL, no simex calculations performed.
Alternatively, setting the argument to TRUE uses the same defaults as above along with |
sgp.use.my.coefficient.matrices |
A Boolean argument (defaults to FALSE/NULL) passed to |
sgp.target.scale.scores |
A Boolean argument (defaults to FALSE/NULL) passed to |
sgp.target.scale.scores.only |
A Boolean argument (defaults to FALSE/NULL) passed to |
overwrite.existing.data |
A Boolean argument (defaults to TRUE) indicating whether updateSGP should overwrite existing data/results from an earlier run as part of updateSGP. |
update.old.data.with.new |
A Boolean argument (defaults to TRUE) indicating whether updateSGP should add new data supplied in argument with_SGP_Data_LONG to existing longitudinal data or reduce data set to run analyses on only that which is provided. |
output.updated.data |
A Boolean argument (defaults to TRUE) indicating whether updateSGP should use |
sgPlot.demo.report |
A Boolean argument (defaults to TRUE) indicating whether updateSGP should produce just the demo student growth plots or those associated with all students in the last year. |
plot.types |
A character vector (defaults to 'c( |
outputSGP.output.type |
Specifies the type of output generated as part of intermediate step when adding addition data and using old coefficient matrices. Defaults are the defaults of outputSGP,
|
outputSGP.directory |
A a file path indicating where to save output files. Defaults to |
sgp.config |
List of analysis control parameters passed to |
goodness.of.fit.print |
A Boolean variable passed to |
parallel.config |
Parallel computation configuration passed to |
sgp.sqlite |
A Boolean argument (defaults to FALSE) indicating whether a SQLite database file of the essential SGP data should be created from the |
SGPt |
Argument (defaults to NULL) indicating whether time dependent student growth percentile (SGPt) are calculate. |
sgp.percentiles.equated |
Argument (defaults to NULL) passed to |
sgp.percentiles.equating.method |
Character vector argument passed to |
sgp.percentiles.calculate.sgps |
Boolean argument passed to |
fix.duplicates |
Argument to control how |
get.cohort.data.info |
Boolean argument passed to |
... |
Arguments to be passed to |
Returns and object of class SGP including additional analyses.
Damian W. Betebenner [email protected]
prepareSGP
and abcSGP
## Not run: ### Run analyses on all but final year's of data Demonstration_Data_LONG <- subset(sgpData_LONG, YEAR Demonstration_Data_LONG_2013_2014 <- subset(sgpData_LONG, YEAR Demonstration_SGP <- abcSGP( sgp_object=Demonstration_Data_LONG, sgPlot.demo.report=TRUE) ### Run updateSGP on Demonstration_SGP and the 2013_2014 data Demonstration_SGP <- updateSGP( what_sgp_object=Demonstration_SGP, with_sgp_data_LONG=Demonstration_Data_LONG_2013_2014) ## End(Not run)
## Not run: ### Run analyses on all but final year's of data Demonstration_Data_LONG <- subset(sgpData_LONG, YEAR Demonstration_Data_LONG_2013_2014 <- subset(sgpData_LONG, YEAR Demonstration_SGP <- abcSGP( sgp_object=Demonstration_Data_LONG, sgPlot.demo.report=TRUE) ### Run updateSGP on Demonstration_SGP and the 2013_2014 data Demonstration_SGP <- updateSGP( what_sgp_object=Demonstration_SGP, with_sgp_data_LONG=Demonstration_Data_LONG_2013_2014) ## End(Not run)
Utility function to produce a variety of graphical displays associated with student growth percentile/percentile growth trajectory results. Function currently includes facility to produce individual student growth and achievement plots, interactive bubble plots depicting summary growth and achievement data, and growth and achievement charts showing system level growth and achievement data as shown on the cover of Educational Measurement: Issues and Practice as part of Betebenner (2009) and Betebenner (2012).
visualizeSGP( sgp_object, plot.types=c("bubblePlot", "studentGrowthPlot", "growthAchievementPlot"), state, bPlot.years=NULL, bPlot.content_areas=NULL, bPlot.districts=NULL, bPlot.schools=NULL, bPlot.instructors=NULL, bPlot.styles=c(1), bPlot.levels=NULL, bPlot.level.cuts=NULL, bPlot.full.academic.year=TRUE, bPlot.minimum.n=10, bPlot.anonymize=FALSE, bPlot.prior.achievement=TRUE, bPlot.draft=FALSE, bPlot.demo=FALSE, bPlot.output="PDF", bPlot.format="print", bPlot.folder="Visualizations/bubblePlots", sgPlot.save.sgPlot.data=FALSE, sgPlot.years=NULL, sgPlot.content_areas=NULL, sgPlot.districts=NULL, sgPlot.schools=NULL, sgPlot.reports.by.school=TRUE, sgPlot.instructors=NULL, sgPlot.reports.by.instructor=FALSE, sgPlot.students=NULL, sgPlot.reports.by.student=FALSE, sgPlot.reports.group.vars= list(DISTRICT_NUMBER="DISTRICT_NUMBER", SCHOOL_NUMBER="SCHOOL_NUMBER"), sgPlot.header.footer.color="#4CB9CC", sgPlot.front.page=NULL, sgPlot.folder="Visualizations/studentGrowthPlots", sgPlot.folder.names="number", sgPlot.fan=TRUE, sgPlot.custom.trajectory=FALSE, sgPlot.sgp.targets=FALSE, sgPlot.sgp.targets.timeframe=3, sgPlot.anonymize=FALSE, sgPlot.cleanup=TRUE, sgPlot.demo.report=FALSE, sgPlot.produce.plots=TRUE, sgPlot.baseline=NULL, sgPlot.zip=TRUE, sgPlot.output.format="PDF", sgPlot.year.span=5, sgPlot.plot.test.transition=TRUE, gaPlot.years=NULL, gaPlot.content_areas=NULL, gaPlot.students=NULL, gaPlot.format="print", gaPlot.baseline=NULL, gaPlot.max.order.for.progression=NULL, gaPlot.start.points="Achievement Level Cuts", gaPlot.back.extrapolated.cuts=NULL, gaPlot.SGPt=NULL, gaPlot.folder="Visualizations/growthAchievementPlots", parallel.config=NULL)
visualizeSGP( sgp_object, plot.types=c("bubblePlot", "studentGrowthPlot", "growthAchievementPlot"), state, bPlot.years=NULL, bPlot.content_areas=NULL, bPlot.districts=NULL, bPlot.schools=NULL, bPlot.instructors=NULL, bPlot.styles=c(1), bPlot.levels=NULL, bPlot.level.cuts=NULL, bPlot.full.academic.year=TRUE, bPlot.minimum.n=10, bPlot.anonymize=FALSE, bPlot.prior.achievement=TRUE, bPlot.draft=FALSE, bPlot.demo=FALSE, bPlot.output="PDF", bPlot.format="print", bPlot.folder="Visualizations/bubblePlots", sgPlot.save.sgPlot.data=FALSE, sgPlot.years=NULL, sgPlot.content_areas=NULL, sgPlot.districts=NULL, sgPlot.schools=NULL, sgPlot.reports.by.school=TRUE, sgPlot.instructors=NULL, sgPlot.reports.by.instructor=FALSE, sgPlot.students=NULL, sgPlot.reports.by.student=FALSE, sgPlot.reports.group.vars= list(DISTRICT_NUMBER="DISTRICT_NUMBER", SCHOOL_NUMBER="SCHOOL_NUMBER"), sgPlot.header.footer.color="#4CB9CC", sgPlot.front.page=NULL, sgPlot.folder="Visualizations/studentGrowthPlots", sgPlot.folder.names="number", sgPlot.fan=TRUE, sgPlot.custom.trajectory=FALSE, sgPlot.sgp.targets=FALSE, sgPlot.sgp.targets.timeframe=3, sgPlot.anonymize=FALSE, sgPlot.cleanup=TRUE, sgPlot.demo.report=FALSE, sgPlot.produce.plots=TRUE, sgPlot.baseline=NULL, sgPlot.zip=TRUE, sgPlot.output.format="PDF", sgPlot.year.span=5, sgPlot.plot.test.transition=TRUE, gaPlot.years=NULL, gaPlot.content_areas=NULL, gaPlot.students=NULL, gaPlot.format="print", gaPlot.baseline=NULL, gaPlot.max.order.for.progression=NULL, gaPlot.start.points="Achievement Level Cuts", gaPlot.back.extrapolated.cuts=NULL, gaPlot.SGPt=NULL, gaPlot.folder="Visualizations/growthAchievementPlots", parallel.config=NULL)
sgp_object |
An object of class SGP containing long formatted data in the |
plot.types |
A character vector indicating what types of plots to construct. Currently available plots include |
state |
Acronym indicating state associated with the summaries for access to assessment program information embedded in |
bPlot.years |
A vector indicating year(s) in which to produce |
bPlot.content_areas |
A vector indicating content area(s) to produce |
bPlot.districts |
A vector indicating districts to produce |
bPlot.schools |
A vector indicating schools to produce |
bPlot.instructors |
A vector indicating instructors to produce |
bPlot.styles |
A vector of positive integers indicating the types of |
bPlot.levels |
A character vector of levels to be used to color bubbles in the |
bPlot.level.cuts |
A vector of cuts to be used to distinguish levels used to color bubbles in the |
bPlot.full.academic.year |
A Boolean argument (defaults to TRUE) indicating whether |
bPlot.minimum.n |
A positive integer (defaults to 10) indicating the minimum size for summary values to be displayed in the |
bPlot.anonymize |
A Boolean argument (defaults to FALSE) indicating whether to anonymize |
bPlot.prior.achievement |
A Boolean argument (defaults to TRUE) indicating whether to produce |
bPlot.draft |
A Boolean argument (defaults to FALSE) indicating whether to put an indicator on the chart noting that the results are draft and to not distribute. |
bPlot.demo |
A Boolean argument (defaults to FALSE) indicating whether to produce demo student level plots (styles 150 and/or 153) for instructors. |
bPlot.output |
Argument indicating the desired type of output format for bubble plots. Either 'PDF' (default) or 'PNG'. |
bPlot.format |
Either "print" or "presentation" indicating whether to optimize the plot for print form (light background) or presentation form (dark background). |
bPlot.folder |
Character vector indicating where |
sgPlot.save.sgPlot.data |
A Boolean argument indicating whether wide formatted data should be save as part of individual student report production. For operational student report production construction, using a wide formatted file for a large state can save in having to reshape the same long file multiple times. |
sgPlot.years |
A vector indicating year for which to produce |
sgPlot.content_areas |
A vector indicating the content areas for which to produce |
sgPlot.districts |
A vector indicating which districts to produce |
sgPlot.schools |
A vector indicating which schools to produce |
sgPlot.reports.by.school |
A Boolean variable indicating whether the reports should be collated as single reports in a single folder by school and deposited into a
|
sgPlot.instructors |
A vector indicating which instructors to produce |
sgPlot.reports.by.instructor |
A Boolean variable indicating whether the reports should be collated as single reports in a single folder by school and deposited into a
|
sgPlot.students |
A vector of student |
sgPlot.reports.group.vars |
A list of variables used to group student reports. Default is |
sgPlot.reports.by.student |
A Boolean variable indicating whether the reports should be collated as single reports in a single folder or deposited into a
|
sgPlot.header.footer.color |
Character vector (default is blue) indicating the color of the header/footer associated with the
|
sgPlot.front.page |
A path to a PDF to be used as the front page to the |
sgPlot.folder |
Character vector indicating where |
sgPlot.folder.names |
Either "name" or "number" (the default) indicating how the nested folder structure will be labeled that holds the
|
sgPlot.fan |
A Boolean argument (defaults to TRUE) indicating whether to produce projection fan on |
sgPlot.custom.trajectory |
A Boolean argument (defaults to FALSE) or a character vector indicating the variable name containing the custom trajectory coordinates to be plotted. |
sgPlot.sgp.targets |
A Boolean argument (defaults to TRUE) indicating whether to indicate SGP growth targets on |
sgPlot.sgp.targets.timeframe |
An integer argument specifying the number of years forward associated with targets to be added to the student growth plots. |
sgPlot.anonymize |
A Boolean argument (defaults to FALSE) indicating whether to anonymize |
sgPlot.cleanup |
A Boolean argument (defaults to TRUE) indicating whether to remove files produced by pdfLaTeX to produce |
sgPlot.demo.report |
A Boolean argument (defaults to TRUE) indicating whether to just produce a sample |
sgPlot.produce.plots |
A Boolean argument (defaults to TRUE) indicating whether to produce |
sgPlot.baseline |
Argument (defaults to NULL) indicating whether to use baseline referenced SGPs for student growth plot construction. If not set by user,
argument will be set using |
sgPlot.zip |
A Boolean argument (defaults to TRUE) indicating whether to zip school folders containing |
sgPlot.output.format |
Argument indicating the desired type of output format for student growth plots. Either 'PDF' (default), 'PNG', 'PDF_PIECES', or 'JSON'. |
sgPlot.year.span |
Integer argument (defaults to 5) indicating the number of years to display for the pdf student growth plot. |
sgPlot.plot.test.transition |
Boolean argument (defaults to TRUE) indicating whether test transition data will be used IF it's available. Setting to FALSE ignore previous test transition data, which would indicate a desire to 'forget the past'. |
gaPlot.years |
A vector indicating the year(s) for which to produce |
gaPlot.content_areas |
A vector indicating content area(s) to produce |
gaPlot.students |
A vector of student |
gaPlot.format |
Either 'print' or 'presentation' indicating whether to optimize the plot for print form (light background) or presentation form (dark background). |
gaPlot.baseline |
Argument (defaults to NULL) indicating whether to calculate growth and achievement plots using percentile trajectories derived from baseline
referenced coefficient matrices. If not set by user, argument will be set using |
gaPlot.max.order.for.progression |
The maximum coefficient matrix order to use for each progression. Default is NULL which utilizes the maximum order available with the coefficient matrices. |
gaPlot.start.points |
Either 'Achievement Level Cuts' or 'Achievement Percentiles' defining where the percentile trajectories of the growth achievement plot will start from. |
gaPlot.folder |
Character vector indicating where |
gaPlot.back.extrapolated.cuts |
A numeric value or Boolean vector indicating whether to create back extrapolated cutscores based upon nth percentile growth. |
gaPlot.SGPt |
Boolean indicator for growth achievement plot indicating whether time dependent SGPs are to be used for student growth projections |
parallel.config |
A named list with, at a minimum, two elements indicating 1) the BACKEND package to be used for parallel computation and 2) the WORKERS list to specify the number of processors to be used in each major analysis. The BACKEND element can be set = to TYPE is a third element of the The WORKERS element is a list with GA_PLOTS (growth achievement plots) and SG_PLOTS (student growth plots) specifying the number of processors to be used. NOTE: choice of the number of cores is a balance between the number of processors available and the amount of RAM a system has; each system will be different and may require some adjustment. Default is FOREACH as the back end, TYPE=NA and both plot WORKERS=1, which produces plots sequentially: 'list(BACKEND="FOREACH", TYPE=NA, WORKERS=list(GA_PLOTS=1, SG_PLOTS=1))' Examples of various parallel configurations can be found in the examples for |
Function produces numerous (potentially hundreds of thousands) of pdf files in a folder structure specified by the user and supplied through arguments to the function.
Damian W. Betebenner [email protected] and Adam Van Iwaarden [email protected]
Betebenner, D. W. (2012). Growth, standards, and accountability. In G. J. Cizek, Setting Performance Standards: Foundations, Methods & Innovations. 2nd Edition (pp. 439-450). New York: Routledge.
Betebenner, D. W. (2009). Norm- and criterion-referenced student growth. Educational Measurement: Issues and Practice, 28(4):42-51.
bubblePlot
, bubblePlot_Styles
, studentGrowthPlot
, growthAchievementPlot
## Not run: ## visualizeSGP is Step 5 of 5 of abcSGP Demonstration_SGP <- sgpData_LONG Demonstration_SGP <- prepareSGP(Demonstration_SGP) Demonstration_SGP <- analyzeSGP(Demonstration_SGP) Demonstration_SGP <- combineSGP(Demonstration_SGP) Demonstration_SGP <- summarizeSGP(Demonstration_SGP) visualizeSGP(Demonstration_SGP) ## Produce a DEMO catalog of student growth plots visualizeSGP( sgp_object=Demonstration_SGP, plot.types="studentGrowthPlot", state="DEMO", sgPlot.demo.report=TRUE) ## Production of sample student growth and achievement plots visualizeSGP( sgp_object=Demonstration_SGP, plot.types="studentGrowthPlot", state="DEMO", sgPlot.districts=470, sgPlot.schools=c(6418, 8008), sgPlot.header.footer.color="#4CB9CC") ## End(Not run)
## Not run: ## visualizeSGP is Step 5 of 5 of abcSGP Demonstration_SGP <- sgpData_LONG Demonstration_SGP <- prepareSGP(Demonstration_SGP) Demonstration_SGP <- analyzeSGP(Demonstration_SGP) Demonstration_SGP <- combineSGP(Demonstration_SGP) Demonstration_SGP <- summarizeSGP(Demonstration_SGP) visualizeSGP(Demonstration_SGP) ## Produce a DEMO catalog of student growth plots visualizeSGP( sgp_object=Demonstration_SGP, plot.types="studentGrowthPlot", state="DEMO", sgPlot.demo.report=TRUE) ## Production of sample student growth and achievement plots visualizeSGP( sgp_object=Demonstration_SGP, plot.types="studentGrowthPlot", state="DEMO", sgPlot.districts=470, sgPlot.schools=c(6418, 8008), sgPlot.header.footer.color="#4CB9CC") ## End(Not run)