8  Сызықтық регрессия

Warning: package 'ggplot2' was built under R version 4.5.2

Сызықтық регрессия

  • Мысалға қарайық: бізде екі айнымалы бар:

  • \(X\) - sleep - кездейсоқ студенттің тәуліктік орташа ұйқы уақыты

  • \(Y\) - GPA - оның GPA

sleep GPA
5.373546 2.541726
6.183643 2.925353
5.164371 2.418771
7.595281 3.386143
6.329508 2.831231
5.179532 2.959112

Визуализация

  • Шашыраңқы диаграмманы қарастырайық

Визуалды талдау

  • График трендті анық көрсетеді, оны елестету үшін қолданып көрейік
Warning in geom_abline(intercept = 0, qiyalik = 0.27, color = "tomato"):
Ignoring unknown parameters: `qiyalik`
Warning in geom_abline(intercept = 1, горизонт = 0.27, color = "steelblue"):
Ignoring unknown parameters: `горизонт`
Warning in geom_abline(intercept = 1, горизонт = 0.33, color = "wheat3"):
Ignoring unknown parameters: `горизонт`

  • Сіздің ойыңызша, қай сызық трендті ең жақсы сипаттайды? Және неге?
  • Қызыл
  • Көк
  • Бидай

Кішкене алгебра

  • Түзу сызық - бұл негізінен деректер моделі: \(GPA = \beta_0 + \beta_1*ұйқы\)
  • \(\beta_0\) - y-қиылысу нүктесі
  • \(\beta_1\) - көлбеу (яғни көлбеу)
  • Түзу сызық сызған кезде, біз \(\beta_1\) және \(\beta_0\) параметрлерін көрсетеміз
  • \(\beta_1\), көлбеуді келесідей түсіндіре аламыз: әрбір қосымша \(1\) сағат ұйқы үшін студент орташа есеппен GPA-сын \(\beta_1\)-қа жақсартады
  • Бұл жақсы, бірақ сіз қалағаныңызша көп түзу сызықтар сыза аласыз. Қайсысы деректерді ең жақсы сипаттайтынын қалай шешесіз?
  • blue деректерге red қарағанда жақсырақ сәйкес келетіні интуитивті.
  • Дегенмен, blue және wheat сызықтары арасындағы айырмашылық онша айқын емес.
  • Сызықтың деректерге қаншалықты сәйкес келетінін сандық өлшеммен өлшеу жақсы болар еді.
  • Ойланайық. Біз GPA мәндерін, \(y_i\), сондай-ақ болжамды мәндерді, \(\hat{y}_i\) байқадық.
  • Олардың арасындағы айырмашылық болжам қателігі, \(\epsilon_i = y_i - \hat{y}_i\).
  • Бұл қателіктер residuals[^chapter8-1] (residuals) деп аталады.
  • Барлық қалдықтарды алып, оларды квадраттап, бірге қоссақ не болады? Бұл қосындыны \(J\) деп белгілейік.
  • \(J(\beta_0, \beta_1) = \sum_{i=1}^{n}(\epsilon^2) = \sum_{i=1}^{n}(y_i - \hat{y}_i)^2 = \sum_{i=1}^{n}(y_i - \beta_0 - \beta_1 x_i)^2\)
  • Бұл сызықтың деректерге жақындығын сипаттаудың жақсы тәсілі сияқты.
  • \(J\)-тың кіші мәндері қателіктеріміздің қосындысының аз екенін білдіреді, яғни сызық деректерге жақсы сәйкес келеді.
  • \(J\)-тың үлкен мәндері қателіктеріміздің қосындысының үлкен екенін білдіреді, яғни сызық деректерге нашар сәйкес келеді.
  • \(J\) жоғалту функциясы деп аталады.
  • Енді осы метриканы пайдаланып, үш сызықты салыстырайық.

Тексерейік

  • Бізде үш модель бар
  • 1-модель, қызыл сызық: \(\beta_0 = 0, \beta_1 = 0.27\) немесе \(\hat{Y}_{red} = 0 + 0.27X\)
  • 2-модель, көк сызық: \(\beta_0 = 1, \beta_1 = 0.27\) немесе \(\hat{Y}_{blue} = 1 + 0.27X\)
  • 3-модель, бидай сызығы: \(\beta_0 = 1, \beta_1 = 0.33\) немесе \(\hat{Y}_{бидай} = 1 + 0.33X\)
students_sleep_reg <-
students_sleep %>%
mutate(res_red = GPA - (0 + 0.27*sleep),
res_blue = GPA - (1 + 0.27*sleep),
res_wheat = GPA - (1 + 0.33*sleep))
students_sleep_reg %>%
summarise(j_red = sum(res_red^2),
j_blue = sum(res_blue^2),
j_wheat = sum(res_wheat^2))
j_red j_blue j_wheat
156.7258 9.366998 5.349284

Ең жақсысын қалай табуға болады?

  • Жарайды, алғашқы үш модельден біреуін таңдай аламыз. Бірақ шексіз көп модель бар ма? Абсолютті ең жақсы сызық бар ма?

  • Бұл нені білдіреді? \(J(\beta_0, \beta_1)\) минимумы бар ма?

  • Бұл квадраттардың қосындысы, сондықтан иә, солай, және онда тек біреуі ғана бар.

  • Сондықтан математикада барлығын квадраттағанды ​​ұнатады.

  • Біз \(J(\beta_0^{'}, \beta_1^{'})\) минималды мәнді қабылдайтындай \(\beta_0^{'}\) және \(\beta_1^{'}\) таба аламыз.

  • Немесе, “математикалық” терминдермен айтқанда, \(\arg\min_{\beta_0, \beta_1}(J(\beta_0, \beta_1)) = \arg\min_{\beta_0, \beta_1}(\sum_{i=1}^{n}(y_i - \beta_0 - \beta_1 x_i)^2)\).

  • Шығын функциясын минимумдайтын мәндерді табу оңай; тек жартылай туындыларды алып, оларды нөлге теңеп, сызықтық теңдеулер жүйесін шешіңіз. = 0 \ = 0

                   $$

