library(haven)
library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
-- Attaching packages --------------------------------------- tidyverse 1.3.0 --
v ggplot2 3.3.2     v purrr   0.3.4
v tibble  3.0.3     v dplyr   1.0.2
v tidyr   1.1.1     v stringr 1.4.0
v readr   1.3.1     v forcats 0.5.0
-- Conflicts ------------------------------------------ tidyverse_conflicts() --
x tidyr::expand() masks Matrix::expand()
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()
x tidyr::pack()   masks Matrix::pack()
x tidyr::unpack() masks Matrix::unpack()
library(lme4)
library(lmerTest)
str(projectSTAR)
tibble [6,325 x 27] (S3: tbl_df/tbl/data.frame)
 $ stdntid      : num [1:6325] 10001 10133 10246 10263 10266 ...
  ..- attr(*, "label")= chr "STUDENT ID"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ race         : dbl+lbl [1:6325] 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1...
   ..@ label       : chr "STUDENT RACE/ETHNICITY"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:6] 1 2 3 4 5 6
   .. ..- attr(*, "names")= chr [1:6] "WHITE" "BLACK" "ASIAN" "HISPANIC" ...
 $ gender       : dbl+lbl [1:6325] 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1...
   ..@ label       : chr "STUDENT GENDER"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:2] 1 2
   .. ..- attr(*, "names")= chr [1:2] "MALE" "FEMALE"
 $ FLAGSGK      : dbl+lbl [1:6325] 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
   ..@ label       : chr "IN STAR IN KINDERGARTEN"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "NO" "YES"
 $ flaggk       : dbl+lbl [1:6325] 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0...
   ..@ label       : chr "ACHIEVEMENT DATA AVAILABLE GRADE K"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:2] 0 1
   .. ..- attr(*, "names")= chr [1:2] "NO" "YES"
 $ gkclasstype  : dbl+lbl [1:6325] 3, 3, 3, 1, 2, 3, 1, 3, 1, 2, 3, 3, 2, 3, 3, 3...
   ..@ label       : chr "CLASSROOM TYPE KINDERGARTEN"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:3] 1 2 3
   .. ..- attr(*, "names")= chr [1:3] "SMALL CLASS" "REGULAR CLASS" "REGULAR + AIDE CLASS"
 $ gkschid      : num [1:6325] 169229 169280 218562 205492 257899 ...
  ..- attr(*, "label")= chr "KINDERGARTEN SCHOOL ID"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ gksurban     : dbl+lbl [1:6325] 2, 2, 4, 2, 3, 3, 2, 2, 3, 3, 3, 2, 2, 2, 2, 3...
   ..@ label       : chr "SCHOOL URBANICITY KINDERGARTEN"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:4] 1 2 3 4
   .. ..- attr(*, "names")= chr [1:4] "INNER CITY" "SUBURBAN" "RURAL" "URBAN"
 $ gktchid      : num [1:6325] 16922904 16928003 21856202 20549204 25789904 ...
  ..- attr(*, "label")= chr "KINDERGARTEN TEACHER ID"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ gktgen       : dbl+lbl [1:6325] 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2...
   ..@ label       : chr "TEACHER GENDER KINDERGARTEN"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:2] 1 2
   .. ..- attr(*, "names")= chr [1:2] "MALE" "FEMALE"
 $ gktrace      : dbl+lbl [1:6325]  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1...
   ..@ label       : chr "TEACHER RACE/ETHNICITY KINDERGARTEN"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:6] 1 2 3 4 5 6
   .. ..- attr(*, "names")= chr [1:6] "WHITE" "BLACK" "ASIAN" "HISPANIC" ...
 $ gkthighdegree: dbl+lbl [1:6325]  2,  2,  3,  2,  3,  2,  3,  3,  3,  3,  2,  2...
   ..@ label       : chr "TEACHER HIGHEST DEGREE KINDERGARTEN"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:6] 1 2 3 4 5 6
   .. ..- attr(*, "names")= chr [1:6] "ASSOCIATES" "BACHELORS" "MASTERS" "MASTERS +" ...
 $ gktcareer    : dbl+lbl [1:6325]  4,  4,  4,  4,  4, NA,  4,  4,  4,  4,  4,  4...
   ..@ label       : chr "TEACHER CAREER LADDER LEVEL KINDERGARTEN"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:7] 1 2 3 4 5 6 7
   .. ..- attr(*, "names")= chr [1:7] "CHOSE NO TO BE ON CAREER LADDER" "APPRENTICE" "PROBATION" "LADDER LEVEL 1" ...
 $ gktyears     : num [1:6325] 5 7 8 3 12 2 7 14 4 6 ...
  ..- attr(*, "label")= chr "YEARS OF TOTAL TEACHING EXPERIENCE KINDERGARTEN"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ gkclasssize  : num [1:6325] 24 22 17 17 24 24 13 24 14 23 ...
  ..- attr(*, "label")= chr "CLASS SIZE KINDERGARTEN"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ gkfreelunch  : dbl+lbl [1:6325] 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2...
   ..@ label       : chr "FREE/REDUCED LUNCH STATUS KINDERGARTEN"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:2] 1 2
   .. ..- attr(*, "names")= chr [1:2] "FREE LUNCH" "NON-FREE LUNCH"
 $ gkrepeat     : dbl+lbl [1:6325] 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
   ..@ label       : chr "REPEATING KINDERGARTEN IN 1985-1986 SCHOOL YEAR"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:2] 1 2
   .. ..- attr(*, "names")= chr [1:2] "YES, PROMOTION RECOMMENDED" "NO, PROMOTION NOT RECOMMENDED"
 $ gkspeced     : dbl+lbl [1:6325] 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2...
   ..@ label       : chr "SPECIAL EDUCATION STATUS KINDERGARTEN"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:2] 1 2
   .. ..- attr(*, "names")= chr [1:2] "YES" "NO"
 $ gkspecin     : dbl+lbl [1:6325] 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2...
   ..@ label       : chr "PULLED OUT FOR SPECIAL INSTRUCTION KINDERGARTEN"
   ..@ format.stata: chr "%10.0g"
   ..@ labels      : Named num [1:2] 1 2
   .. ..- attr(*, "names")= chr [1:2] "YES" "NO"
 $ gkpresent    : num [1:6325] 161 175 132 178 170 94 160 154 172 95 ...
  ..- attr(*, "label")= chr "DAYS PRESENT AT SCHOOL KINDERGARTEN"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ gkabsent     : num [1:6325] 19 5 28 2 10 3 2 7 8 2 ...
  ..- attr(*, "label")= chr "DAYS ABSENT FROM SCHOOL KINDERGARTEN"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ gktreadss    : num [1:6325] NA 427 450 483 456 411 443 448 463 472 ...
  ..- attr(*, "label")= chr "TOTAL READING SCALE SCORE SAT KINDERGARTEN"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ gktmathss    : num [1:6325] NA 478 494 513 513 468 473 449 520 536 ...
  ..- attr(*, "label")= chr "TOTAL MATH SCALE SCORE SAT KINDERGARTEN"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ gktlistss    : num [1:6325] NA 509 549 554 520 571 595 540 565 595 ...
  ..- attr(*, "label")= chr "TOTAL LISTENING SCALE SCORE SAT KINDERGARTEN"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ gkwordskillss: num [1:6325] NA 418 444 431 468 396 444 444 480 486 ...
  ..- attr(*, "label")= chr "WORD STUDY SKILLS SCALE SCORE SAT KINDERGARTEN"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ gkmotivraw   : num [1:6325] 23 24 28 27 25 24 NA NA 26 27 ...
  ..- attr(*, "label")= chr "MOTIVATION RAW SCORE SCAMIN KINDERGARTEN"
  ..- attr(*, "format.stata")= chr "%10.0g"
 $ gkselfconcraw: num [1:6325] 52 53 56 61 54 55 NA NA 52 61 ...
  ..- attr(*, "label")= chr "SELF-CONCEPT RAW SCORE SCAMIN KINDERGARTEN"
  ..- attr(*, "format.stata")= chr "%10.0g"
