Математические достижения школьника на сегодняшний день являются важным показателем как системы образования в целом, так и личных особенностей ребенка, которые могут повлиять на его будущее. Данная работа - попытка ответить, какие факторы влияют на математические достижения школьника, и, в частности, что более важно для успеваемости школьников в наши дни: количество книг, имеющихся дома, или наличие планшетов/ПК?

Для ответа на эти вопросы использовались данные международной оценки математики восьмом классе - TIMSS 2015. Для анализа были использованы следующие переменные: BSMMAT01 - математические достижения; BSBG01 - пол; BSBG06A - наличие собственного компьютера/планшета; BSBG06B - наличие общего компьютера/планшета; BSBG06C - наличие учебного стола; BSBG06D - наличие собственной комнаты; BSBG06E - наличие Интернет-соединения; BSBG06F - наличие собственного мобильного телефона; BSBG06G - наличие игровой системы; BSBG06H - наличие музыкальных инструментов (например, гитара, фортепиано); BSBG06I - наличие автомобиля (один или несколько); BSBG06J - наличие квартиры (или дома) с 4 и более комнатами; BSBG06K - наличие посудомоечной машины; BSBG10A - рождение в стране/за ее пределами; BSBG04 - количество книг в доме (1: 0-10 книг; 2: 11-25 книг; 3: 26-100 книг; 4: 101-200 книг; 5: более 200);

library(haven) 
library(foreign) 
library(dplyr) 
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(polycor) 
library(corrplot) 
## corrplot 0.84 loaded
library(psych)
## 
## Attaching package: 'psych'
## The following object is masked from 'package:polycor':
## 
##     polyserial
  1. Для начала была создана регрессионная модель, зависимой переменной в которой являлась переменная “математические достижения”, а предикторами - пол, наличие собственного компьютера/планшета, количество книг в доме и рождение в стране/за ее пределами.
BSGRUSM6 <- read_sav("BSGRUSM6.sav") 

df = BSGRUSM6 %>% dplyr::select("BSBG06A", "BSBG06B", "BSBG06C",
"BSBG06D", "BSBG06E", "BSBG06F", "BSBG06G", "BSBG06H", "BSBG06I", "BSBG06J",
"BSBG06K", "BSMMAT01", "BSBG01", "BSBG10A", "BSBG04")
df = df %>% na.omit()

df$BSMMAT01 = as.numeric(df$BSMMAT01)
df$BSBG01 = as.factor(df$BSBG01) # 1: Girl; 2: Boy
df$BSBG10A = as.factor(df$BSBG10A)#GEN\BORN IN <COUNTRY> 1:yes; 2: no
df$BSBG04 = as.numeric(df$BSBG04)#GEN\AMOUNT OF BOOKS IN YOUR HOME  1: 0–10 books; 2: 11–25 books; 3: 26–100 books; 4: 101–200 books; 5: More than 200
df$BSBG06A = as.factor(df$BSBG06A) #GEN\HOME POSSESS\COMPUTER TABLET OWN 1:yes; 2: no
df$BSBG06B = as.factor(df$BSBG06B) #GEN\HOME POSSESS\COMPUTER TABLET SHARED


model = lm(BSMMAT01~BSBG01 + BSBG10A + BSBG04 + BSBG06A + BSBG06B, data = df)
summary(model)
## 
## Call:
## lm(formula = BSMMAT01 ~ BSBG01 + BSBG10A + BSBG04 + BSBG06A + 
##     BSBG06B, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -250.060  -54.498    2.039   54.050  272.025 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  499.873      3.842 130.098  < 2e-16 ***
## BSBG012        9.413      2.309   4.077 4.63e-05 ***
## BSBG10A2      -1.098      6.404  -0.171    0.864    
## BSBG04        11.981      1.106  10.833  < 2e-16 ***
## BSBG06A2      13.840      3.217   4.303 1.72e-05 ***
## BSBG06B2     -22.734      3.123  -7.278 3.96e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 77.69 on 4590 degrees of freedom
## Multiple R-squared:  0.04314,    Adjusted R-squared:  0.04209 
## F-statistic: 41.38 on 5 and 4590 DF,  p-value: < 2.2e-16

