#################################################################
#                                                               #
# Analysis for "What would disprove interdependence?            #
#   Lessons learned from a study on biliteracy in Portuguese    #
#   heritage language speakers in Switzerland"                  #
#                                                               #
# Raphael Berthele (raphael.berthele@unifr.ch)                  #
# Jan Vanhove (jan.vanhove@unifr.ch)                            #
#                                                               #
#################################################################
# Load packages

library(tidyverse) # for working with dataframes
## Loading tidyverse: ggplot2
## Loading tidyverse: tibble
## Loading tidyverse: tidyr
## Loading tidyverse: readr
## Loading tidyverse: purrr
## Loading tidyverse: dplyr
## Conflicts with tidy packages ----------------------------------------------
## filter(): dplyr, stats
## lag():    dplyr, stats
library(cowplot)   # additional plotting functionality
## 
## Attaching package: 'cowplot'
## The following object is masked from 'package:ggplot2':
## 
##     ggsave
library(lme4)      # mixed-effects modelling
## Loading required package: Matrix
## 
## Attaching package: 'Matrix'
## The following object is masked from 'package:tidyr':
## 
##     expand
# Set plotting theme

theme_set(theme_cowplot(11))
# Read in and recode data

# Two arrangments of same data
reading_melt <- read.csv("Data/reading_melt.csv")
reading2_23 <- read.csv("Data/reading2_23.csv")

# Code Time as factor
reading_melt$Time <- factor(reading_melt$Time)
reading2_23$Time <- factor(reading2_23$Time)

# Multiply all values by 100 (percentages rather than proportions)
reading_melt$value <- 100 * reading_melt$value
reading2_23$value <- 100 * reading2_23$value
reading2_23$PreviousOther <- 100 * reading2_23$PreviousOther
reading2_23$PreviousSame <- 100 * reading2_23$PreviousSame
reading2_23$PreviousSchool <- 100 * reading2_23$PreviousSchool
reading2_23$PreviousPortuguese <- 100 * reading2_23$PreviousPortuguese

# More comprehensible labels for the language groups
reading_melt$BilingualControl2 <- reading_melt$LanguageGroup2
levels(reading_melt$BilingualControl2) <- c("bilingual (French)", 
                                            "bilingual (German)", 
                                            "comparison", 
                                            "comparison", 
                                            "comparison")
# Figure 1: Boxplot reading comprehension scores

language_names <- c(
  `French` = "tested in French",
  `German` = "tested in German",
  `Portuguese` = "tested in Portuguese"
)

# function for number of observations 
give.n <- function(x, add = 3){
  return(c(y = median(x) + add, label = length(x))) 
  # experiment with the add parameter to find the perfect position
}

ggplot(reading_melt, aes(Time, value, fill = BilingualControl2)) +
  geom_boxplot(outlier.shape = 1) +
  facet_wrap(~ LanguageTested2, 
             labeller = as_labeller(language_names)) +
  stat_summary(fun.data = give.n, geom = "text", 
               fun.y = median, size = 2.5,
               position = position_dodge(width = 0.75)) +
  xlab("Time of data collection") +
  ylab("Reading score") +
  theme(legend.direction = "horizontal", 
        legend.position = "bottom",
        strip.text.x = element_text(size = 11),
        panel.grid = element_blank(),
        panel.grid.major.y = element_line(colour = "grey90"),
        axis.text = element_text(colour = "black")) + 
  scale_fill_grey(start = 0.4, end = 1) +
  labs(fill = "Bilingual vs. comparison")

# The corresponding table with means, ns and standard deviations
reading_melt %>% 
  group_by(Time, BilingualControl2, LanguageTested2) %>% 
  summarise(n = n(),
            mean = mean(value),
            sd = sd(value)) %>% 
  print(n = nrow(.))