R құтқаруға келеді


Call:
lm(formula = GPA ~ sleep, data = students_sleep)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.3754 -0.1227 -0.0279  0.1079  0.4692 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.99373    0.13302   7.471 3.36e-11 ***
sleep        0.30979    0.02155  14.378  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1926 on 98 degrees of freedom
Multiple R-squared:  0.6784,    Adjusted R-squared:  0.6751 
F-statistic: 206.7 on 1 and 98 DF,  p-value: < 2.2e-16
  • Енді есептелген коэффициенттерді қабылдай аламыз
Warning in geom_abline(intercept = 0, slop = 0.27, color = "tomato", alpha =
0.3): Ignoring unknown parameters: `slop`
Warning in geom_abline(intercept = 1, slop = 0.27, color = "steelblue", :
Ignoring unknown parameters: `slop`
Warning in geom_abline(intercept = 1, көлбеу = 0.33, түс = "бидай3", : Ignoring
unknown parameters: `көлбеу`, `түс`, and `альфа`
Warning in geom_abline(intercept = the_beta0, көлбеу = the_beta1, : Ignoring
unknown parameters: `көлбеу` and `түсі`

  • Сандар да растайды
j_red j_blue j_wheat j_best
156.7258 9.366998 5.349284 3.633424

Қалдықтар туралы ойланайық

  • Қалдықтар мен түсіндірме айнымалы мәндері үшін шашыраңқы графигін салайық.
  • red моделі үшін орташа қалдықтар \(1.25\) құрайды
students_sleep_reg %>%
ggplot(aes(x = sleep, y = res_red)) +
geom_point() +
geom_hline(yintercept = mean(students_sleep_reg$res_red))

  • “көк” моделі үшін орташа қалдықтар \(0.25\) құрайды
students_sleep_reg %>%
ggplot(aes(x = sleep, y = res_blue)) +
geom_point() +
geom_hline(yintercept = mean(students_sleep_reg$res_blue))

  • “бидай” моделі үшін орташа қалдықтар \(-0.1\) құрайды
students_sleep_reg %>%
ggplot(aes(x = sleep, y = res_wheat)) +
geom_point() +
geom_hline(yintercept = mean(students_sleep_reg$res_wheat))

  • Бірақ біздің ең жақсы моделіміз үшін бұл \(0\) болып шығады
students_sleep_reg %>%
ggplot(aes(x = sleep, y = res_best)) +
geom_point() +
geom_hline(yintercept = mean(students_sleep_reg$res_best))

tibble(R_calculated = my_linear_model$residuals,
Darkhan_calculated = students_sleep_reg$res_best) %>%
head()
R_calculated Darkhan_calculated
-0.1166677 -0.1166677
0.0160006 0.0160006
-0.1748230 -0.1748230
0.0394826 0.0394826
-0.1233085 -0.1233085
0.3608220 0.3608220

Ең жақсы модельге тағы бір көз жүгіртейік

  • Коэффициенттерді түсінуге тырысайық. Модельге көз жүгіртейік
my_linear_model %>% summary()

Call:
lm(formula = GPA ~ sleep, data = students_sleep)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.3754 -0.1227 -0.0279  0.1079  0.4692 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.99373    0.13302   7.471 3.36e-11 ***
sleep        0.30979    0.02155  14.378  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1926 on 98 degrees of freedom
Multiple R-squared:  0.6784,    Adjusted R-squared:  0.6751 
F-statistic: 206.7 on 1 and 98 DF,  p-value: < 2.2e-16
  • Немесе оқылатын түрде. Мақалалардағы регрессия кестелері әдетте келесідей көрінеді:
Model
(Intercept) 0.994 (0.133)***
[0.730, 1.258]
sleep 0.310 (0.022)***
[0.267, 0.353]
Num.Obs. 100
R2 0.678
R2 Adj. 0.675
F 206.738
RMSE 0.19
  • Коэффициенттерді алып, оларды сызықтық модельге ауыстырайық.

\[\begin{align*} GPA = 0.99373 + 0.30979*sleep \\ \textrm{if sleep} = 7 \\ GPA = 0.99373 + 0.30979*7 = 3.16226 \\ \textrm{if sleep} = 8 \\ GPA = 0.99373 + 0.30979*8 = 3.47205 \end{align*}\]

  • ‘*’ жұлдызшалары коэффициенттің \(0\) екендігі туралы нөлдік гипотезаға қарсы маңыздылық деңгейлерін көрсетеді
  • p-мәні неғұрлым кіші болса, біздікіне ұқсас деректерді байқау ықтималдығы соғұрлым аз болады, яғни коэффициент нөлге тең емес.
  • Соңында, R-squared, бұл не? Алдымен регрессия теңдеуін қарастырайық.

\[\begin{align*} Y = \beta_0 + \beta_1X + \epsilon (\sim N(\mu_{\epsilon}, \sigma^2_{\epsilon})) \\ Var(Y) = Var(\hat{Y}) + \sigma^2_{\epsilon} \\ Var(Y) = \beta_{1}^{2}Var(\hat{X}) + \sigma^2_{\epsilon} \\ \end{align*}\]

  • Мұны былай түсіндіруге болады:
  • жауап айнымалысы дисперсиясын түсіндіру айнымалысының дисперсиясы және қалдықтардың дисперсиясы (яғни, шу)- R-квадрат1 болып табылады жауап айнымалысының дисперсиясы мен қалдықтардың дисперсиясы арасындағы қатынас, \((var(Y) - \sigma^2_{\epsilon})/var(Y)\). Басқаша айтқанда, бұл түсіндірілген дисперсия пайызы.
  • Сіз қателіктер жібермейтін модельді орната алдыңыз деп елестетіп көріңіз, онда \(\sigma^2_{\epsilon} = 0\) және \(\textrm{R-squared} = 1\), бұл сіз жауап айнымалысындағы барлық дисперсияны түсіндірдіңіз дегенді білдіреді.
var_y var_resid R-squared
0.114125 0.0367013 0.6784119

Call:
lm(formula = GPA ~ sleep, data = students_sleep)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.3754 -0.1227 -0.0279  0.1079  0.4692 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.99373    0.13302   7.471 3.36e-11 ***
sleep        0.30979    0.02155  14.378  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1926 on 98 degrees of freedom
Multiple R-squared:  0.6784,    Adjusted R-squared:  0.6751 
F-statistic: 206.7 on 1 and 98 DF,  p-value: < 2.2e-16

R-squared туралы аздап көбірек

`geom_smooth()` using formula = 'y ~ x'

  • Қалдықтар
Warning: `fortify(<lm>)` was deprecated in ggplot2 4.0.0.
ℹ Please use `broom::augment(<lm>)` instead.
ℹ The deprecated feature was likely used in the ggplot2 package.
  Please report the issue at <https://github.com/tidyverse/ggplot2/issues>.

tibble(`Total Variance` = students_sleep_2$GPA_1 %>% var() %>% round(2), 
       `Explained Variance` = fitr1$fitted.values %>% var() %>% round(2), 
       `Residual Variance` = fitr1$residuals %>% var() %>% round(2))
Total Variance Explained Variance Residual Variance
0.1 0.06 0.04

R-squared 2

`geom_smooth()` using formula = 'y ~ x'

  • Қалдықтары

Total Variance Explained Variance Residual Variance
0.21 0.04 0.17

R-squared 3

`geom_smooth()` using formula = 'y ~ x'

  • Қалдықтары

Total Variance Explained Variance Residual Variance
1.146 0.014 1.132

Сызықтық регрессия: Болжамдар

  • Жоғарыдағы мысалдарда біз сызықтық модельге сәйкестендіруге тырысқан деректерге ие болдық. Ол үшін біз бірнеше жасырын болжамдар жасадық. Оларды толығырақ қарастырайық.

  • Сызықтық: Біз жауап айнымалысы түсіндірме айнымалының сызықтық функциясына тәуелді деп анық болжадық.

  • Қалыпты қалдықтар: Біз сондай-ақ қалдықтар/қателер қалыпты түрде таралған деп болжадық. Яғни, біз модель қателіктер жібереді деп болжаймыз, бірақ бұл қателіктер симметриялы және әдетте бір-бірін жояды.

  • Тұрақты дисперсия[^chapter8-3]: Біз сондай-ақ жауап айнымалысының дисперсиясы түсіндірме айнымалының әртүрлі мәндері үшін өзгермейді деп болжадық (яғни, қателіктер әрқашан шамамен бірдей).

  • Тәуелсіз бақылаулар: Соңында, біз айнымалылардың бақылаулары бір-бірінен тәуелсіз деп болжадық. Бұл болжамның бұзылған мысалы - уақыт қатары. Мысалы, температура мен тәулік уақыты арасындағы байланыс. Егер температура сағат 15:00-де 3˚C болса, онда сағат 16:00-де ол 3˚C-қа жақын болады.

Шарттар орындалмаған кезде не болады

  • Айталық, біз стресс, «стресс» және академиялық үлгерім, «өнімділік» арасындағы байланысты қарастырып жатырмыз.
set.seed(123)
temp_df <-
tibble(stress = rnorm(1000, mean = 6, 1),
performance = 13 - ((stress - 5)^2) + rnorm(1000, mean = 0, sd = 2)) %>%
mutate(performance =
10*(performance - min(performance))/(max(performance) - min(performance) + 0.5))
p_ex2 <-
temp_df %>%
ggplot(aes(x = stress, y = performance)) +
geom_point() +
labs(x = "Stress Level", y = "Academic Performance")
p_ex2

Сызықтық еместік

  • Деректерді түзу сызықпен сәйкестендіруге тырысайық.
p_ex2 +
geom_smooth(method = "lm")

  • Бірдеңе анық дұрыс емес!

Қалдықтар

  • Күмәндануларға қарамастан, біз модельді деректерге сәйкестендіреміз делік.
  • Нәтижелерді қарастырамыз, және бәрі жақсы болып көрінеді. R-squared $0.37. Уау! Біз дисперсияның үштен бір бөлігінен астамын түсіндірдік!
fit1 <-
lm(performance ~ stress, data = temp_df)
summary(fit1)

Call:
lm(formula = performance ~ stress, data = temp_df)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.4317 -0.6240  0.0841  0.6980  2.9457 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 11.15337    0.19052   58.54   <2e-16 ***
stress      -0.76947    0.03125  -24.62   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.9794 on 998 degrees of freedom
Multiple R-squared:  0.378, Adjusted R-squared:  0.3773 
F-statistic: 606.4 on 1 and 998 DF,  p-value: < 2.2e-16
  • Онша тез емес! Қалдықтарды қарастырайық!
ggplot(fit1, aes(x = .fitted, y = .resid)) + 
  geom_point() + 
  geom_hline(yintercept = 0, linetype = "dashed", color = "red")

  • Сонымен, қалдықтар бізге не айтады?
  • Біздің модель стресс деңгейі төмен немесе жоғары адамдардың өнімділігін жүйелі түрде асыра бағалайды.
  • Сондай-ақ, ол орташа стресс деңгейі бар адамдардың өнімділігін де төмен бағалайды.

Қалдықтардың қалыптылығы

  • Егер қалдықтардың таралуына қарасақ, оның солға қарай қисайғанын көреміз.
ggplot(data = fit1, aes(x = .resid)) +
geom_blank() +
geom_histogram(aes(y = ..density..), color = "grey50",
bins = 30) +
geom_density(color = "steelblue") +
xlab("Residuals") +
stat_function(fun = dnorm, args = c(mean = 0, sd = sd(fit1$residuals)),
color = "tomato")
Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
ℹ Please use `after_stat(density)` instead.

  • Соңында, Q-Q графигі деп аталатын жаңа нәрсені қолданып көрейік.

Q-Q графигі - екі үлестірімді олардың квантильдерін бір-біріне қарсы қою арқылы салыстырудың графикалық әдісі. Графиктегі нүкте екінші үлестірімнің квантильдерінің біріне сәйкес келеді, бірінші үлестірімнің сол квантильіне қарсы қойылған.

ggplot(data = fit1, aes(sample = .resid)) +
stat_qq() +
stat_qq_line(color = "red") +
labs(x = "Қалыпты квантилдер", y = "Қалдық квантилдер")

Мысалы, бұл графикте қалдық үлестірімді центрі мен дисперсиясы бірдей теориялық қалыпты үлестіріммен салыстырамыз. Қалдықтардың ауырырақ “сол жақ құйрығы” бар екенін көреміз — жеке бақылаулар орташа мәннен 4 стандартты ауытқуларға дейін ауытқиды. Егер біздің қалдықтарымыз қалыпты үлестірілсе, нүктелер түзу сызықта жатады.

Тағы бір мысал

tibble(x = rweibull(100, shape = 1) - 1) %>%
ggplot(aes(x = x)) +
geom_histogram(bins = 30, color = "gray")

set.seed(1212)
df <- tibble(
x = runif(100, -1, 1),
error = rweibull(100, shape = 1) - 1,
y = 1*x + error)
fit <-
df %>%
lm(data = ., y ~ x)
summary(fit)

Call:
lm(formula = y ~ x, data = .)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.1496 -0.7185 -0.1893  0.3811  4.2376 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.16465    0.09833   1.674   0.0972 .  
x            1.23180    0.17224   7.152 1.56e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.9755 on 98 degrees of freedom
Multiple R-squared:  0.3429,    Adjusted R-squared:  0.3362 
F-statistic: 51.15 on 1 and 98 DF,  p-value: 1.559e-10
df %>%
  ggplot(aes(x = x, y = y)) +
  geom_point() + 
  geom_smooth(method = "lm")
`geom_smooth()` using formula = 'y ~ x'

Жаттығулар

  • Жаттығайық. Мен сендерге регрессияларды беремін, ал сендер оларды түсіндіресіңдер.
pisa_kz <-
read_rds("data/pisa_2018.rds") %>%
filter(CNT == "Kazakhstan")
pisa_kz %>% head()
CNT LANGTEST_COG ST011Q01TA ST011Q02TA ST011Q03TA ST011Q04TA ST011Q05TA ST011Q06TA ST011Q07TA ST019AQ01T ST012Q01TA ST012Q02TA ST012Q03TA ST012Q05NA ST012Q06NA ST012Q07NA ST012Q08NA ST012Q09NA ST013Q01TA ST097Q01TA ST097Q02TA ST097Q03TA ST097Q04TA ST097Q05TA ST100Q01TA ST100Q02TA ST100Q03TA ST100Q04TA ST102Q01TA ST102Q02TA ST102Q03TA ST102Q04TA ST158Q01HA ST158Q02HA ST158Q03HA ST158Q04HA ST158Q05HA ST158Q06HA ST158Q07HA ST160Q01IA ST160Q02IA ST160Q03IA ST160Q04IA ST160Q05IA ST167Q01IA ST167Q02IA ST167Q03IA ST167Q04IA ST167Q05IA ST175Q01IA FISCED MISCED TMINS ESCS WEALTH PV1MATH PV1READ PV1SCIE Gender
Kazakhstan Kazakh Yes No Yes Yes Yes Yes No Country of test One One None None One None None None 11-25 books Some lessons Some lessons Some lessons Some lessons Some lessons Some lessons Some lessons Some lessons Some lessons Some lessons Some lessons Some lessons Every lesson No Yes No No No Yes No Disagree Agree Disagree Disagree Disagree A few times a year A few times a year Several times a month About once a month A few times a year More than 30 minutes to less than 60 minutes a day ISCED 3A, ISCED 4 ISCED 3A, ISCED 4 1620 -1.3482 -1.9957 414.520 396.672 348.232 Male
Kazakhstan Kazakh Yes Yes Yes No No Yes Yes Country of test One None None None None Three or more Three or more One 0-10 books Never or hardly ever Never or hardly ever Never or hardly ever Never or hardly ever Never or hardly ever Every lesson Most lessons Most lessons Most lessons Most lessons Most lessons Most lessons Most lessons No No Yes No Yes No No Disagree Agree Disagree Strongly disagree Disagree About once a month About once a month About once a month Several times a month About once a month More than 30 minutes to less than 60 minutes a day ISCED 3A, ISCED 4 ISCED 3A, ISCED 4 2240 -0.6018 -0.8302 353.766 308.628 371.455 Male
Kazakhstan Kazakh Yes Yes Yes NA No NA NA Other country One NA NA NA NA NA NA NA 0-10 books Some lessons Never or hardly ever Never or hardly ever Never or hardly ever Never or hardly ever Every lesson Some lessons Every lesson Every lesson Every lesson Every lesson Every lesson Every lesson Yes Yes Yes Yes Yes Yes Yes Disagree Agree Strongly agree Disagree Disagree A few times a year Several times a month Several times a week Several times a month Never or almost never More than 30 minutes to less than 60 minutes a day ISCED 5B ISCED 3A, ISCED 4 NA -1.1250 NA 350.357 414.048 335.833 Female
Kazakhstan Kazakh Yes No Yes No No Yes Yes Country of test One One None None None None None One 11-25 books Some lessons Never or hardly ever Never or hardly ever Some lessons Never or hardly ever Never or hardly ever Every lesson Every lesson Every lesson Never or hardly ever Never or hardly ever Never or hardly ever Never or hardly ever Yes Yes Yes No No No No Strongly disagree Agree Agree Disagree Disagree Several times a week About once a month Several times a week Several times a month Several times a month 1 to 2 hours a day ISCED 3A, ISCED 4 ISCED 3A, ISCED 4 NA -0.6677 -1.8445 275.045 268.966 207.007 Male
Kazakhstan Kazakh Yes Yes Yes No No Yes No Country of test One One None One None Two None None 11-25 books Some lessons Never or hardly ever Never or hardly ever Never or hardly ever Never or hardly ever Every lesson Every lesson Every lesson Every lesson Every lesson Every lesson Every lesson Every lesson Yes Yes Yes Yes Yes Yes Yes Disagree Agree Strongly disagree Disagree Disagree Several times a month Never or almost never About once a month About once a month Several times a week 1 to 2 hours a day ISCED 5B ISCED 3A, ISCED 4 1530 -1.1238 -1.9130 250.600 411.113 366.879 Female
Kazakhstan Kazakh Yes No Yes Yes Yes Yes No Country of test Two Two None None One None None None 0-10 books Never or hardly ever Some lessons Some lessons Some lessons Some lessons Some lessons Some lessons NA Some lessons Every lesson Every lesson Every lesson Every lesson No No No No Yes No No Agree Agree Disagree Disagree Agree A few times a year Never or almost never A few times a year A few times a year Several times a week I do not read for enjoyment ISCED 3A, ISCED 4 ISCED 3A, ISCED 4 NA -1.4306 -1.2780 408.725 361.051 334.163 Male
  • Нұсқаулыққа назар аударайық
Rows: 60 Columns: 2
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (2): name, value

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
name value
CNT Country code 3-character
CNTSCHID Intl. School ID
LANGTEST_COG Language of Assessment
ST011Q01TA In your home: A desk to study at
ST011Q02TA In your home: A room of your own
ST011Q03TA In your home: A quiet place to study
ST011Q04TA In your home: A computer you can use for school work
ST011Q05TA In your home: Educational software
ST011Q06TA In your home: A link to the Internet
ST011Q07TA In your home: Classic literature (e.g. )
ST019AQ01T In what country were you and your parents born? You
ST012Q01TA How many in your home: Televisions
ST012Q02TA How many in your home: Cars
ST012Q03TA How many in your home: Rooms with a bath or shower
ST012Q05NA How many in your home: with Internet access (e.g. smartphones)
ST012Q06NA How many in your home: Computers (desktop computer, portable laptop, or notebook)
ST012Q07NA How many in your home: (e.g. , )
ST012Q08NA How many in your home: E-book readers (e.g. , , )
ST012Q09NA How many in your home: Musical instruments (e.g. guitar, piano)
ST013Q01TA How many books are there in your home?
ST097Q01TA How often during : Students don’t listen to what the teacher says.
ST097Q02TA How often during : There is noise and disorder.
ST097Q03TA How often during : The teacher waits long for students to quiet down.
ST097Q04TA How often during : Students cannot work well.
ST097Q05TA How often during : Students don’t start working for a long time after the lesson begins.
ST100Q01TA How often during : The teacher shows an interest in every student’s learning.
ST100Q02TA How often during : The teacher gives extra help when students need it.
ST100Q03TA How often during : The teacher helps students with their learning.
ST100Q04TA How often during : The teacher continues teaching until the students understands.
ST102Q01TA How often during : The teacher sets clear goals for our learning.
ST102Q02TA How often during : The teacher asks questions to check whether we have understood what was taught
ST102Q03TA How often during : […] the teacher presents a short summary of the previous lesson.
ST102Q04TA How often during : The teacher tells us what we have to learn.
ST158Q01HA Taught at school: How to use keywords when using a search engine such as <Google©>, <Yahoo©>, etc.
ST158Q02HA Taught at school: How to decide whether to trust information from the Internet
ST158Q03HA Taught at school: How to compare different web pages and decide what information is more relevant for your school work
ST158Q04HA Taught at school: To understand the consequences of making information publicly available online on , […]
ST158Q05HA Taught at school: How to use the short description below the links in the list of results of a search
ST158Q06HA Taught at school: How to detect whether the information is subjective or biased
ST158Q07HA Taught at school: How to detect phishing or spam emails
ST160Q01IA How much do you agree or disagree? I read only if I have to.
ST160Q02IA How much do you agree or disagree? Reading is one of my favourite hobbies.
ST160Q03IA How much do you agree or disagree? I like talking about books with other people.
ST160Q04IA How much do you agree or disagree? For me, reading is a waste of time.
ST160Q05IA How much do you agree or disagree? I read only to get information that I need.
ST167Q01IA How often do you read these materials because you want to? Magazines
ST167Q02IA How often do you read these materials because you want to? Comic books
ST167Q03IA How often do you read these materials because you want to? Fiction (novels, narratives, stories)
ST167Q04IA How often do you read these materials because you want to? Non-fiction books (informational, documentary)
ST167Q05IA How often do you read these materials because you want to? Newspapers
ST175Q01IA About how much time do you usually spend reading for enjoyment?
FISCED Father’s Education (ISCED)
MISCED Mother’s Education (ISCED)
TMINS Learning time (minutes per week) - in total
ESCS Index of economic, social and cultural status
WEALTH Family wealth (WLE)
PV1MATH Plausible Value 1 in Mathematics
PV1READ Plausible Value 1 in Reading
PV1SCIE Plausible Value 1 in Science
ST004D01T Student (Standardized) Gender

Алдымен айнымалыларды қарастырайық

Warning: Removed 7152 rows containing non-finite outside the scale range
(`stat_bin()`).


Call:
lm(formula = PV1MATH ~ TMINS, data = pisa_kz)

Residuals:
    Min      1Q  Median      3Q     Max 
-359.30  -61.79    1.03   61.21  336.15 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 4.016e+02  2.840e+00  141.42   <2e-16 ***
TMINS       3.292e-02  1.627e-03   20.24   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 90.48 on 12353 degrees of freedom
  (7152 observations deleted due to missingness)
Multiple R-squared:  0.03209,   Adjusted R-squared:  0.03201 
F-statistic: 409.5 on 1 and 12353 DF,  p-value: < 2.2e-16

Түсіндірейік:

  • Модель: \(\textrm{Math Scores} = (Қиылысу) + \beta_1*TMINS + \textrm{Noise}\)

  • Коэффициенттерді ауыстырыңыз: \(\textrm{Math Scores} = 401.6 + 0.033*TMINS + \textrm{Noise}\)

Енді аптасына \(2400\) минут (\(40\) сағат) оқитын оқушыдан қандай математикалық балл күтуге болатынын есептеп көрейік.

  • \(\textrm{E[Math Score]} = 401.6 + 0.033*2400 + Noise = 480.8\)

Нақты деректерге қаншалықты жақын екенімізді көрейік.

pisa_kz %>%
ggplot(aes(x = TMINS, y = PV1MATH)) +
geom_point(alpha = 0.4) +
geom_smooth(method = "lm") +
geom_vline(xintercept = 2400, color = "tomato", size = 3, alpha = 0.4) +
geom_hline(yintercept = 480.8, color = "green", size = 3, alpha = 0.4)

Ал қалдықтарды қарастырайық.

Жалпы алғанда, өте жақсы.

Мұны Q-Q графигін пайдаланып тексерейік.

Дәл солай. Қалдықтар қалыпты таралған сияқты.

[1] 90.47834

Көптік регрессия

Әзірге біз тек бір түсіндірме айнымалымен жұмыс істедік. Алайда, іс жүзінде біз көптеген басқа айнымалыларды қолдануға көбірек қызығушылық танытамыз. Сызықтық регрессия идеясын бірнеше түсіндірме айнымалылар жағдайына кеңейтейік.

\[ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \dots + \beta_p X_p + Noise \]

PISA деректерімізді алып, ескі модельге тек бір айнымалыны, Gender қосып көрейік.

Формальды түрде, біздің моделіміз келесідей болады:

\[ \textrm{Math Score} = (Intercept) + \beta_1*TMINS + \beta_2*I(Gender = Male) + Noise \]

R тілінде біз осы синтаксисті пайдаланып, деректерге модельді сәйкестендіре аламыз.

Регрессия нәтижелерін қарастырайық.


Call:
lm(formula = PV1MATH ~ TMINS + Gender, data = .)

Residuals:
    Min      1Q  Median      3Q     Max 
-361.18  -61.82    0.99   61.32  334.16 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 3.994e+02  2.978e+00 134.124   <2e-16 ***
TMINS       3.305e-02  1.627e-03  20.309   <2e-16 ***
GenderMale  3.953e+00  1.629e+00   2.427   0.0152 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 90.46 on 12352 degrees of freedom
  (7152 observations deleted due to missingness)
Multiple R-squared:  0.03255,   Adjusted R-squared:  0.03239 
F-statistic: 207.8 on 2 and 12352 DF,  p-value: < 2.2e-16

Сонымен, алдымен екі коэффициент те маңызды болды. Бұл деректер оқуға жұмсалған уақыт пен студенттің жынысы математикалық ұпай үшін статистикалық тұрғыдан маңызды екенін көрсетеді дегенді білдіреді. Не болып жатқанын жақсы түсіну үшін коэффициент бағаларын алып, оларды формулаға қоса аламыз.

\[ \textrm{Math Scores} = 399.4 + 0.033*TMINS + 3.953*I(Жынысы = Еркек) + Шу \]

Аптасына 40 сағат оқитын қыз бен ұл үшін күтілетін ұпайларды есептеп көрейік.

Қыз бала үшін:

\[ E[\textrm{Math Score}] = 399.4 + 0.033*2400 + 3.953*0 + Шу \апрокс 478.6 \]

Ұл бала үшін:

\[ E[\textrm{Math Score}] = 399.4 + 0.033*2400 + 3.953*1 + Шу \апрокс 482.6 \]

Сонымен, басқа барлық жағдайлар бірдей болғанда, ұл балалар PISA математика емтиханында қыздарға қарағанда шамамен 4 балл жақсы нәтиже көрсететінін анықтадық. Айырмашылық аз, бірақ статистикалық тұрғыдан маңызды.

Көбірек айнымалылар

Енді көбірек айнымалылар қосайық. Содан кейін сіз нәтижелерді түсіндіресіз.


Call:
lm(formula = PV1MATH ~ TMINS + Gender + ESCS, data = .)

Residuals:
    Min      1Q  Median      3Q     Max 
-349.20  -59.21    1.25   59.27  332.17 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 4.163e+02  2.944e+00 141.407   <2e-16 ***
TMINS       2.675e-02  1.591e-03  16.815   <2e-16 ***
GenderMale  4.518e+00  1.578e+00   2.863   0.0042 ** 
ESCS        2.674e+01  9.401e-01  28.439   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 87.61 on 12342 degrees of freedom
  (7161 observations deleted due to missingness)
Multiple R-squared:  0.09187,   Adjusted R-squared:  0.09165 
F-statistic: 416.2 on 3 and 12342 DF,  p-value: < 2.2e-16
Gender mean(ESCS, na.rm = TRUE)
Female -0.3198707
Male -0.3441408
  • Сіз модельдеріңізге өзара әрекеттесу әсерлерін қоса аласыз. Өзара әрекеттесу әсері бір айнымалының әсері басқа айнымалының мәніне байланысты болған кезде пайда болады.

  • Мысалы, отбасылық байлық ұлдар мен қыздарға әртүрлі әсер етуі мүмкін.


Call:
lm(formula = PV1MATH ~ TMINS + Gender * ESCS, data = .)

Residuals:
    Min      1Q  Median      3Q     Max 
-348.63  -59.05    1.30   59.37  331.80 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)     4.161e+02  2.954e+00 140.855  < 2e-16 ***
TMINS           2.677e-02  1.591e-03  16.822  < 2e-16 ***
GenderMale      4.961e+00  1.645e+00   3.016  0.00257 ** 
ESCS            2.584e+01  1.329e+00  19.450  < 2e-16 ***
GenderMale:ESCS 1.774e+00  1.863e+00   0.952  0.34101    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 87.61 on 12341 degrees of freedom
  (7161 observations deleted due to missingness)
Multiple R-squared:  0.09194,   Adjusted R-squared:  0.09165 
F-statistic: 312.4 on 4 and 12341 DF,  p-value: < 2.2e-16

\[ \textrm{Математикалық ұпай} = 416.1 + 0.0268*TMINS + 4.96*Жынысы + 25.84*ESCS + 0*ЖынысыЕр:ESCS \]

Бай отбасынан шыққан қыз: TMINS = 2400, ESCS = 1

\[ \textrm{Математикалық ұпай} = 416.1 + 0.0268*2400 + 25.84*1 = 506.26 \]

Орташа отбасынан шыққан қыз: TMINS = 2400, ESCS = 0

\[ \textrm{Математикалық ұпай} = 416.1 + 0.0268*2400 + 25.84*0 = 481 \]

Бай отбасынан шыққан бала:

\[ \textrm{Математикалық ұпай} = 416.1 + 0.0268*2400 + 4.96*1 + 25.84*1 = 511.26 \]

Орта тап отбасынан шыққан бала:

\[ \textrm{Математикалық ұпай} = 416.1 + 0.0268*2400 + 4.96*1 + 25.84*0 = 485.38 \]

Өзара әрекеттесу әсерлері

  • Мысал ретінде, Қазақстан мен Жапония үшін PISA нәтижелерін салыстырайық
CNT Mean
Japan 528.2104
Kazakhstan 439.9113
  • Бір түсіндірме айнымалысы бар қарапайым модельді қарастырайық (ел)
(1)
(Intercept) 528.210
(1.174)
CNTKazakhstan -88.299
(1.345)
Num.Obs. 25616
R2 0.144
R2 Adj. 0.144
AIC 304222.3
BIC 304246.7
Log.Lik. -152108.137
F 4308.341
RMSE 91.75
  • Мұнда біз Қазақстандағы оқушылардың математикалық тесттерден Жапонияға қарағанда орташа есеппен 88 балл нашар жинағанын көреміз.

  • Модельді күрделендіріп, BAYLIQ айнымалысын (отбасылық байлық) қосайық.

(1)
(Intercept) 534.606
(1.198)
CNTKazakhstan -79.115
(1.397)
WEALTH 14.850
(0.697)
Num.Obs. 25487
R2 0.159
R2 Adj. 0.159
AIC 302112.7
BIC 302145.3
Log.Lik. -151052.338
RMSE 90.71
  • Қазақстан үшін коэффициент өзгерді! Неліктен?

  • Себебі CNT айнымалысы Wealth айнымалысымен корреляцияланған. Қарап көріңіз.

Warning: Removed 129 rows containing non-finite outside the scale range
(`stat_bin()`).

(1)
(Intercept) 490.772
(2.812)
CNTKazakhstan -71.391
(1.489)
WEALTH 12.564
(0.837)
THOURS 1.776
(0.089)
Num.Obs. 17872
R2 0.174
R2 Adj. 0.174
AIC 210561.1
BIC 210600.1
Log.Lik. -105275.571
RMSE 87.50
  • Қазақстан үшін коэффициент қайтадан төмендеді (абсолютті мәнде)!

  • Бұл THOURS және CNT айнымалыларының да корреляцияланғанын білдіреді.

Warning: Removed 7715 rows containing non-finite outside the scale range
(`stat_bin()`).

  • Енді CNT елі мен WEALTH байлығы арасындағы өзара әрекеттесу әсері бар модель құруға тырысайық.
(1)
(Intercept) 486.059
(2.834)
CNTKazakhstan -59.828
(1.810)
WEALTH -2.063
(1.554)
THOURS 1.733
(0.089)
CNTKazakhstan × WEALTH 20.525
(1.839)
Num.Obs. 17872
R2 0.180
R2 Adj. 0.180
AIC 210439.0
BIC 210485.8
Log.Lik. -105213.510
RMSE 87.19
  • Мұны қалай түсінеміз? Формуланы қарастырайық:

\[\begin{align*} \textrm{Math Score} &= \beta_0 + \beta_1 \times I(CNT = Қазақстан) + \beta_2 \times BAYLIQ + \beta_3 \times THOURS + \beta_4 \times (BAYLIQ \times Қазақстан) \\ \textrm{Math Score} &= 486 − 59.8 \times I(CNT = Қазақстан) − 0 \times BAYLIQ + 1.733 \times THOURS + 20.525 \times (BAYLIQ \times Қазақстан) \end{align*}\]

  • Енді Қазақстан мен Жапониядағы бай және кедей отбасылардан шыққан оқушылардың математикадан қалай нәтиже көрсететінін түсінуге тырысайық.

Кедей отбасынан шыққан еңбекқор жапон оқушысы: САҒАТ = 40, БАЙЛЫҚ = 0

\[ Математикадан ұпайлар = 486 - 0 - 0 + 1.733 \есеп 40 + 20.5 \есеп 0 \шамамен 555 \]

Кедей отбасынан шыққан еңбекқор қазақ жігіті: САҒАТ = 40, БАЙЛЫҚ = 0

\[ Математикадан ұпайлар = 486 - 59.8 - 0 + 1.733 \есеп 40 + 20.5 \есеп 0 \шамамен 495.5 \]

Бай отбасынан шыққан еңбекқор жапон жігіті: САҒАТ = 40, БАЙЛЫҚ = 3

\[ Математикадан ұпайлар = 486 - 0 - 0 + 1.733 \есеп 40 + 20.5 \есеп 0 \шамамен 555 \]

Еңбекқор Бай отбасынан шыққан қазақ: САҒАТ = 40, БАЙЛЫҚ = 3

\[ Математикадан ұпайлар = 486 - 59.8 - 0 + 1.733 \times 40 + 20.5 \times 3 \approx 557 \]

  • Графиктерді салуға болады. Алдымен синтетикалық деректерді құрайық.
CNT THOURS WEALTH
Kazakhstan 30 -3
Kazakhstan 30 -2
Kazakhstan 30 -1
Kazakhstan 30 0
Kazakhstan 30 1
Kazakhstan 30 2
Kazakhstan 30 3
Japan 30 -3
Japan 30 -2
Japan 30 -1
Japan 30 0
Japan 30 1
Japan 30 2
Japan 30 3
  • Содан кейін оны саламыз.

Ең жақсы модельді қалай таңдауға болады?

  • Жоғарыдағы мысалда бізде бірнеше модель болды. Қайсысы жақсырақ екенін қалай анықтауға болады?

  • Бір жолы - модельдердің түсіндірілген дисперсиясын (R-squared) салыстыру.

model1 model2 model3 model4
(Intercept) 528.210 (1.174)*** 534.606 (1.198)*** 490.772 (2.812)*** 486.059 (2.834)***
CNTKazakhstan -88.299 (1.345)*** -79.115 (1.397)*** -71.391 (1.489)*** -59.828 (1.810)***
WEALTH 14.850 (0.697)*** 12.564 (0.837)*** -2.063 (1.554)
THOURS 1.776 (0.089)*** 1.733 (0.089)***
CNTKazakhstan × WEALTH 20.525 (1.839)***
Num.Obs. 25616 25487 17872 17872
R2 0.144 0.159 0.174 0.180
R2 Adj. 0.144 0.159 0.174 0.180
F 4308.341
RMSE 91.75 90.71 87.50 87.19
  • Бұл айырмашылық қаншалықты үлкен? Мысалы, 4-ші модель 3-ші модельден айтарлықтай жақсы деп айта аламыз ба?

  • Түсіндірілген дисперсия (яғни, R-squared) да кездейсоқ айнымалы болып шығады. Және тек кездейсоқ емес, белгілі үлестірімі бар айнымалы. Бұл түсіндірілген дисперсия айтарлықтай өзгерді ме деген сұраққа жауап беру үшін ANOVA сынағын пайдалана алатынымызды білдіреді.

term df.residual rss df sumsq statistic p.value
PV1MATH ~ CNT * WEALTH + THOURS 17867 135872904 NA NA NA NA
PV1MATH ~ CNT + WEALTH + THOURS 17868 136819845 -1 -946940.8 124.5207 0
Res.Df RSS Df Sum of Sq F Pr(>F)
17867 135872904 NA NA NA NA
17868 136819845 -1 -946940.8 124.5207 0

  1. Сондай-ақ детерминация коэффициенті деп аталады (R^2 — R-squared) — бұл пропорция дисперсия үлгі тәуелділіктерімен түсіндіріледі, яғни түсіндірмелі айнымалылар.↩︎