star.clean <- projectSTAR %>%
  mutate(.,
         schoolid = gkschid,
         classid = gktchid,
         math = gktmathss,
         classtype = as_factor(gkclasstype),
         years_exp = gktyears,
         degree = as_factor(gkthighdegree),
         self_concept = gkselfconcraw
         ) %>%
  group_by(schoolid) %>% 
  mutate(.,
            school_math = mean(gktmathss, na.rm = TRUE)
  ) %>%
  ungroup() %>%
   select(.,
         schoolid,
         classid,
         math,
         classtype,
         years_exp,
         degree,
         self_concept,
         school_math)
glimpse(star.clean)
Rows: 6,325
Columns: 8
$ schoolid     <dbl> 169229, 169280, 218562, 205492, 257899, 161176,...
$ classid      <dbl> 16922904, 16928003, 21856202, 20549204, 2578990...
$ math         <dbl> NA, 478, 494, 513, 513, 468, 473, 449, 520, 536...
$ classtype    <fct> REGULAR + AIDE CLASS, REGULAR + AIDE CLASS, REG...
$ years_exp    <dbl> 5, 7, 8, 3, 12, 2, 7, 14, 4, 6, 11, 16, 12, 5, ...
$ degree       <fct> BACHELORS, BACHELORS, MASTERS, BACHELORS, MASTE...
$ self_concept <dbl> 52, 53, 56, 61, 54, 55, NA, NA, 52, 61, 55, 49,...
$ school_math  <dbl> 498.8768, 486.9811, 501.1071, 502.6133, 476.280...
table(star.clean$degree)