## Source: local data frame [21 x 6]
## Groups: Time, BilingualControl2 [?]
## 
##      Time  BilingualControl2 LanguageTested2     n     mean       sd
##    <fctr>             <fctr>          <fctr> <int>    <dbl>    <dbl>
## 1       1 bilingual (French)          French   106 57.24926 16.81236
## 2       1 bilingual (French)      Portuguese   104 53.28947 20.10766
## 3       1 bilingual (German)          German   105 45.01253 17.86287
## 4       1 bilingual (German)      Portuguese   104 46.25506 20.09408
## 5       1         comparison          French    75 56.21053 23.82462
## 6       1         comparison          German    78 51.14710 17.60771
## 7       1         comparison      Portuguese    74 67.85206 17.90804
## 8       2 bilingual (French)          French   107 65.12543 17.80460
## 9       2 bilingual (French)      Portuguese   105 65.21303 19.95487
## 10      2 bilingual (German)          German    92 54.91991 18.20378
## 11      2 bilingual (German)      Portuguese    97 55.34455 15.77326
## 12      2         comparison          French    75 68.56140 18.81758
## 13      2         comparison          German    79 65.75616 17.81584
## 14      2         comparison      Portuguese    75 77.89474 17.39147
## 15      3 bilingual (French)          French   102 72.96182 17.05119
## 16      3 bilingual (French)      Portuguese   105 73.83459 17.47814
## 17      3 bilingual (German)          German    90 65.08772 18.18853
## 18      3 bilingual (German)      Portuguese    93 66.04414 18.02477
## 19      3         comparison          French    71 75.90808 16.84826
## 20      3         comparison          German    75 73.54386 16.50746
## 21      3         comparison      Portuguese    69 83.75286 12.36757
# Figure 2: Scatterplot with school language on x-axis

theme_set(theme_bw(10))
labels <- c(
  `French` = "tested in French",
  `German` = "tested in German",
  `Portuguese` = "tested in Portuguese",
  `Bilingual group (French)` = "Bilingual group (French)",
  `Bilingual group (German)` = "Bilingual group (German)",
  `2` = "T1-T2",
  `3` = "T2-T3"
)

p <- ggplot(reading2_23, aes(x = PreviousSchool, y = value)) +
  geom_point(shape = 1, position = position_jitter(0.8, 0.8)) +
  stat_smooth(method = "lm", se = FALSE, colour = "black") +
  facet_grid(Time ~ LanguageGroup2 + LanguageTested2, 
             labeller = as_labeller(labels)) +
  ylab("Reading comprehension score") +
  xlab("Previous score: School language") +
  ggtitle("Reading comprehension score depending on previous school language score\n(participant group by time)") +
  theme(legend.direction = "horizontal", 
        legend.position = "bottom",
        strip.text.x = element_text(size = 11), 
        strip.text.y = element_text(size = 11),
        panel.grid = element_blank(),
        axis.text = element_text(colour = "black"))

# Compute correlations/n
n_r_reading_School <- summarise(group_by(reading2_23, Time, LanguageGroup2, LanguageTested2),
                                r = format(round(cor(PreviousSchool, value, use = "p"), 2), nsmall = 2),
                                n = length(PreviousPortuguese[!is.na(PreviousSchool) & !is.na(value)]))
# Combine both numbers into a text string
n_r_reading_School$Label <- paste("n = ", as.character(n_r_reading_School$n), ", r = ", as.character(n_r_reading_School$r), sep = "")
# Add x/y positions for text labels
n_r_reading_School$x <- 100; n_r_reading_School$y <- 0

# Draw graph
p + geom_text(aes(x, y, label = Label, group = NULL), 
              hjust = 1, vjust = 0, # vertical/horizontal adjustment for labels
              size = 4,
              data = n_r_reading_School)
## Warning: Removed 61 rows containing non-finite values (stat_smooth).
## Warning: Removed 61 rows containing missing values (geom_point).

# Figure 3: Scatterplot with heritage language on x-axis

theme_set(theme_bw(10))
p <- ggplot(reading2_23, aes(x = PreviousPortuguese, y = value)) +
  geom_point(shape = 1, position = position_jitter(width = 0.8, height = 0.8)) +
  stat_smooth(method = "lm", se = FALSE, colour = "black") +
  facet_grid(Time ~ LanguageGroup2 + LanguageTested2, 
             labeller = as_labeller(labels)) +
  ylab("Reading comprehension score") +
  xlab("Previous score: Portuguese") +
  ggtitle("Reading comprehension score depending on previous Portuguese score\n(participant group by time)") +
  theme(legend.direction = "horizontal", 
        legend.position = "bottom",
        strip.text.x = element_text(size = 11), 
        strip.text.y = element_text(size = 11),
        panel.grid = element_blank(),
        axis.text = element_text(colour = "black"))

# Compute correlations/n
n_r_reading_Port <- summarise(group_by(reading2_23, Time, LanguageGroup2, LanguageTested2),
                              r = format(round(cor(PreviousPortuguese, value, use = "p"), 2), nsmall = 2),
                              n = length(PreviousPortuguese[!is.na(PreviousPortuguese) & !is.na(value)]))
