# «University of Nebraska - Lincoln DigitalCommons of Nebraska - Lincoln Dissertations and Theses in Statistics Statistics, Department of 8-2010 ...»

Shaha, S. H., Lewis, V. K., O’Donnell, T. J., & Brown, D. H. (2004). Evaluating professional development: An approach to verifying program impact on teachers and students. The Journal of Research in Professional Learning. Retrieved April 2, 2008 from http://www.nsdc.org/library/publications/research/shaha.pdf Smith, W. M. (2004). Nebraska assessments evaluation. Unpublished project paper, The Math in the Middle Institute Partnership.

Stroup, W. (2007). UNL research team analysis efforts to date of achievement test data.

Unpublished project paper, The Math in the Middle Institute Partnership.

Stroup, W., & Fang, X. (2006). Analysis of student math achievement data: Preliminary results. Unpublished project paper, The Math in the Middle Institute Partnership.

Wayne, A. J., & Youngs, P. (2003). Teacher characteristics and student achievement gains: A review. Review of Educational Research, 73(1), 89-122.

Wilson, S. M., & Berne, J. (1999). Teacher knowledge and the acquisition of professional knowledge: An examination of research on contemporary professional development.

Review of Research in Education, 24(1), 173-209.

Wright, S. P., Horn, S. P., & Sanders, W. L. (1997). Teacher and classroom context effects on student achievement: Implications for teacher evaluation. Journal of Personnel Evaluation in Education, 11(1), 57-67.

Wright, S. P., & Sanders, W. L. (2008, April). Decomposition of estimates in a layered value-added assessment model. Paper presented at the National Conference on ValueAdded Modeling, Madison, WI.

Wright, S. P., Sanders, W. L., & Rivers, J. C. (2006). Measurement of academic growth of individual students toward variable and meaningful academic standards. In R.