Переменная рождение в стране/за ее пределами оказалась незначимой. Все остальные переменные значимы на уровне значимости, близком к 0. p-value полученной модели < 2.2e-16 (модель значима), Adjusted R-squared = 0.04209, что является очень низким значением. Таким образом, согласна аутпуту модели: - мальчики, в сравнении с девочками, на имеют математическую успеваемость на 9.413 выше; - при увеличении переменной “количество книг” на одну единицу (переход в следующую категорию), математическая успеваемость увеличивается на 11.98; - не имеющие собственный компьютер/планшет, в сравнении с теми, у кого он есть, имеют успеваемость по математике выше на 13.84; - у учеников, не имеющих общего компьютера или планшета, математические достижения ниже на 22.734;

  1. Далее в модель был добавлен интерактивный эффект с переменными “количество книг дома” и “наличие общего компьютера/планшета”.
model1 <- update(model, ~.+ BSBG04*BSBG06B)
summary(model1)
## 
## Call:
## lm(formula = BSMMAT01 ~ BSBG01 + BSBG10A + BSBG04 + BSBG06A + 
##     BSBG06B + BSBG04:BSBG06B, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -250.942  -54.781    1.775   54.299  271.199 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     497.4931     4.0969 121.432  < 2e-16 ***
## BSBG012           9.4686     2.3083   4.102 4.17e-05 ***
## BSBG10A2         -0.9846     6.4031  -0.154   0.8778    
## BSBG04           12.7829     1.2053  10.606  < 2e-16 ***
## BSBG06A2         13.6824     3.2173   4.253 2.15e-05 ***
## BSBG06B2         -8.7044     8.9564  -0.972   0.3312    
## BSBG04:BSBG06B2  -5.0340     3.0121  -1.671   0.0947 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 77.68 on 4589 degrees of freedom
## Multiple R-squared:  0.04372,    Adjusted R-squared:  0.04247 
## F-statistic: 34.96 on 6 and 4589 DF,  p-value: < 2.2e-16

Интерактивный эффект статистически значим (на уровне значимости = 0.1), сравним модели с помощью показателей AIC и anova.

AIC(model1)
## [1] 53060.48
AIC(model)
## [1] 53061.28
anova(model, model1)
## Analysis of Variance Table
## 
## Model 1: BSMMAT01 ~ BSBG01 + BSBG10A + BSBG04 + BSBG06A + BSBG06B
## Model 2: BSMMAT01 ~ BSBG01 + BSBG10A + BSBG04 + BSBG06A + BSBG06B + BSBG04:BSBG06B
##   Res.Df      RSS Df Sum of Sq      F  Pr(>F)  
## 1   4590 27704866                              
## 2   4589 27688013  1     16853 2.7932 0.09473 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

AIC второй модели меньше, а аутпут anova показывает, что Pr(>F) < 0.1 => мы значимо улучшили нашу модель.

summary(model1)
## 
## Call:
## lm(formula = BSMMAT01 ~ BSBG01 + BSBG10A + BSBG04 + BSBG06A + 
##     BSBG06B + BSBG04:BSBG06B, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -250.942  -54.781    1.775   54.299  271.199 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     497.4931     4.0969 121.432  < 2e-16 ***
## BSBG012           9.4686     2.3083   4.102 4.17e-05 ***
## BSBG10A2         -0.9846     6.4031  -0.154   0.8778    
## BSBG04           12.7829     1.2053  10.606  < 2e-16 ***
## BSBG06A2         13.6824     3.2173   4.253 2.15e-05 ***
## BSBG06B2         -8.7044     8.9564  -0.972   0.3312    
## BSBG04:BSBG06B2  -5.0340     3.0121  -1.671   0.0947 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 77.68 on 4589 degrees of freedom
## Multiple R-squared:  0.04372,    Adjusted R-squared:  0.04247 
## F-statistic: 34.96 on 6 and 4589 DF,  p-value: < 2.2e-16