ASSOCIATES  BACHELORS    MASTERS  MASTERS + SPECIALIST   DOCTORAL 
         0       4119       1981        161         43          0 
model.0<-lmer(math~(1|classid)+(1|schoolid), REML=FALSE, data=star.clean)
summary(model.0)
Linear mixed model fit by maximum likelihood . t-tests use
  Satterthwaite's method [lmerModLmerTest]
Formula: math ~ (1 | classid) + (1 | schoolid)
   Data: star.clean

     AIC      BIC   logLik deviance df.resid 
 60618.8  60645.5 -30305.4  60610.8     5867 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-6.2037 -0.6273 -0.0635  0.5846  3.9171 

Random effects:
 Groups   Name        Variance Std.Dev.
 classid  (Intercept)  287.6   16.96   
 schoolid (Intercept)  375.8   19.39   
 Residual             1612.4   40.15   
Number of obs: 5871, groups:  classid, 325; schoolid, 79

Fixed effects:
            Estimate Std. Error     df t value Pr(>|t|)    
(Intercept)   486.00       2.45  78.31   198.4   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
ICC.2 <-287.6/(287.6+381.9+1612.4)
ICC.2
[1] 0.1260353
ICC.3 <- 381.9/(287.6+381.9+1612.4)
ICC.3
[1] 0.1673605
model.1 <- lmer(math~self_concept + classtype + degree + school_math + (1|classid) + (1|schoolid), REML=FALSE, data=star.clean)
boundary (singular) fit: see ?isSingular
summary(model.1)
Linear mixed model fit by maximum likelihood . t-tests use
  Satterthwaite's method [lmerModLmerTest]
Formula: math ~ self_concept + classtype + degree + school_math + (1 |  
    classid) + (1 | schoolid)
   Data: star.clean

     AIC      BIC   logLik deviance df.resid 
 48768.2  48839.3 -24373.1  48746.2     4745 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.7976 -0.6435 -0.0603  0.5904  4.0060 

Random effects:
 Groups   Name        Variance Std.Dev.
 classid  (Intercept)  174.4   13.21   
 schoolid (Intercept)    0.0    0.00   
 Residual             1552.8   39.41   
Number of obs: 4756, groups:  classid, 301; schoolid, 73

Fixed effects:
                                Estimate Std. Error         df t value
(Intercept)                    -14.15268   22.09078  317.69097  -0.641
self_concept                     0.43544    0.11725 4755.84428   3.714
classtypeREGULAR CLASS          -8.20633    2.35152  293.16090  -3.490
classtypeREGULAR + AIDE CLASS   -8.69961    2.35099  288.49370  -3.700
degreeMASTERS                   -0.33621    2.10936  280.44980  -0.159
degreeMASTERS +                 -2.37697    5.96377  275.53135  -0.399
degreeSPECIALIST                19.25123   10.64910  405.76184   1.808
school_math                      0.99386    0.04374  275.01862  22.724
                              Pr(>|t|)    