# Combine both numbers into a text string
n_r_reading_Port$Label <- paste("n = ", as.character(n_r_reading_Port$n), ", r = ", as.character(n_r_reading_Port$r), sep = "")
# Add x/y positions for text labels
n_r_reading_Port$x <- 100; n_r_reading_Port$y <- 0

# Draw graph
p + geom_text(aes(x, y, label = Label, group = NULL), 
              hjust = 1, vjust = 0, # vertical/horizontal adjustment for labels
              size = 4,
              data = n_r_reading_Port)
## Warning: Removed 74 rows containing non-finite values (stat_smooth).
## Warning: Removed 74 rows containing missing values (geom_point).

# Mixed model analyses

# Retain only variables of interest
reading2_23_complete <- reading2_23 %>% 
  select(VPNID, Class, Time, LanguageTested, LanguageGroup2,
         PreviousSame, PreviousOther,
         value)
reading2_23_complete <- reading2_23_complete[complete.cases(reading2_23_complete), ]

# Centre or sum-code variables
reading2_23_complete$n.Time <- as.numeric(reading2_23_complete$Time) - 1.5
reading2_23_complete$n.HL <- as.numeric(reading2_23_complete$LanguageTested) - 1.5
reading2_23_complete$n.German <- as.numeric(reading2_23_complete$LanguageGroup2) - 1.5
reading2_23_complete$c.PreviousSame <- (reading2_23_complete$PreviousSame - mean(reading2_23_complete$PreviousSame))/100
reading2_23_complete$c.PreviousOther <- (reading2_23_complete$PreviousOther - mean(reading2_23_complete$PreviousOther))/100
reading2_23_complete$value <- reading2_23_complete$value/100
# Dividing PreviousSame and PreviousOther by 100 again works better (better convergence).

# FIRST PREDICTION

# Null model for first prediction
reading.lmer1 <- lmer(value ~ n.Time + n.HL*n.German + 
                        c.PreviousSame +
                        (1|VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + n.HL | Class),
                      data = reading2_23_complete)

# add FE for PreviousOther
reading.lmer2 <- lmer(value ~ n.Time + n.HL*n.German + 
                        c.PreviousSame + c.PreviousOther +
                        (1|VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + n.HL | Class),
                      data = reading2_23_complete)

# Model comparison: X²(1) = 10.7, p = 0.001
anova(reading.lmer1, reading.lmer2)
## refitting model(s) with ML (instead of REML)
## Data: reading2_23_complete
## Models:
## reading.lmer1: value ~ n.Time + n.HL * n.German + c.PreviousSame + (1 | VPNID) + 
## reading.lmer1:     (1 + n.Time + c.PreviousSame + c.PreviousOther + n.HL | Class)
## reading.lmer2: value ~ n.Time + n.HL * n.German + c.PreviousSame + c.PreviousOther + 
## reading.lmer2:     (1 | VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + 
## reading.lmer2:     n.HL | Class)
##               Df     AIC     BIC logLik deviance Chisq Chi Df Pr(>Chisq)
## reading.lmer1 23 -825.74 -721.73 435.87  -871.74                        
## reading.lmer2 24 -834.47 -725.94 441.23  -882.47 10.73      1   0.001054
##                 
## reading.lmer1   
## reading.lmer2 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Estimates of beta coefficients:
summary(reading.lmer2)
## Linear mixed model fit by REML ['lmerMod']
## Formula: 
## value ~ n.Time + n.HL * n.German + c.PreviousSame + c.PreviousOther +  
##     (1 | VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther +  
##     n.HL | Class)
##    Data: reading2_23_complete
## 
## REML criterion at convergence: -837.9
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.6301 -0.5968  0.0279  0.6108  2.6531 
## 
## Random effects:
##  Groups   Name            Variance  Std.Dev. Corr                   
##  VPNID    (Intercept)     0.0033746 0.05809                         
##  Class    (Intercept)     0.0008207 0.02865                         
##           n.Time          0.0019298 0.04393  -0.49                  
##           c.PreviousSame  0.0076691 0.08757   0.95 -0.73            
##           c.PreviousOther 0.0106184 0.10305  -0.89  0.84 -0.99      
##           n.HL            0.0002134 0.01461   0.79  0.14  0.57 -0.42
##  Residual                 0.0127648 0.11298                         
## Number of obs: 680, groups:  VPNID, 206; Class, 21
## 
## Fixed effects:
##                  Estimate Std. Error t value
## (Intercept)      0.655782   0.009243   70.95
## n.Time           0.021173   0.014450    1.47
## n.HL             0.009093   0.009613    0.95
## n.German        -0.019474   0.016639   -1.17
## c.PreviousSame   0.469236   0.036935   12.70
## c.PreviousOther  0.159104   0.039735    4.00
## n.HL:n.German    0.004062   0.018879    0.22
## 
## Correlation of Fixed Effects:
##             (Intr) n.Time n.HL   n.Grmn c.PrvS c.PrvO
## n.Time      -0.247                                   
## n.HL         0.222  0.046                            
## n.German    -0.040 -0.030 -0.023                     
## c.PreviosSm  0.408 -0.444  0.148  0.038              
## c.PrevsOthr -0.422  0.259 -0.131  0.172 -0.514       
## n.HL:n.Grmn -0.038 -0.017  0.062  0.179 -0.059  0.051
# SECOND PREDICTION