Таким образом, p-value выбранной модели < 2.2e-16, значит, модель значима, Adjusted R-squared выбранной модели = 0.04247, что говорит нам о том, что модель объясняет только 4.24% случаев. Кроме того, значимыми предикторами являются переменные BSBG01, BSBG04, BSBG06A, BSBG04:BSBG06B. Так: - мальчики, в сравнении с девочками, на имеют математическую успеваемость на 9.47 выше; - при увеличении переменной “количество книг” на одну единицу (переход в следующую категорию), математическая успеваемость увеличивается на 12.78; - не имеющие собственный компьютер/планшет, в сравнении с теми, у кого он есть, имеют успеваемость по математике выше на 13.68; - интерактивный эффект имеет негативную связь, в дальнейшем будет рассмотрен график взаимосвязи.

  1. Далее были рассмотрены переменные, относящиеся к обладанию различными вещами (BSBG06A-BSBG06K). Для работы с ними был проведен EFA.
df1 = df %>% dplyr::select(-BSMMAT01, -BSBG01, -BSBG10A, -BSBG04)

Матрица корреляций:

df1 <- as.data.frame(lapply(df1, as.factor))
df.cor = hetcor(df1)
df.cor
## 
## Two-Step Estimates
## 
## Correlations/Type of Correlation:
##          BSBG06A    BSBG06B    BSBG06C    BSBG06D    BSBG06E    BSBG06F
## BSBG06A        1 Polychoric Polychoric Polychoric Polychoric Polychoric
## BSBG06B -0.07561          1 Polychoric Polychoric Polychoric Polychoric
## BSBG06C   0.3793  -0.004901          1 Polychoric Polychoric Polychoric
## BSBG06D   0.2574   0.003977     0.5015          1 Polychoric Polychoric
## BSBG06E   0.3285     0.3715     0.3927     0.1608          1 Polychoric
## BSBG06F   0.2577     0.3332     0.3581     0.1726     0.5748          1
## BSBG06G    0.281   -0.05713    0.06928     0.1041     0.1557     0.2273
## BSBG06H -0.00151     0.1143      0.167    0.05854     0.2097     0.2621
## BSBG06I   0.1823     0.2073     0.1896     0.1922     0.3172      0.241
## BSBG06J    0.131    0.02949       0.16     0.3304    0.09635    0.04038
## BSBG06K   0.1893     0.0424     0.2341     0.2095     0.2198      0.367
##            BSBG06G    BSBG06H    BSBG06I    BSBG06J    BSBG06K
## BSBG06A Polychoric Polychoric Polychoric Polychoric Polychoric
## BSBG06B Polychoric Polychoric Polychoric Polychoric Polychoric
## BSBG06C Polychoric Polychoric Polychoric Polychoric Polychoric
## BSBG06D Polychoric Polychoric Polychoric Polychoric Polychoric
## BSBG06E Polychoric Polychoric Polychoric Polychoric Polychoric
## BSBG06F Polychoric Polychoric Polychoric Polychoric Polychoric
## BSBG06G          1 Polychoric Polychoric Polychoric Polychoric
## BSBG06H     0.1188          1 Polychoric Polychoric Polychoric
## BSBG06I     0.2333     0.1716          1 Polychoric Polychoric
## BSBG06J      0.137    0.07844     0.3378          1 Polychoric
## BSBG06K     0.3886     0.2255     0.3153     0.2452          1
## 
## Standard Errors:
##         BSBG06A BSBG06B BSBG06C BSBG06D BSBG06E BSBG06F BSBG06G BSBG06H
## BSBG06A                                                                
## BSBG06B 0.03443                                                        
## BSBG06C 0.03312 0.04005                                                
## BSBG06D 0.02746 0.02885 0.02747                                        
## BSBG06E 0.04456  0.0426 0.04688 0.04432                                
## BSBG06F 0.05612 0.05256  0.0573 0.05346 0.05202                        
## BSBG06G 0.03045 0.02958 0.03638  0.0259 0.05006 0.06345                
## BSBG06H 0.02888 0.02834 0.03423 0.02458 0.04647 0.05775 0.02509        
## BSBG06I 0.02828 0.02752  0.0331 0.02422 0.04161 0.05218 0.02537 0.02423
## BSBG06J 0.02797 0.02774 0.03288 0.02223 0.04434 0.05403 0.02463 0.02356
## BSBG06K  0.0327 0.03166 0.03975   0.027 0.05515 0.07749 0.02436 0.02557
##         BSBG06I BSBG06J
## BSBG06A                
## BSBG06B                
## BSBG06C                
## BSBG06D                
## BSBG06E                
## BSBG06F                
## BSBG06G                
## BSBG06H                
## BSBG06I                
## BSBG06J 0.02214        
## BSBG06K 0.02629 0.02524
## 
## n = 4596