(Intercept)                   0.522205    
self_concept                  0.000206 ***
classtypeREGULAR CLASS        0.000558 ***
classtypeREGULAR + AIDE CLASS 0.000258 ***
degreeMASTERS                 0.873477    
degreeMASTERS +               0.690520    
degreeSPECIALIST              0.071381 .  
school_math                    < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) slf_cn cREGUC cRE+AC dMASTE dMAST+ dSPECI
self_concpt -0.274                                          
cREGULARCLA -0.039  0.030                                   
cREGULAR+AC -0.059  0.027  0.479                            
degrMASTERS  0.019 -0.011 -0.072 -0.064                     
dgrMASTERS+  0.021 -0.007 -0.021  0.000  0.114              
dSPECIALIST  0.003 -0.008  0.101  0.101  0.054  0.021       
school_math -0.951 -0.025 -0.019  0.002 -0.043 -0.030 -0.014
convergence code: 0
boundary (singular) fit: see ?isSingular
                
rand(model.1)
boundary (singular) fit: see ?isSingular
ANOVA-like table for random-effects: Single term deletions

Model:
math ~ self_concept + classtype + degree + school_math + (1 | 
    classid) + (1 | schoolid)
               npar logLik   AIC    LRT Df Pr(>Chisq)    
<none>           11 -24373 48768                         
(1 | classid)    10 -24465 48949 183.04  1     <2e-16 ***
(1 | schoolid)   10 -24373 48766   0.00  1          1    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
model.2 <- lmer(math~self_concept + classtype + degree + school_math + (self_concept|classid) + (1|schoolid), REML=FALSE, data=star.clean)
Model failed to converge with max|grad| = 3.22002 (tol = 0.002, component 1)Model is nearly unidentifiable: very large eigenvalue
 - Rescale variables?;Model is nearly unidentifiable: large eigenvalue ratio
 - Rescale variables?
summary(model.2)
Linear mixed model fit by maximum likelihood . t-tests use
  Satterthwaite's method [lmerModLmerTest]
Formula: 
math ~ self_concept + classtype + degree + school_math + (self_concept |  
    classid) + (1 | schoolid)
   Data: star.clean

     AIC      BIC   logLik deviance df.resid 
 48766.2  48850.3 -24370.1  48740.2     4743 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.7936 -0.6469 -0.0605  0.5859  4.0123 

Random effects:
 Groups   Name         Variance  Std.Dev. Corr 
 classid  (Intercept)  1.140e+03 33.75818      
          self_concept 3.159e-01  0.56204 -0.92
 schoolid (Intercept)  3.346e-03  0.05784      
 Residual              1.545e+03 39.30534      
Number of obs: 4756, groups:  classid, 301; schoolid, 73

Fixed effects:
                               Estimate Std. Error        df t value
(Intercept)                   -14.12538   22.04803 322.68698  -0.641
self_concept                    0.43505    0.12361 125.78425   3.520
classtypeREGULAR CLASS         -8.17896    2.33745 295.50182  -3.499
classtypeREGULAR + AIDE CLASS  -8.67467    2.33612 290.20731  -3.713
degreeMASTERS                  -0.33759    2.09558 281.69626  -0.161
degreeMASTERS +                -2.21992    5.93015 277.84282  -0.374
degreeSPECIALIST               19.36573   10.60500 399.16136   1.826
school_math                     0.99387    0.04347 276.96504  22.863
                              Pr(>|t|)    
(Intercept)                   0.522196    
self_concept                  0.000603 ***
classtypeREGULAR CLASS        0.000539 ***
classtypeREGULAR + AIDE CLASS 0.000245 ***
degreeMASTERS                 0.872135    
degreeMASTERS +               0.708433    
degreeSPECIALIST              0.068583 .  
school_math                    < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) slf_cn cREGUC cRE+AC dMASTE dMAST+ dSPECI
self_concpt -0.288                                          
cREGULARCLA -0.040  0.031                                   
cREGULAR+AC -0.060  0.028  0.480                            
degrMASTERS  0.019 -0.009 -0.072 -0.064                     
dgrMASTERS+  0.020 -0.006 -0.022 -0.001  0.114              
dSPECIALIST  0.003 -0.008  0.101  0.101  0.053  0.021       
school_math -0.946 -0.028 -0.019  0.002 -0.044 -0.030 -0.014
convergence code: 0
Model failed to converge with max|grad| = 3.22002 (tol = 0.002, component 1)
Model is nearly unidentifiable: very large eigenvalue
 - Rescale variables?