# L1-to-L2 vs. L2-to-L1 effects
reading.lmer3 <- lmer(value ~ n.Time + n.HL*n.German +
                        c.PreviousSame + c.PreviousOther*n.HL +
                        (1|VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + n.HL | Class),
                      data = reading2_23_complete)
anova(reading.lmer2, reading.lmer3) # X² = 0.64, p = 0.42
## refitting model(s) with ML (instead of REML)
## Data: reading2_23_complete
## Models:
## reading.lmer2: value ~ n.Time + n.HL * n.German + c.PreviousSame + c.PreviousOther + 
## reading.lmer2:     (1 | VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + 
## reading.lmer2:     n.HL | Class)
## reading.lmer3: value ~ n.Time + n.HL * n.German + c.PreviousSame + c.PreviousOther * 
## reading.lmer3:     n.HL + (1 | VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + 
## reading.lmer3:     n.HL | Class)
##               Df     AIC     BIC logLik deviance  Chisq Chi Df Pr(>Chisq)
## reading.lmer2 24 -834.47 -725.94 441.23  -882.47                         
## reading.lmer3 25 -833.10 -720.05 441.55  -883.10 0.6375      1     0.4246
summary(reading.lmer3)
## Linear mixed model fit by REML ['lmerMod']
## Formula: 
## value ~ n.Time + n.HL * n.German + c.PreviousSame + c.PreviousOther *  
##     n.HL + (1 | VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther +  
##     n.HL | Class)
##    Data: reading2_23_complete
## 
## REML criterion at convergence: -834.4
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.6990 -0.5995  0.0247  0.6148  2.5890 
## 
## Random effects:
##  Groups   Name            Variance  Std.Dev. Corr                   
##  VPNID    (Intercept)     0.0032874 0.05734                         
##  Class    (Intercept)     0.0008632 0.02938                         
##           n.Time          0.0019435 0.04408  -0.50                  
##           c.PreviousSame  0.0077904 0.08826   0.95 -0.74            
##           c.PreviousOther 0.0110259 0.10500  -0.89  0.84 -0.99      
##           n.HL            0.0002362 0.01537   0.86  0.02  0.65 -0.53
##  Residual                 0.0128134 0.11320                         
## Number of obs: 680, groups:  VPNID, 206; Class, 21
## 
## Fixed effects:
##                        Estimate Std. Error t value
## (Intercept)           0.6562021  0.0093506   70.18
## n.Time                0.0208377  0.0144834    1.44
## n.HL                  0.0094979  0.0096935    0.98
## n.German             -0.0191137  0.0167389   -1.14
## c.PreviousSame        0.4723364  0.0370543   12.75
## c.PreviousOther       0.1567178  0.0401676    3.90
## n.HL:n.German         0.0004216  0.0195653    0.02
## n.HL:c.PreviousOther -0.0418490  0.0497620   -0.84
## 
## Correlation of Fixed Effects:
##             (Intr) n.Time n.HL   n.Grmn c.PrvS c.PrvO n.HL:.G
## n.Time      -0.252                                           
## n.HL         0.253  0.015                                    
## n.German    -0.041 -0.030 -0.026                             
## c.PreviosSm  0.413 -0.448  0.171  0.038                      
## c.PrevsOthr -0.434  0.263 -0.161  0.169 -0.523               
## n.HL:n.Grmn -0.045 -0.015  0.056  0.187 -0.069  0.073        
## n.HL:c.PrvO -0.030  0.000 -0.012 -0.010 -0.048  0.090  0.242
# THIRD PREDICTION