Lissitz (Ed.), Longitudinal and value added models of student performance (pp. 385Maple Grove, MN: JAM Press.

Appendix A Z-score Method SAS Analysis Code for Math in the Middle Example3 libname lps 'C:\Users\Jenny\Desktop\Flash Drive - June 2, 2008\PhD\LPS Analysis\Data\LPS\analyze LPS using z score';

libname lpss 'C:\Users\Jenny\Desktop\Flash Drive - June 2, 2008\PhD\LPS Analysis\Data\LPS\reformat dataset';

%macro standardize;

%do i=5 %to 8;

%do j=4 %to 8;

data select;

set lpss.fulldata;

if grade=&i. and year=&j.;

proc sort data=select; by stuid ;

data select_undup;

set select;

by stuid ;

if first.stuid;

proc sql;

create table std_sco_g&i.0&j. as select case when std(crt) ne. then (crt-mean(crt))/std(crt) else (mat-mean(mat))/std(mat) end as std_score, grade-year as track, * from select_undup;

quit;

%end;

%end;

%mend;

%standardize;

data lps.stddata_full;

set std_sco_g504 std_sco_g505 std_sco_g506 std_sco_g507 std_sco_g508 std_sco_g604 std_sco_g605 std_sco_g606 std_sco_g607 std_sco_g608 std_sco_g704 std_sco_g705 std_sco_g706 std_sco_g707 std_sco_g708 std_sco_g806 std_sco_g807 std_sco_g808;

if tidn30 = "" and M2 = "" then M2 = 0;

run;

This code was written in collaboration with Shuo Jiao.

%let student=stuid;

%let ranvar=tidn30;

%let data_o=lps.stddata_full;

%let zmax=1;

/*This macro creates the layered Z matrix, I created this macro for the general case when the teachers are not 1, 2, 3,...., but instead are names.*/ %macro randvar_full(dataname,w11,w21,w22,w31,w32,w33,w41,w42,w43,w 44);

proc sort data=&data_o; by &ranvar;

data Z(keep=&ranvar);

set &data_o;

by &ranvar;

if first.&ranvar;

run;

data zz;

set z;

rank=_N_;

run;

proc sql;

select max(rank) into: zmax from zz;

data new_1;

merge &data_o zz;

by &ranvar;

proc sort data=new_1; by track &student grade;

data new_2 (drop=Zmat%eval(&zmax+1) Zmat_a%eval(&zmax+1) Zmat_b%eval(&zmax+1));

set new_1;

by track &student grade;

/*Create lag variable*/ array reset(3) lagrank1-lagrank3;

array mim(3) lagmim1-lagmim3;

lagrank1=lag(rank);

lagrank2=lag2(rank);

lagrank3=lag3(rank);

lagmim1=lag(m2);

lagmim2=lag2(m2);

lagmim3=lag3(m2);

if first.&student then count=1;

do i=count to 3;

reset(i)=%eval(&zmax+1);

mim(i)=2;

end;

count+1;

%do ii=1 %to %eval(&zmax+1);

Zmat&ii=0;

Zmat_b&ii=0;

Zmat_a&ii=0;

%end;

array Zmat(%eval(&zmax+1)) Zmat1-Zmat%eval(&zmax+1);

if grade=5 then Zmat[rank]+&w11;

else if grade=6 then do; Zmat[rank]+&w21;

Zmat[lagrank1]+&w22; end;

else if grade=7 then do; Zmat[rank]+&w31;

Zmat[lagrank1]+&w32; Zmat[lagrank2]+&w33; end;

else if grade=8 then do; Zmat[rank]+&w41;

Zmat[lagrank1]+&w42; Zmat[lagrank2]+&w43;

Zmat[lagrank3]+&w44; end;

array Zmat_a(%eval(&zmax+1)) Zmat_a1-Zmat_a%eval(&zmax+1);

array Zmat_b(%eval(&zmax+1)) Zmat_b1-Zmat_b%eval(&zmax+1);

if grade=5 then do;

if m2=1 then Zmat_a[rank]+&w11;

if m2=0 then Zmat_b[rank]+&w11;

end;

else if grade=6 then do;

if m2=1 then Zmat_a[rank]+&w21;

if m2=0 then Zmat_b[rank]+&w21;

if lagmim1=1 then Zmat_a[lagrank1]+&w22;

if lagmim1=0 then Zmat_b[lagrank1]+&w22;

end;

else if grade=7 then do;

if m2=1 then Zmat_a[rank]+&w31;

if m2=0 then Zmat_b[rank]+&w31;

if lagmim1=1 then Zmat_a[lagrank1]+&w32;

if lagmim1=0 then Zmat_b[lagrank1]+&w32;

if lagmim2=1 then Zmat_a[lagrank2]+&w33;

if lagmim2=0 then Zmat_b[lagrank2]+&w33;

end;

else if grade=8 then do;

if m2=1 then Zmat_a[rank]+&w41;

if m2=0 then Zmat_b[rank]+&w41;

if lagmim1=1 then Zmat_a[lagrank1]+&w42;

if lagmim1=0 then Zmat_b[lagrank1]+&w42;

if lagmim2=1 then Zmat_a[lagrank2]+&w43;

if lagmim2=0 then Zmat_b[lagrank2]+&w43;

if lagmim3=1 then Zmat_a[lagrank3]+&w44;

if lagmim3=0 then Zmat_b[lagrank3]+&w44;

end;

sum_z=sum(of Zmat2-Zmat%eval(&zmax)); *Change to two so the sum of missing teacher not included in standardization of weights;

run;

data new_3;

set new_2;

%do ii=2 %to &zmax;*Change to two so that the sum of missing teacher not included in standardization of weights;

if sum_z ne 0 then Zmat&ii=(Zmat&ii/sum_z)**0.5;

else Zmat&ii=0; *Eliminate division by zero;

if sum_z ne 0 then Zmat_b&ii=(Zmat_b&ii/sum_z)**0.5;

else Zmata&ii=0;

if sum_z ne 0 then Zmat_a&ii=(Zmat_a&ii/sum_z)**0.5;

else Zmatb&ii=0;

%end;

run;

data &dataname(drop=count i);

set new_3;

sum_za= sum(of Zmat_a2-Zmat_a%eval(&zmax));

run;

%mend;

%randvar_full(lps.new_std_data1,1,1,1,1,1,1,1,1,1,1);

%macro analysis;

proc sort data=LPS.new_std_data1;

by track stuid grade;

proc glimmix data=LPS.new_std_data1 ;

class track grade stuid;

model std_score=sum_za/solution;

random Zmat_a2-Zmat_a%trim(&zmax)/type=toep(1) solution;

random Zmat_b2-Zmat_b%trim(&zmax)/type=toep(1) solution;

random Zmat2-Zmat%trim(&zmax)/type=toep(1) solution;

random _residual_ /type=un subject=stuid*track;

nloptions om=congra; *Needed to change b/c Quanew optimization could not be completed with missing teacher links;

run;

%mend;

%analysis;

/* blup and covariate */ proc sort data=lps.new_std_data1 out=out;

by rank m2;

data lps.teacher_m2 (keep=tidn30 rank m2);

set out;

by rank;

if last.rank and rank ne 1;

run;

/*extract after effect*/ data aaa (keep=estimate_a StdErrPreda);

set lps.teacher_effect1_UN;

if substr(effect,1,6)="Zmat_a";

estimate_a=estimate ;

StdErrPreda = StdErrPred;

run;

/*extract before effect*/ data bbb (keep=estimate_b StdErrPredb);

set lps.teacher_effect1_UN;

if substr(effect,1,6)="Zmat_b";

estimate_b=estimate;

StdErrPredb = StdErrPred;

run;

/*extract common effect*/ data ccc (keep=estimate_c StdErrPredc);

set lps.teacher_effect1_UN;

if substr(effect,1,6) ne "Zmat_a" and substr(effect,1,6) ne "Zmat_b" ;

estimate_c=estimate ;

StdErrPredc = StdErrPred;

run;

/*combine all effects*/ data lps.effect_crtz;

merge aaa bbb ccc lps.teacher_m2;

run;

data compare;

set lps.effect_crtz;

before=estimate_b+estimate_c;

after=estimate_a+estimate_c+0.01905; /*substitute this number with the estimated fixed effect for sum_za*/ diff=after-before;

run;

Appendix B Complete Tests SAS Simulation Code and ASReml Analysis Code ********************************************;

*** Create a Macro to Simulate Data Sets ***;

********************************************;

Libname Results 'C:\Users\Jenny\Desktop\Flash Drive - June 2, 2008\PhD\Dissertation\Paper 1 - Intro and Model Lit Review\Curve of Factors Methodology\Results';

*Delete Old True Teacher Effects File before re-creating data sets;

Data Results.True_Teacher_Effects;

Delete;

Run;

%macro cof_full(nstudent,seed,dataname2,dataname3,dataname4);

%let seed1 = &seed + 3220;

%let seed2 = &seed + 9086;

%let seed3 = &seed + 3;

***************************************;

*** Make Random Teacher Assignments ***;

***************************************;

/* you do this by ranking the random numbers from step 1 then for year 1 you call ranks 1 to (n/20) teacher 1, ranks (n/20)+1 to (2n/20) teacher 2, etc for year 2 you call ranks 1 to (n/20) teacher 21, ranks (n/20)+1 to (2n/20) teacher 22, etc and similarly for years 3 and 4 */ /* step 1: generate random numbers for each student each year */ data step_1;

seed=&seed1;

do student=1 to &nstudent;

rntyr1=ranuni(seed);

rntyr2=ranuni(seed);

rntyr3=ranuni(seed);

rntyr4=ranuni(seed);

output;

end;

/* step 2: create the ranks using proc rank */ proc rank data=step_1 out=step_2;

var rntyr1-rntyr4;

ranks tyr1 tyr2 tyr3 tyr4;

run;

/* step 3: use the ranks to make teacher assignments */ data step_3;

set step_2;

real_obs=1;

teacher_yr1=1;

if tyr1((1/20)*&nstudent) then teacher_yr1=2;

if tyr1((2/20)*&nstudent) then teacher_yr1=3;

if tyr1((3/20)*&nstudent) then teacher_yr1=4;

if tyr1((4/20)*&nstudent) then teacher_yr1=5;

if tyr1((5/20)*&nstudent) then teacher_yr1=6;

if tyr1((6/20)*&nstudent) then teacher_yr1=7;

if tyr1((7/20)*&nstudent) then teacher_yr1=8;

if tyr1((8/20)*&nstudent) then teacher_yr1=9;

if tyr1((9/20)*&nstudent) then teacher_yr1=10;

if tyr1((10/20)*&nstudent) then teacher_yr1=11;

if tyr1((11/20)*&nstudent) then teacher_yr1=12;

if tyr1((12/20)*&nstudent) then teacher_yr1=13;

if tyr1((13/20)*&nstudent) then teacher_yr1=14;

if tyr1((14/20)*&nstudent) then teacher_yr1=15;

if tyr1((15/20)*&nstudent) then teacher_yr1=16;

if tyr1((16/20)*&nstudent) then teacher_yr1=17;

if tyr1((17/20)*&nstudent) then teacher_yr1=18;

if tyr1((18/20)*&nstudent) then teacher_yr1=19;

if tyr1((19/20)*&nstudent) then teacher_yr1=20;

teacher_yr2=21;

if tyr2((1/20)*&nstudent) then teacher_yr2=22;

if tyr2((2/20)*&nstudent) then teacher_yr2=23;

if tyr2((3/20)*&nstudent) then teacher_yr2=24;

if tyr2((4/20)*&nstudent) then teacher_yr2=25;

if tyr2((5/20)*&nstudent) then teacher_yr2=26;

if tyr2((6/20)*&nstudent) then teacher_yr2=27;

if tyr2((7/20)*&nstudent) then teacher_yr2=28;

if tyr2((8/20)*&nstudent) then teacher_yr2=29;

if tyr2((9/20)*&nstudent) then teacher_yr2=30;

if tyr2((10/20)*&nstudent) then teacher_yr2=31;

if tyr2((11/20)*&nstudent) then teacher_yr2=32;

if tyr2((12/20)*&nstudent) then teacher_yr2=33;

if tyr2((13/20)*&nstudent) then teacher_yr2=34;

if tyr2((14/20)*&nstudent) then teacher_yr2=35;

if tyr2((15/20)*&nstudent) then teacher_yr2=36;

if tyr2((16/20)*&nstudent) then teacher_yr2=37;

if tyr2((17/20)*&nstudent) then teacher_yr2=38;

if tyr2((18/20)*&nstudent) then teacher_yr2=39;

if tyr2((19/20)*&nstudent) then teacher_yr2=40;

teacher_yr3=41;

if tyr3((1/20)*&nstudent) then teacher_yr3=42;

if tyr3((2/20)*&nstudent) then teacher_yr3=43;

if tyr3((3/20)*&nstudent) then teacher_yr3=44;

if tyr3((4/20)*&nstudent) then teacher_yr3=45;

if tyr3((5/20)*&nstudent) then teacher_yr3=46;

if tyr3((6/20)*&nstudent) then teacher_yr3=47;

if tyr3((7/20)*&nstudent) then teacher_yr3=48;

if tyr3((8/20)*&nstudent) then teacher_yr3=49;

if tyr3((9/20)*&nstudent) then teacher_yr3=50;

if tyr3((10/20)*&nstudent) then teacher_yr3=51;

if tyr3((11/20)*&nstudent) then teacher_yr3=52;

if tyr3((12/20)*&nstudent) then teacher_yr3=53;

if tyr3((13/20)*&nstudent) then teacher_yr3=54;

if tyr3((14/20)*&nstudent) then teacher_yr3=55;

if tyr3((15/20)*&nstudent) then teacher_yr3=56;

if tyr3((16/20)*&nstudent) then teacher_yr3=57;

if tyr3((17/20)*&nstudent) then teacher_yr3=58;

if tyr3((18/20)*&nstudent) then teacher_yr3=59;

if tyr3((19/20)*&nstudent) then teacher_yr3=60;

teacher_yr4=61;

if tyr4((1/20)*&nstudent) then teacher_yr4=62;

if tyr4((2/20)*&nstudent) then teacher_yr4=63;

if tyr4((3/20)*&nstudent) then teacher_yr4=64;

if tyr4((4/20)*&nstudent) then teacher_yr4=65;

if tyr4((5/20)*&nstudent) then teacher_yr4=66;

if tyr4((6/20)*&nstudent) then teacher_yr4=67;

if tyr4((7/20)*&nstudent) then teacher_yr4=68;

if tyr4((8/20)*&nstudent) then teacher_yr4=69;

if tyr4((9/20)*&nstudent) then teacher_yr4=70;

if tyr4((10/20)*&nstudent) then teacher_yr4=71;

if tyr4((11/20)*&nstudent) then teacher_yr4=72;

if tyr4((12/20)*&nstudent) then teacher_yr4=73;

if tyr4((13/20)*&nstudent) then teacher_yr4=74;

if tyr4((14/20)*&nstudent) then teacher_yr4=75;

if tyr4((15/20)*&nstudent) then teacher_yr4=76;

if tyr4((16/20)*&nstudent) then teacher_yr4=77;

if tyr4((17/20)*&nstudent) then teacher_yr4=78;

if tyr4((18/20)*&nstudent) then teacher_yr4=79;

if tyr4((19/20)*&nstudent) then teacher_yr4=80;

Run;

/* Transpose Random Teacher Assignments from Step 3 */ Data Tch_assignments;

Set Step_3;

Array S[4] teacher_yr1 teacher_yr2 teacher_yr3 teacher_yr4;

Do Time = 1 to 4;

Teacher = S[Time];

Output;

End;

Keep Student Teacher Time;

Run;

*******************************;

*** Generate Student Scores ***;

*******************************;

/* step 1: generate student scores and output data set */ Proc IML;

Call Randseed(&seed2);

N=1;

G={157.5 116.7 99.8 83.3, 116.7 135 98.6 82.7, 99.8 98.6 112.5 80.5, 83.3 82.7 80.5 90}; *AR(1) structure with 1, 0.8, 0.75, 0.7 correlations;

R=I(4)@{45 0, 0 45}; *20% of total variance attributed to measurement error;

lps_sim=j(&nstudent,9,.);

Do Student=1 to &nstudent;

D = (Randnormal(1, J(4,1,0), G))`;

D2 = D@J(2,1,1);

D = D2`;

E = Randnormal(1, J(8,1,0), R);

Mean={62 231 84 234 54 236 70 239}; *MAT/3 to adjust for variance, (CRT_yr1)*2 to adjust for variance;

Scores = Mean+D+E;

lps_sim[student,1]=student;

lps_sim[student,2]=scores[1,1];

lps_sim[student,3]=scores[1,2];

lps_sim[student,4]=scores[1,3];

lps_sim[student,5]=scores[1,4];

lps_sim[student,6]=scores[1,5];

lps_sim[student,7]=scores[1,6];

lps_sim[student,8]=scores[1,7];

lps_sim[student,9]=scores[1,8];

End;

Create student_scores from lps_sim;

Append from lps_sim;

Run;

Data student_scores;

Set student_scores;

Student=col1;

yr1a_score=col2;

yr1b_score=col3;

yr2a_score=col4;

yr2b_score=col5;

yr3a_score=col6;

yr3b_score=col7;

yr4a_score=col8;

yr4b_score=col9;

Drop col1-col9;

Run;

/* step 2: Transpose student scores */ Data Sim_Scores;

Set Student_Scores;

Array S[8] yr1a_score yr1b_score yr2a_score yr2b_score yr3a_score yr3b_score yr4a_score yr4b_score;

Do I = 1 to 8;

Score = S[I];

Output;

End;

Keep Student I Score;

Run;

/* step 3: create time and test variables */ Proc Sort Data = Sim_Scores;

By I;

Run;