График, отображающий матрицу корреляций:

cor.plot(df.cor)

Затем, с помощью Parallel Analysis Scree Plots было отобрано первоначальное число факторов. Так, график (число треугольников над пунктиром) и аутпут показывают, что оптимальное число = 5.

df1 <- as.data.frame(lapply(df1, as.numeric))
fa.parallel(df.cor$correlations, n.obs=4596, fa="both", n.iter=100)

## Parallel analysis suggests that the number of factors =  5  and the number of components =  4

Попробуем построить модель с числом факторов, равным 5 и отсутствием вращения.

fa1 = fa(df.cor$correlations, nfactors=5, rotate="none", fm="ml") 
fa.diagram(fa(df.cor$correlations, nfactors=5, rotate="none", fm="ml"))

Как видно на диаграмме, фактор №5 не объясняет ни одну переменную. Попробуем уменьшить число факторов.

fa1 = fa(df.cor$correlations, nfactors=4, rotate="none", fm="ml") 
fa.diagram(fa(df.cor$correlations, nfactors=4, rotate="none", fm="ml"))

В данном случае фактор №4 не объясняет ни одну переменную. Уменьшаем дальше.

fa1 = fa(df.cor$correlations, nfactors=3, rotate="none", fm="ml") 
fa.diagram(fa(df.cor$correlations, nfactors=3, rotate="none", fm="ml"))

В случае числа факторов, равного 3, все факторы объясняют 2 и более переменные, Proportions Explained распределены следующим образом: 0.53:0.28:0.19. Попробуем посмотреть на модель с 2 факторами.

fa2 = fa(df.cor$correlations, nfactors=2, rotate="none", fm="ml") 
fa.diagram(fa(df.cor$correlations, nfactors=2, rotate="none", fm="ml"))

В данной модели все факторы объясняют 3 и более переменные, но Proportion Explained распределена неравномерно. Остановимся на 3 факторах.

Далее попробуем добавить в модель вращение varimax и oblimin, а также построить модель не с корреляциями, а с изначальной датой и cor = “mixed”.

fa1 = fa(df.cor$correlations, nfactors=3, rotate="varimax", fm="ml") 
fa.diagram(fa(df.cor$correlations, nfactors=3, rotate="varimax", fm="ml"))

fa1 = fa(df.cor$correlations, nfactors=3, rotate="oblimin", fm="ml") 
## Loading required namespace: GPArotation
fa.diagram(fa(df.cor$correlations, nfactors=3, rotate="oblimin", fm="ml"))

fa3 = fa(df1, nfactors = 3, cor="mixed", fm="mle")
fa.diagram(fa(df1, nfactors = 3, cor="mixed", fm="mle"))

Все модели показали лучший результат, чем модель без вращения. Вращение oblimin (в обоих случаях) демонстрирует лучшее распределение Proportion Explained, все переменные, входящие в факторы, совпадают в последних двух моделях, так, мы остановимся на последней модели для интерпретации факторов.

  1. фактор, относящийся к личному учебному пространству школьника (собственных компьютера/планшета, рабочего стола, комнаты);
  2. фактор, относящийся к минимальному набору технических вещей, необходимых для ребенка (наличие Интернет-соединения; общего компьютера/планшета; собственного мобильного телефона);
  3. техника, не связанная с учебой, скорее демонстрирующая общее благосостояние семьи (наличие автомобиля (один или несколько), квартиры (или дома) с 4 и более комнатами, посудомоечной машины, игровой системы)
  1. Добавим полученные факторы в регрессионную модель.
