set more off, permanently
set linesize 150
global filesave "C:\Dropbox\PilesOfVariance\Chapter11b\STATA"
use "$filesave\STATA_Chapter11b.dta", clear
egen smaggression = rowmean(aggression_year0 aggression_year1 aggression_year2)
label variable smaggression "smaggression: Student Mean Aggression"
sort classid_year0
egen cmgirl_year0 = mean(girl), by(classid_year0)
egen cmaggression_year0 = mean(aggression_year0), by(classid_year0)
label variable cmgirl_year0 "cmgirl_year0: % Girls in Class at Year 0"
label variable cmaggression_year0 "cmaggression_year0: Class Mean Aggression at Year 0"
sort classid_year1
egen cmgirl_year1 = mean(girl), by(classid_year1)
egen cmaggression_year1 = mean(aggression_year1), by(classid_year1)
label variable cmgirl_year1 "cmgirl_year1: % Girls in Class at Year 1"
label variable cmaggression_year1 "cmaggression_year1: Class Mean Aggression at Year 1"
sort classid_year2
egen cmgirl_year2 = mean(girl), by(classid_year2)
egen cmaggression_year2 = mean(aggression_year2), by(classid_year2)
label variable cmgirl_year2 "cmgirl_year2: % Girls in Class at Year 2"
label variable cmaggression_year2 "cmaggression_year2: Class Mean Aggression at Year 2"
gen copyclassid_year0 = classid_year0
gen copyclassid_year1 = classid_year1
gen copyclassid_year2 = classid_year2
gen copygrade_year0 = grade_year0
gen copygrade_year1 = grade_year1
gen copygrade_year2 = grade_year2
reshape long copyclassid_year copygrade_year effort_year aggression_year
cmgirl_year cmaggression_year, i(studentid) j(year)
gen classid = copyclassid_year
gen grade = copygrade_year
gen effort = effort_year
gen aggression = aggression_year
gen cmgirl = cmgirl_year
gen cmaggression = cmaggression_year
drop copyclassid_year copygrade_year effort_year aggression_year cmgirl_year cmaggression_year
label variable year "year: Year of Study (0-2)"
label variable classid "classid: Class ID Variable"
label variable grade "grade: Class Grade"
label variable effort "effort: Teacher-Perceived Student Effort"
label variable aggression "aggression: Teacher-Perceived Student Aggression"
label variable cmgirl "cmgirl: Class Proportion of Girls"
label variable cmaggression "cmaggression: Class Mean Student Aggression"
gen aclass0=0
gen aclass1=0
gen aclass2=0
gen tclass0=1
gen tclass1=1
gen tclass2=1
recode aclass0 (0=1) if year==0
recode aclass1 (0=1) if year==1
recode aclass2 (0=1) if year==2
recode tclass1 (1=0) if year==0
recode tclass2 (1=0) if year==0
recode tclass2 (1=0) if year==1
label variable aclass0 "aclass0: Acute Class Effect at Year 0"
label variable aclass1 "aclass1: Acute Class Effect at Year 1"
label variable aclass2 "aclass2: Acute Class Effect at Year 2"
label variable tclass0 "tclass0: Transfer Class Effect at Year 0"
label variable tclass1 "tclass1: Transfer Class Effect at Year 1"
label variable tclass2 "tclass2: Transfer Class Effect at Year 2"
recode classid_year0 (.=9999) if classid_year0 >= .
recode aclass0 (1=0) if classid_year0 >= .
recode tclass0 (1=0) if classid_year0 >= .
gen aclass0_year0 = classid_year0*aclass0
gen tclass0_year0 = classid_year0*tclass0
label variable aclass0_year0 "aclass0_year0: Acute Class Effect of Year 0"
label variable tclass0_year0 "tclass0_year0: Transfer Class Effect of Year 0"
recode classid_year1 (.=9999) if classid_year1 >= .
recode aclass1 (1=0) if classid_year1 >= .
recode tclass1 (1=0) if classid_year1 >= .
gen aclass1_year1 = classid_year1*aclass1
gen tclass1_year1 = classid_year1*tclass1
label variable aclass1_year1 "aclass1_year1: Acute Class Effect of Year 1"
label variable tclass1_year1 "tclass1_year1: Transfer Class Effect of Year 1"
recode classid_year2 (.=9999) if classid_year2 >= .
recode aclass2 (1=0) if classid_year2 >= .
recode tclass2 (1=0) if classid_year2 >= .
gen aclass2_year2 = classid_year2*aclass2
gen tclass2_year2 = classid_year2*tclass2
label variable aclass2_year2 "aclass2_year2: Acute Class Effect of Year 2"
label variable tclass2_year2 "tclass2_year2: Transfer Class Effect of Year 2"
recode classid (.=9999) if classid >- .
gen cmgirl50 = cmgirl - .50
gen cmagg2 = cmaggression - 2
gen smagg2 = smaggression - 2
gen agg2 = aggression - 2
gen year01=0
gen year12=0
recode year01 (0=-1) if year==0
recode year12 (0=1) if year==2
label variable cmgirl50 "cmgirl50: Class Proportion of Girls (0=.50)"
label variable cmagg2 "cmagg2: Class Mean Student Aggression (0=2)"
label variable smagg2 "smagg2: Student Mean Aggression (0=2)"
label variable agg2 "agg2: Student Aggression (0=2)"
label variable year01 "year01: Change from Year 1 to 0"
label variable year12 "year12: Change from Year 1 to 2"
egen nummiss = rowmiss(year grade girl cmgirl aggression cmaggression effort)
drop if nummiss>0
log using $filesave\STATA_Chapter11b_Output, replace name(STATA_Chapter11b)
display as result "Chapter 11b: Descriptive Statistics for Student and Year-Specific Class Variables"
preserve
collapse girl classid_year0 grade_year0 classid_year1 grade_year1 classid_year2 grade_year2, by(studentid)
tabulate girl
tabulate classid_year0 grade_year0
tabulate classid_year1 grade_year1
tabulate classid_year2 grade_year2
restore
display as result "Chapter 11b: Descriptive Statistics for Level-1 Time-Varying Student Variables"
summarize cmgirl effort aggression
display as result "Ch 11b: Empty Means, Two-Level Model of Years Within Students"
display as result "Predicting Teacher-Perceived Student Effort"
mixed effort ,
|| studentid: , variance reml covariance(unstructured),
estat ic, n(33),
estat icc,
estat wcorrelation, covariance,
estat wcorrelation,
estimates store FitEmpty2E,
display as result "Ch 11b: Saturated Means, Unstructured Variance Model"
display as result "Predicting Student Effort"
mixed effort i.year,
|| studentid: , noconstant variance reml covariance(unstructured)
residuals(unstructured,t(year)),
estat ic, n(33),
estat wcorrelation, covariance,
estat wcorrelation,
contrast i.year,
margins i.year,
margins i.year, pwcompare(pveffects)
estimates store FitSatUN2E,
display as result "Ch 11b: Piecewise Means, Random Intercept Model"
display as result "Predicting Student Effort"
mixed effort c.year01 c.year12,
|| studentid: , variance reml covariance(unstructured),
estat ic, n(33),
estimates store FitPieceRI2E,
lrtest FitSatUN2E FitPieceRI2E, force
display as result "Eq 11b.13: Adding Fixed Effects of Year-Specific Class"
display as result "Predicting Student Effort"
mixed effort c.year01 c.year12
i.classid_year0#c.aclass0 i.classid_year1#c.aclass1 i.classid_year2#c.aclass2,
|| studentid: , variance reml covariance(unstructured),
estat ic, n(33),
display as result "Eq 11b.14: Adding Random Acute Year-Specific Class Effects"
display as result "Predicting Student Effort"
mixed effort c.year01 c.year12,
|| _all: r.studentid, variance reml
|| _all: r.aclass0_year0,
|| _all: r.aclass1_year1,
|| _all: r.aclass2_year2, ,
estat ic, n(33),
estimates store FitClassAcuteE,
lrtest FitClassAcuteE FitPieceRI2E,
display as result "Ch 11b: Adding Random Transfer Class Effects Instead"
display as result "Predicting Student Effort"
mixed effort c.year01 c.year12,
|| _all: r.studentid, variance reml
|| _all: r.tclass0_year0,
|| _all: r.tclass1_year1,
|| _all: r.tclass2_year2, ,
estat ic, n(33),
estimates store FitClassTransE,
lrtest FitClassTransE FitPieceRI2E,
display as result "Eq 11b.15: Adding Year-Specific Effects of Class Grade"
display as result "Predicting Student Effort"
mixed effort c.year01 c.year12
i.grade#c.aclass0 i.grade#c.aclass1 i.grade#c.aclass2,
|| _all: r.studentid, variance reml
|| _all: r.aclass0_year0,
|| _all: r.aclass1_year1,
|| _all: r.aclass2_year2, ,
estat ic, n(33),
test 3.grade#c.aclass0=4.grade#c.aclass0
test 3.grade#c.aclass0=5.grade#c.aclass0
test 4.grade#c.aclass0=5.grade#c.aclass0
test 4.grade#c.aclass1=5.grade#c.aclass1
test 4.grade#c.aclass1=6.grade#c.aclass1
test 5.grade#c.aclass1=6.grade#c.aclass1
test 5.grade#c.aclass2=6.grade#c.aclass2
test 5.grade#c.aclass2=7.grade#c.aclass2
test 6.grade#c.aclass2=7.grade#c.aclass2
display as result "Eq 11b.16: Adding Student Gender and Year-Specific Class Contextual Gender Effects"
display as result "Predicting Student Effort"
mixed effort c.year01 c.year12
i.grade#c.aclass0 i.grade#c.aclass1 i.grade#c.aclass2
c.girl c.cmgirl50#c.aclass0 c.cmgirl50#c.aclass1 c.cmgirl50#c.aclass2,
|| _all: r.studentid, variance reml
|| _all: r.aclass0_year0,
|| _all: r.aclass1_year1,
|| _all: r.aclass2_year2, ,
estat ic, n(33),
test (c.cmgirl50#c.aclass0=0) (c.cmgirl50#c.aclass1=0) (c.cmgirl50#c.aclass2=0)
test 3.grade#c.aclass0=4.grade#c.aclass0
test 3.grade#c.aclass0=5.grade#c.aclass0
test 4.grade#c.aclass0=5.grade#c.aclass0
test 4.grade#c.aclass1=5.grade#c.aclass1
test 4.grade#c.aclass1=6.grade#c.aclass1
test 5.grade#c.aclass1=6.grade#c.aclass1
test 5.grade#c.aclass2=6.grade#c.aclass2
test 5.grade#c.aclass2=7.grade#c.aclass2
test 6.grade#c.aclass2=7.grade#c.aclass2
lincom c.girl*1 + c.cmgirl50#c.aclass0*1
lincom c.girl*1 + c.cmgirl50#c.aclass1*1
lincom c.girl*1 + c.cmgirl50#c.aclass2*1
display as result "Ch 11b: Empty Means, Two-Level Model of Years Within Students"
display as result "Predicting Teacher-Perceived Student Aggression"
mixed aggression ,
|| studentid: , variance reml covariance(unstructured),
estat ic, n(33),
estat icc,
estat wcorrelation, covariance,
estat wcorrelation,
estimates store FitEmpty2A,
display as result "Ch 11b: Saturated Means, Unstructured Variance Model"
display as result "Predicting Student Aggression"
mixed aggression i.year,
|| studentid: , noconstant variance reml covariance(unstructured)
residuals(unstructured,t(year)),
estat ic, n(33),
estat wcorrelation, covariance,
estat wcorrelation,
contrast i.year,
margins i.year,
margins i.year, pwcompare(pveffects)
estimates store FitSatUN2A,
display as result "Ch 11b: Piecewise Means, Random Intercept Model"
display as result "Predicting Student Aggression"
mixed aggression c.year01 c.year12,
|| studentid: , variance reml covariance(unstructured),
estat ic, n(33),
estimates store FitPieceRI2A,
lrtest FitSatUN2A FitPieceRI2A, force
display as result "Ch 11b: Adding Random Acute Year-Specific Class Effects"
display as result "Predicting Student Aggression"
mixed aggression c.year01 c.year12,
|| _all: r.studentid, variance reml
|| _all: r.aclass0_year0,
|| _all: r.aclass1_year1,
|| _all: r.aclass2_year2, ,
estat ic, n(33),
estimates store FitClassAcuteA,
lrtest FitClassAcuteA FitPieceRI2A,
display as result "Ch 11b: Adding Random Transfer Class Effects Instead"
display as result "Predicting Student Aggression"
mixed aggression c.year01 c.year12,
|| _all: r.studentid, variance reml
|| _all: r.tclass0_year0,
|| _all: r.tclass1_year1,
|| _all: r.tclass2_year2, ,
estat ic, n(33),
estimates store FitClassTransA,
lrtest FitClassTransA FitPieceRI2A,
display as result "Ch 11b: Adding Time-Varying, Student Mean, and Year-Specific Class Contextual Effects of Student Aggression"
display as result "Predicting Student Effort"
mixed effort c.year01 c.year12
i.grade#c.aclass0 i.grade#c.aclass1 i.grade#c.aclass2
c.girl c.cmgirl50#c.aclass0 c.cmgirl50#c.aclass1 c.cmgirl50#c.aclass2
c.agg2 c.smagg2 c.cmagg2#c.aclass0 c.cmagg2#c.aclass1 c.cmagg2#c.aclass2,
|| _all: r.studentid, variance reml
|| _all: r.aclass0_year0,
|| _all: r.aclass1_year1,
|| _all: r.aclass2_year2, ,
estat ic, n(33),
test (c.cmagg2#c.aclass0=0) (c.cmagg2#c.aclass1=0) (c.cmagg2#c.aclass2=0)
test 3.grade#c.aclass0=4.grade#c.aclass0
test 3.grade#c.aclass0=5.grade#c.aclass0
test 4.grade#c.aclass0=5.grade#c.aclass0
test 4.grade#c.aclass1=5.grade#c.aclass1
test 4.grade#c.aclass1=6.grade#c.aclass1
test 5.grade#c.aclass1=6.grade#c.aclass1
test 5.grade#c.aclass2=6.grade#c.aclass2
test 5.grade#c.aclass2=7.grade#c.aclass2
test 6.grade#c.aclass2=7.grade#c.aclass2
lincom c.girl*1 + c.cmgirl50#c.aclass0*1
lincom c.girl*1 + c.cmgirl50#c.aclass1*1
lincom c.girl*1 + c.cmgirl50#c.aclass2*1
lincom c.agg2*1 + c.smagg2*1 + c.cmagg2#c.aclass0*1
lincom c.agg2*1 + c.smagg2*1 + c.cmagg2#c.aclass1*1
lincom c.agg2*1 + c.smagg2*1 + c.cmagg2#c.aclass2*1
lincom c.agg2*1 + c.smagg2*1
predict PredFinalE, xb,
corr effort PredFinalE
log close STATA_Chapter11b
log2html $filesave\STATA_Chapter11b_Output, replace