Model is nearly unidentifiable: large eigenvalue ratio
 - Rescale variables?
model.3 <- lmer(math~self_concept + classtype + degree + school_math + (1|classid) + (self_concept|schoolid), REML=FALSE, data=star.clean)
boundary (singular) fit: see ?isSingular
summary(model.3)
Linear mixed model fit by maximum likelihood . t-tests use
  Satterthwaite's method [lmerModLmerTest]
Formula: math ~ self_concept + classtype + degree + school_math + (1 |  
    classid) + (self_concept | schoolid)
   Data: star.clean

     AIC      BIC   logLik deviance df.resid 
 48763.3  48847.4 -24368.6  48737.3     4743 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.7454 -0.6503 -0.0607  0.5866  4.0344 

Random effects:
 Groups   Name         Variance  Std.Dev. Corr 
 classid  (Intercept)   169.4817 13.0185       
 schoolid (Intercept)  1733.5612 41.6361       
          self_concept    0.5549  0.7449  -1.00
 Residual              1540.9570 39.2550       
Number of obs: 4756, groups:  classid, 301; schoolid, 73

Fixed effects:
                               Estimate Std. Error        df t value
(Intercept)                   -14.19106   22.49511 324.23626  -0.631
self_concept                    0.41450    0.14949  64.96742   2.773
classtypeREGULAR CLASS         -8.28684    2.33591 298.05015  -3.548
classtypeREGULAR + AIDE CLASS  -8.67911    2.33323 292.28934  -3.720
degreeMASTERS                  -0.59336    2.09262 283.66571  -0.284
degreeMASTERS +                -2.55123    5.92240 279.49950  -0.431
degreeSPECIALIST               19.55020   10.59636 414.03966   1.845
school_math                     0.99669    0.04336 277.31610  22.988
                              Pr(>|t|)    
(Intercept)                   0.528582    
self_concept                  0.007245 ** 
classtypeREGULAR CLASS        0.000451 ***
classtypeREGULAR + AIDE CLASS 0.000239 ***
degreeMASTERS                 0.776964    
degreeMASTERS +               0.666963    
degreeSPECIALIST              0.065753 .  
school_math                    < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) slf_cn cREGUC cRE+AC dMASTE dMAST+ dSPECI
self_concpt -0.352                                          
cREGULARCLA -0.040  0.027                                   
cREGULAR+AC -0.058  0.023  0.481                            
degrMASTERS  0.019 -0.011 -0.072 -0.064                     
dgrMASTERS+  0.020 -0.005 -0.021 -0.001  0.114              
dSPECIALIST  0.004 -0.010  0.100  0.101  0.052  0.021       
school_math -0.925 -0.023 -0.019  0.002 -0.043 -0.029 -0.014
convergence code: 0
boundary (singular) fit: see ?isSingular
anova(model.1, model.2)
Data: star.clean
Models:
model.1: math ~ self_concept + classtype + degree + school_math + (1 | 
model.1:     classid) + (1 | schoolid)
model.2: math ~ self_concept + classtype + degree + school_math + (self_concept | 
model.2:     classid) + (1 | schoolid)
        npar   AIC   BIC logLik deviance Chisq Df Pr(>Chisq)  
model.1   11 48768 48839 -24373    48746                      
model.2   13 48766 48850 -24370    48740 5.939  2    0.05133 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
anova(model.1, model.3)
Data: star.clean
Models:
model.1: math ~ self_concept + classtype + degree + school_math + (1 | 
model.1:     classid) + (1 | schoolid)
model.3: math ~ self_concept + classtype + degree + school_math + (1 | 
model.3:     classid) + (self_concept | schoolid)
        npar   AIC   BIC logLik deviance  Chisq Df Pr(>Chisq)  
model.1   11 48768 48839 -24373    48746                       
model.3   13 48763 48847 -24369    48737 8.8782  2    0.01181 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
model.2 <- lmer(math~self_concept + classtype + degree + school_math + (self_concept|classid) + (1|schoolid), REML=FALSE, data=star.clean)
Model failed to converge with max|grad| = 3.22002 (tol = 0.002, component 1)Model is nearly unidentifiable: very large eigenvalue
 - Rescale variables?;Model is nearly unidentifiable: large eigenvalue ratio
 - Rescale variables?