f2 <- df1[c('BSBG06E', 'BSBG06F', 'BSBG06B')] 
f1 <- df1[c('BSBG06C', 'BSBG06D', 'BSBG06A')] 
f3 <- df1[c('BSBG06K', 'BSBG06G', 'BSBG06I', 'BSBG06J')] 
a = fa3$scores 
a = cbind(a, f1, f2, f3) 

model4 = lm(df$BSMMAT01~df$BSBG01 + df$BSBG10A + df$BSBG04 + df$BSBG06A + df$BSBG06B + df$BSBG04*df$BSBG06B + a$ML2 + a$ML1 + a$ML3)
summary(model4)
## 
## Call:
## lm(formula = df$BSMMAT01 ~ df$BSBG01 + df$BSBG10A + df$BSBG04 + 
##     df$BSBG06A + df$BSBG06B + df$BSBG04 * df$BSBG06B + a$ML2 + 
##     a$ML1 + a$ML3)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -250.963  -53.805    1.872   53.863  269.783 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           496.4015     4.1226 120.410  < 2e-16 ***
## df$BSBG012             10.4456     2.3238   4.495 7.12e-06 ***
## df$BSBG10A2            -0.5034     6.3783  -0.079   0.9371    
## df$BSBG04              12.0515     1.2138   9.929  < 2e-16 ***
## df$BSBG06A2            18.5907     3.5332   5.262 1.49e-07 ***
## df$BSBG06B2             5.5675     9.3720   0.594   0.5525    
## a$ML2                  -8.8800     1.8128  -4.898 9.99e-07 ***
## a$ML1                  -0.3823     1.5034  -0.254   0.7993    
## a$ML3                   2.2684     1.6732   1.356   0.1752    
## df$BSBG04:df$BSBG06B2  -5.8035     3.0034  -1.932   0.0534 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 77.36 on 4586 degrees of freedom
## Multiple R-squared:  0.05205,    Adjusted R-squared:  0.05019 
## F-statistic: 27.98 on 9 and 4586 DF,  p-value: < 2.2e-16

Так, модель значима, так как p-value < 2.2e-16. Adjusted R-squared = 0.05019, что немного выше, чем у предыдущей модели, но все равно очень мало. Значимыми предикторами являются следующие переменные: BSBG01, BSBG04, BSBG06A, ML2, BSBG04:BSBG06B2. - мальчики, в сравнении с девочками, на имеют математическую успеваемость на 10.45 выше; - при увеличении переменной “количество книг” на одну единицу (переход в следующую категорию), математическая успеваемость увеличивается на 12.05; - не имеющие собственный компьютер/планшет, в сравнении с теми, у кого он есть, имеют успеваемость по математике выше на 18.59; - фактор, относящийся к минимальному набору технических вещей, необходимых для ребенка, отображает негативную связь с зависимой переменной, т.е. при увеличении значения, математические достижения будут уменьшаться; - интерактивный эффект имеет негативную связь, в дальнейшем будет рассмотрен график взаимосвязи.

  1. Графики

Интеракция

library(lattice)
#model2
xyplot(df$BSMMAT01 ~ df$BSBG04, main = "Наличие общего планшета/ПК (1 - есть, 2 - нет)", xlab = "Фактор №2", ylab = "Количество книг в доме", groups = df$BSBG06B, data= df, type= c('p','r'), 
       grid= T, lwd= 3, auto.key= T,)

Вывод: при увеличении числа книг в доме те, у кого есть общий компьютер/планшет, имеют лучшие достижения в математике, чем те, у кого его нет (разрыв увеличивается).

plot(df$BSMMAT01~df$BSBG04, xlab = "Количество книг в доме", ylab = "Математические достижения")

plot(df$BSMMAT01~a$ML2, xlab = "Фактор №2", ylab = "Математические достижения")

fa.diagram(fa(df1, nfactors = 3, cor="mixed", fm="mle"))

Таким образом, число книг в доме прямо пропорционально успеваемости по математике, тогда как наличие собственного компьютера/планшета негативно влияет на учебные достижения. Общий компьютер, наоборот, увеличивает успеваемость, и при росте числа книг, этот разрыв увеличивается. Также на достижения в математике влияет пол.