reading.lmer4 <- lmer(value ~ n.Time + n.HL*n.German +
                        c.PreviousSame + c.PreviousOther*n.German +
                        (1|VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + n.HL | Class),
                      data = reading2_23_complete)
anova(reading.lmer2, reading.lmer4) # X² = 0.01, p = 0.93
## refitting model(s) with ML (instead of REML)
## Data: reading2_23_complete
## Models:
## reading.lmer2: value ~ n.Time + n.HL * n.German + c.PreviousSame + c.PreviousOther + 
## reading.lmer2:     (1 | VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + 
## reading.lmer2:     n.HL | Class)
## reading.lmer4: value ~ n.Time + n.HL * n.German + c.PreviousSame + c.PreviousOther * 
## reading.lmer4:     n.German + (1 | VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + 
## reading.lmer4:     n.HL | Class)
##               Df     AIC     BIC logLik deviance  Chisq Chi Df Pr(>Chisq)
## reading.lmer2 24 -834.47 -725.94 441.23  -882.47                         
## reading.lmer4 25 -832.47 -719.42 441.24  -882.47 0.0081      1     0.9284
summary(reading.lmer4)
## Linear mixed model fit by REML ['lmerMod']
## Formula: 
## value ~ n.Time + n.HL * n.German + c.PreviousSame + c.PreviousOther *  
##     n.German + (1 | VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther +  
##     n.HL | Class)
##    Data: reading2_23_complete
## 
## REML criterion at convergence: -834.4
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.6291 -0.5948  0.0281  0.6101  2.6527 
## 
## Random effects:
##  Groups   Name            Variance  Std.Dev. Corr                   
##  VPNID    (Intercept)     0.0034032 0.05834                         
##  Class    (Intercept)     0.0008337 0.02887                         
##           n.Time          0.0019116 0.04372  -0.49                  
##           c.PreviousSame  0.0074850 0.08652   0.95 -0.73            
##           c.PreviousOther 0.0113230 0.10641  -0.89  0.83 -0.99      
##           n.HL            0.0002143 0.01464   0.79  0.15  0.57 -0.42
##  Residual                 0.0127651 0.11298                         
## Number of obs: 680, groups:  VPNID, 206; Class, 21
## 
## Fixed effects:
##                           Estimate Std. Error t value
## (Intercept)               0.656111   0.009550   68.70
## n.Time                    0.021363   0.014486    1.47
## n.HL                      0.009127   0.009621    0.95
## n.German                 -0.020053   0.017301   -1.16
## c.PreviousSame            0.468869   0.037018   12.67
## c.PreviousOther           0.158194   0.040266    3.93
## n.HL:n.German             0.003981   0.018938    0.21
## n.German:c.PreviousOther  0.005635   0.069553    0.08
## 
## Correlation of Fixed Effects:
##             (Intr) n.Time n.HL   n.Grmn c.PrvS c.PrvO n.HL:.
## n.Time      -0.259                                          
## n.HL         0.224  0.044                                   
## n.German    -0.097 -0.004 -0.030                            
## c.PreviosSm  0.416 -0.447  0.149  0.011                     
## c.PrevsOthr -0.423  0.262 -0.133  0.169 -0.513              
## n.HL:n.Grmn -0.053 -0.010  0.059  0.192 -0.066  0.052       
## n.Grmn:c.PO  0.232 -0.099  0.031 -0.263  0.105 -0.012 -0.076
# Follow-up analyses typological effect
# Interaction between PreviousOther, LanguageGroup2 and Time:
reading.lmer5 <- lmer(value ~ n.Time + n.HL*n.German +
                        c.PreviousSame + c.PreviousOther*n.German*n.Time +
                        (1|VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + n.HL | Class),
                      data = reading2_23_complete)
reading.lmer5_null <- lmer(value ~ n.Time + n.HL*n.German +
                             c.PreviousSame + c.PreviousOther*n.German + c.PreviousOther*n.Time + n.Time*n.German +
                             (1|VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + n.HL | Class),
                           data = reading2_23_complete)