summary(model.2)
Linear mixed model fit by maximum likelihood . t-tests use
  Satterthwaite's method [lmerModLmerTest]
Formula: 
math ~ self_concept + classtype + degree + school_math + (self_concept |  
    classid) + (1 | schoolid)
   Data: star.clean

     AIC      BIC   logLik deviance df.resid 
 48766.2  48850.3 -24370.1  48740.2     4743 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.7936 -0.6469 -0.0605  0.5859  4.0123 

Random effects:
 Groups   Name         Variance  Std.Dev. Corr 
 classid  (Intercept)  1.140e+03 33.75818      
          self_concept 3.159e-01  0.56204 -0.92
 schoolid (Intercept)  3.346e-03  0.05784      
 Residual              1.545e+03 39.30534      
Number of obs: 4756, groups:  classid, 301; schoolid, 73

Fixed effects:
                               Estimate Std. Error        df t value
(Intercept)                   -14.12538   22.04803 322.68698  -0.641
self_concept                    0.43505    0.12361 125.78425   3.520
classtypeREGULAR CLASS         -8.17896    2.33745 295.50182  -3.499
classtypeREGULAR + AIDE CLASS  -8.67467    2.33612 290.20731  -3.713
degreeMASTERS                  -0.33759    2.09558 281.69626  -0.161
degreeMASTERS +                -2.21992    5.93015 277.84282  -0.374
degreeSPECIALIST               19.36573   10.60500 399.16136   1.826
school_math                     0.99387    0.04347 276.96504  22.863
                              Pr(>|t|)    
(Intercept)                   0.522196    
self_concept                  0.000603 ***
classtypeREGULAR CLASS        0.000539 ***
classtypeREGULAR + AIDE CLASS 0.000245 ***
degreeMASTERS                 0.872135    
degreeMASTERS +               0.708433    
degreeSPECIALIST              0.068583 .  
school_math                    < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) slf_cn cREGUC cRE+AC dMASTE dMAST+ dSPECI
self_concpt -0.288                                          
cREGULARCLA -0.040  0.031                                   
cREGULAR+AC -0.060  0.028  0.480                            
degrMASTERS  0.019 -0.009 -0.072 -0.064                     
dgrMASTERS+  0.020 -0.006 -0.022 -0.001  0.114              
dSPECIALIST  0.003 -0.008  0.101  0.101  0.053  0.021       
school_math -0.946 -0.028 -0.019  0.002 -0.044 -0.030 -0.014
convergence code: 0
Model failed to converge with max|grad| = 3.22002 (tol = 0.002, component 1)
Model is nearly unidentifiable: very large eigenvalue
 - Rescale variables?
Model is nearly unidentifiable: large eigenvalue ratio
 - Rescale variables?