anova(reading.lmer5, reading.lmer5_null) # X² = 10.2, p = 0.001.
## refitting model(s) with ML (instead of REML)
## Data: reading2_23_complete
## Models:
## reading.lmer5_null: value ~ n.Time + n.HL * n.German + c.PreviousSame + c.PreviousOther * 
## reading.lmer5_null:     n.German + c.PreviousOther * n.Time + n.Time * n.German + 
## reading.lmer5_null:     (1 | VPNID) + (1 + n.Time + c.PreviousSame + c.PreviousOther + 
## reading.lmer5_null:     n.HL | Class)
## reading.lmer5: value ~ n.Time + n.HL * n.German + c.PreviousSame + c.PreviousOther * 
## reading.lmer5:     n.German * n.Time + (1 | VPNID) + (1 + n.Time + c.PreviousSame + 
## reading.lmer5:     c.PreviousOther + n.HL | Class)
##                    Df     AIC     BIC logLik deviance  Chisq Chi Df
## reading.lmer5_null 27 -830.55 -708.46 442.28  -884.55              
## reading.lmer5      28 -838.73 -712.11 447.36  -894.73 10.173      1
##                    Pr(>Chisq)   
## reading.lmer5_null              
## reading.lmer5        0.001425 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(reading.lmer5)
## Linear mixed model fit by REML ['lmerMod']
## Formula: 
## value ~ n.Time + n.HL * n.German + c.PreviousSame + c.PreviousOther *  
##     n.German * n.Time + (1 | VPNID) + (1 + n.Time + c.PreviousSame +  
##     c.PreviousOther + n.HL | Class)
##    Data: reading2_23_complete
## 
## REML criterion at convergence: -834.4
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.4064 -0.5613  0.0183  0.6208  2.5015 
## 
## Random effects:
##  Groups   Name            Variance  Std.Dev. Corr                   
##  VPNID    (Intercept)     0.0038244 0.06184                         
##  Class    (Intercept)     0.0007715 0.02778                         
##           n.Time          0.0017848 0.04225  -0.45                  
##           c.PreviousSame  0.0100025 0.10001   0.88 -0.58            
##           c.PreviousOther 0.0109259 0.10453  -0.91  0.77 -0.92      
##           n.HL            0.0003150 0.01775   0.63  0.26  0.63 -0.37
##  Residual                 0.0122855 0.11084                         
## Number of obs: 680, groups:  VPNID, 206; Class, 21
## 
## Fixed effects:
##                                  Estimate Std. Error t value
## (Intercept)                      0.655901   0.009505   69.00
## n.Time                           0.031266   0.014421    2.17
## n.HL                             0.007927   0.009872    0.80
## n.German                        -0.023212   0.017322   -1.34
## c.PreviousSame                   0.465629   0.039393   11.82
## c.PreviousOther                  0.164002   0.040441    4.06
## n.HL:n.German                    0.007037   0.019359    0.36
## n.German:c.PreviousOther        -0.006768   0.070397   -0.10
## n.Time:c.PreviousOther          -0.058327   0.052631   -1.11
## n.Time:n.German                 -0.007198   0.026456   -0.27
## n.Time:n.German:c.PreviousOther  0.340088   0.104455    3.26
## 
## Correlation of Fixed Effects:
##             (Intr) n.Time n.HL   n.Grmn c.PrvS c.PrvO n.HL:. n.G:.P n.T:.P
## n.Time      -0.229                                                        
## n.HL         0.201  0.081                                                 
## n.German    -0.087 -0.014 -0.015                                          
## c.PreviosSm  0.413 -0.398  0.205  0.024                                   
## c.PrevsOthr -0.423  0.235 -0.135  0.169 -0.497                            
## n.HL:n.Grmn -0.043 -0.024  0.051  0.128 -0.060  0.036                     
## n.Grmn:c.PO  0.221 -0.096  0.023 -0.273  0.076 -0.011 -0.044              
## n.Tm:c.PrvO -0.098  0.019 -0.008 -0.034 -0.124  0.056 -0.019  0.115       
## n.Tm:n.Grmn -0.003 -0.065 -0.051 -0.077  0.002 -0.063  0.181  0.046  0.187
## n.Tm:.G:.PO -0.032  0.176 -0.028 -0.052 -0.008  0.114  0.018 -0.007  0.114
##             n.Tm:.G
## n.Time             
## n.HL               
## n.German           
## c.PreviosSm        
## c.PrevsOthr        
## n.HL:n.Grmn        
## n.Grmn:c.PO        
## n.Tm:c.PrvO        
## n.Tm:n.Grmn        
## n.Tm:.G:.PO -0.033
# END --------------------------------------------------------------------------------------------------------------