LS0tDQp0aXRsZTogIk1vZHVsZSA3Ig0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KDQpgYGB7cn0NCmxpYnJhcnkoaGF2ZW4pDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkobG1lNCkNCmxpYnJhcnkobG1lclRlc3QpDQpgYGANCmBgYHtyfQ0Kc3RyKHByb2plY3RTVEFSKQ0KYGBgDQpgYGB7cn0NCnN0YXIuY2xlYW4gPC0gcHJvamVjdFNUQVIgJT4lDQogIG11dGF0ZSguLA0KICAgICAgICAgc2Nob29saWQgPSBna3NjaGlkLA0KICAgICAgICAgY2xhc3NpZCA9IGdrdGNoaWQsDQogICAgICAgICBtYXRoID0gZ2t0bWF0aHNzLA0KICAgICAgICAgY2xhc3N0eXBlID0gYXNfZmFjdG9yKGdrY2xhc3N0eXBlKSwNCiAgICAgICAgIHllYXJzX2V4cCA9IGdrdHllYXJzLA0KICAgICAgICAgZGVncmVlID0gYXNfZmFjdG9yKGdrdGhpZ2hkZWdyZWUpLA0KICAgICAgICAgc2VsZl9jb25jZXB0ID0gZ2tzZWxmY29uY3Jhdw0KICAgICAgICAgKSAlPiUNCiAgZ3JvdXBfYnkoc2Nob29saWQpICU+JSANCiAgbXV0YXRlKC4sDQogICAgICAgICAgICBzY2hvb2xfbWF0aCA9IG1lYW4oZ2t0bWF0aHNzLCBuYS5ybSA9IFRSVUUpDQogICkgJT4lDQogIHVuZ3JvdXAoKSAlPiUNCiAgIHNlbGVjdCguLA0KICAgICAgICAgc2Nob29saWQsDQogICAgICAgICBjbGFzc2lkLA0KICAgICAgICAgbWF0aCwNCiAgICAgICAgIGNsYXNzdHlwZSwNCiAgICAgICAgIHllYXJzX2V4cCwNCiAgICAgICAgIGRlZ3JlZSwNCiAgICAgICAgIHNlbGZfY29uY2VwdCwNCiAgICAgICAgIHNjaG9vbF9tYXRoKQ0KZ2xpbXBzZShzdGFyLmNsZWFuKQ0KYGBgDQpgYGB7cn0NCnRhYmxlKHN0YXIuY2xlYW4kZGVncmVlKQ0KYGBgDQpgYGB7cn0NCm1vZGVsLjA8LWxtZXIobWF0aH4oMXxjbGFzc2lkKSsoMXxzY2hvb2xpZCksIFJFTUw9RkFMU0UsIGRhdGE9c3Rhci5jbGVhbikNCnN1bW1hcnkobW9kZWwuMCkNCmBgYA0KYGBge3J9DQpJQ0MuMiA8LTI4Ny42LygyODcuNiszODEuOSsxNjEyLjQpDQpJQ0MuMg0KYGBgDQpgYGB7cn0NCklDQy4zIDwtIDM4MS45LygyODcuNiszODEuOSsxNjEyLjQpDQpJQ0MuMw0KYGBgDQpgYGB7cn0NCm1vZGVsLjEgPC0gbG1lcihtYXRofnNlbGZfY29uY2VwdCArIGNsYXNzdHlwZSArIGRlZ3JlZSArIHNjaG9vbF9tYXRoICsgKDF8Y2xhc3NpZCkgKyAoMXxzY2hvb2xpZCksIFJFTUw9RkFMU0UsIGRhdGE9c3Rhci5jbGVhbikNCnN1bW1hcnkobW9kZWwuMSkNCiAgICAgICAgICAgICAgICANCmBgYA0KYGBge3J9DQpyYW5kKG1vZGVsLjEpDQpgYGANCg0KYGBge3J9DQptb2RlbC4yIDwtIGxtZXIobWF0aH5zZWxmX2NvbmNlcHQgKyBjbGFzc3R5cGUgKyBkZWdyZWUgKyBzY2hvb2xfbWF0aCArIChzZWxmX2NvbmNlcHR8Y2xhc3NpZCkgKyAoMXxzY2hvb2xpZCksIFJFTUw9RkFMU0UsIGRhdGE9c3Rhci5jbGVhbikNCnN1bW1hcnkobW9kZWwuMikNCmBgYA0KYGBge3J9DQptb2RlbC4zIDwtIGxtZXIobWF0aH5zZWxmX2NvbmNlcHQgKyBjbGFzc3R5cGUgKyBkZWdyZWUgKyBzY2hvb2xfbWF0aCArICgxfGNsYXNzaWQpICsgKHNlbGZfY29uY2VwdHxzY2hvb2xpZCksIFJFTUw9RkFMU0UsIGRhdGE9c3Rhci5jbGVhbikNCnN1bW1hcnkobW9kZWwuMykNCmBgYA0KYGBge3J9DQphbm92YShtb2RlbC4xLCBtb2RlbC4yKQ0KYGBgDQpgYGB7cn0NCmFub3ZhKG1vZGVsLjEsIG1vZGVsLjMpDQpgYGANCmBgYHtyfQ0KbW9kZWwuMiA8LSBsbWVyKG1hdGh+c2VsZl9jb25jZXB0ICsgY2xhc3N0eXBlICsgZGVncmVlICsgc2Nob29sX21hdGggKyAoc2VsZl9jb25jZXB0fGNsYXNzaWQpICsgKDF8c2Nob29saWQpLCBSRU1MPUZBTFNFLCBkYXRhPXN0YXIuY2xlYW4pDQpzdW1tYXJ5KG1vZGVsLjIpDQpgYGANCg0K