Правила

При выполнении ДЗ вы можете пользоваться различными источниками информации (лекциями, справкой, книгами, различными интернет-ресурсами). Вы можете адаптировать код, найденный где-то в интернете, для решения приведенных задач, однако в этом случае вы должны в тексте решения указать ссылку на источник этого кода. Вы можете обсуждать решения между собой, однако не можете использовать код другого студента: если кто-то объяснил вам, как решается та или иная задача, вам необходимо написать соответствующий код и все необходимые пояснения самостоятельно (своими словами). Определить, что код списан, а не написан самостоятельно, гораздо проще, чем вы думаете: в случае обнаружения списывания все вовлеченные работы будут аннулированы.

Задачи

  1. Загрузить этот файл (содержащий статистику успеваемости в некоторых школах) в виде dataframe.
df <- read.csv("http://www.ats.ucla.edu/stat/data/hsb2.csv")
  1. Нарисовать гистограмму значений переменной с оценкой по чтению (read).
hist(df$read)

3. Преобразовать переменные female и prog в факторы с помощью as.factor.

df$female <- as.factor(df$female)
df$prog <- as.factor(df$prog)
  1. Нарисовать ящики с усами, соответствующие значениям переменной с оценкой по математике math, сгруппированной по фактору female. (Должно быть нарисовано два ящика с усами, один отвечает выборке, содержащей все значения переменной math в строчках, в которых female обращается в 0, а другой отвечает выборке, содержащей все значения переменной math в строчках, в которых female обращается в 1.)
plot(math ~ female, data=df)

5. Позволяют ли представленные данные говорить о том, что девушки получают в среднем более высокие оценки по письму (write)? Проверить соответствующую статистическую гипотезу на уровне значимости 5%, используя подходящий односторонний тест, указать найденное p-value и сделать вывод.

tt <- t.test(write ~ female, data=df, alternative = 'less')
tt
## 
##  Welch Two Sample t-test
## 
## data:  write by female
## t = -3.6564, df = 169.71, p-value = 0.0001704
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
##       -Inf -2.667152
## sample estimates:
## mean in group 0 mean in group 1 
##        50.12088        54.99083

Вывод: Найдено p-value: \(1.7044247\times 10^{-4}<0.05\), следовательно, нулевая гипотеза (о равенстве) отвергается: можно подтвердить, что что девушки действительно получают значимо большие оценки по письму.

  1. Проверить, являются ли факторы female и prog независимыми, используя подходящий тест (хи-квадрат или точный тест Фишера).
tab <- table(df[c('female','prog')])
ct <- chisq.test(tab)

Вывод: Найдено p-value: \(1.7044247\times 10^{-4}>0.05\), следовательно, нулевая гипотеза (о независимости) не отвергается.

  1. Найти матрицу попарных корреляций для оценок по чтению (read), письму (write), естественным наукам (science), социальным наукам (socst) и математике (math). Все корелляции оказались положительными — что это означает?
df_grades <- df[c('read','write','science','socst','math')]
cor(df_grades)
##              read     write   science     socst      math
## read    1.0000000 0.5967765 0.6301579 0.6214843 0.6622801
## write   0.5967765 1.0000000 0.5704416 0.6047932 0.6174493
## science 0.6301579 0.5704416 1.0000000 0.4651060 0.6307332
## socst   0.6214843 0.6047932 0.4651060 1.0000000 0.5444803
## math    0.6622801 0.6174493 0.6307332 0.5444803 1.0000000

Вывод: Все корреляции положительны — это означает, что при увеличении любой оценки в среднем увеличивается и любая другая оценка.

  1. Рассмотрим линейную регрессию, в которой независимой переменной является оценка по чтению, а зависимой оценка по письму. Найти коэффициенты регрессии. Построить scatter plot и регрессионную прямую (подсказка: используйте функцию abline.)
fit <- lm(write ~ read, data=df)
print(summary(fit))
## 
## Call:
## lm(formula = write ~ read, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -20.5447  -5.1225   0.6451   6.3259  15.4553 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 23.95944    2.80574   8.539 3.55e-15 ***
## read         0.55171    0.05272  10.465  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.625 on 198 degrees of freedom
## Multiple R-squared:  0.3561, Adjusted R-squared:  0.3529 
## F-statistic: 109.5 on 1 and 198 DF,  p-value: < 2.2e-16
plot(write ~ read, data=df)
abline(fit)


Коэффициент при read равен 0.5517051.

  1. Рассмотрим линейную регрессию, в которой зависимой переменной является оценка по естественным наукам, а независимыми переменными — оценки по остальным предметам.
    1. Найти коэффициенты регрессии.
    fit <- lm(science ~ read+write+socst+math, data=df)
    summary(fit)
    ## 
    ## Call:
    ## lm(formula = science ~ read + write + socst + math, data = df)
    ## 
    ## Residuals:
    ##      Min       1Q   Median       3Q      Max 
    ## -18.5840  -4.6847   0.1514   4.1979  23.9641 
    ## 
    ## Coefficients:
    ##             Estimate Std. Error t value Pr(>|t|)    
    ## (Intercept)  8.56570    3.23144   2.651  0.00869 ** 
    ## read         0.30999    0.07291   4.252 3.29e-05 ***
    ## write        0.21492    0.07482   2.872  0.00453 ** 
    ## socst       -0.02271    0.06455  -0.352  0.72528    
    ## math         0.32181    0.07726   4.165 4.67e-05 ***
    ## ---
    ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    ## 
    ## Residual standard error: 7.071 on 195 degrees of freedom
    ## Multiple R-squared:  0.5003, Adjusted R-squared:   0.49 
    ## F-statistic:  48.8 on 4 and 195 DF,  p-value: < 2.2e-16
    1. Дайте интерпретацию: на сколько баллов в среднем повышается оценка по естественным наукам при увеличении оценки по письму на 1 балл?
    Ответ: На 0.2149167 (при фиксированных всех остальных оценках)
    1. Можно ли сказать, что повышение оценки по естественным наукам является следствием повышения оценки по письму?
    Ответ: нельзя, регрессии не указывают направления причинно-следственных связей.
    1. Указать, какие из независимых переменных являются значимыми на уровне значимости \(\alpha=0{,}01\).

    Ответ: Все, кроме socst.

    1. Как вы можете проинтерпретировать отсутствие значимости для тех переменных, которые оказались незначимыми?

    Ответ: Если зафиксировать оценки по остальным предметам, то знание оценки по socst не даст существенной информации об оценке по science.

  2. Рассмотрим линейную регрессию, в которой зависимой переменной является оценка по чтению, а независимыми — оценка по письму и dummy-переменные, кодирующие переменную prog (программа обучения; не забудьте сконвертировать эту переменную в фактор с помощью as.factor). Найти коэффициенты регрессии. Что можно сказать об оценке по чтению у школьников, обучающихся по второй программе обучения по сравнению со школьниками, обучающимися по первой программе, исходя из результатов регрессии?

summary(lm(read ~ write + prog, data=df))
## 
## Call:
## lm(formula = read ~ write + prog, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -18.8066  -5.6785  -0.1367   5.0873  22.1920 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  21.3723     3.6139   5.914 1.46e-08 ***
## write         0.5529     0.0664   8.327 1.41e-14 ***
## prog2         3.6839     1.4714   2.504   0.0131 *  
## prog3        -1.0269     1.6822  -0.610   0.5423    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.052 on 196 degrees of freedom
## Multiple R-squared:  0.3926, Adjusted R-squared:  0.3833 
## F-statistic: 42.22 on 3 and 196 DF,  p-value: < 2.2e-16

Интерпретация: У студентов, обучающихся по второй программе обучения, intercept в регрессии, связывающей read и write на 3.68 больше, чем у студентов, обучающихся по первой программе обучения.

  1. С помощью дисперсионного анализа (anova), проверить, различаются ли в целом средние оценки по письму для различных программ обучения на уровне значимости 1%?
anova(lm(write ~ prog,data=df))
## Analysis of Variance Table
## 
## Response: write
##            Df  Sum Sq Mean Sq F value   Pr(>F)    
## prog        2  3175.7 1587.85  21.275 4.31e-09 ***
## Residuals 197 14703.2   74.64                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

или

summary(aov(write ~ prog,data=df))
##              Df Sum Sq Mean Sq F value   Pr(>F)    
## prog          2   3176  1587.8   21.27 4.31e-09 ***
## Residuals   197  14703    74.6                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Поскольку p-value очень маленькое, ответ: да, значимо различаются.

  1. Применить метод главных компонент (PCA, prcomp) к набору данных, содержащему оценки по всем указанным дисциплинам (и только им). Найти матрицу вращения (rotation matrix). Построить biplot. Что можно сказать о связи первой главной компоненты (PC1) с каждой из оценок? Как можно одним словом охарактеризовать, что показывает первая главная компонента? Какой вклад во вторую главную компоненту (PC2) дают оценки по естественным наукам и социальным наукам (обратите внимание на знаки элементов в матрице вращения)? Как можно одним словом охракатеризовать, что показывает вторая главная компонента?
pca <- prcomp(df_grades)
print(pca)
## Standard deviations:
## [1] 18.298733  7.696309  6.228963  5.788821  5.443507
## 
## Rotation:
##                PC1         PC2          PC3        PC4        PC5
## read    -0.4842440  0.07210494 -0.610371067  0.3010751 -0.5450776
## write   -0.4220293 -0.08149798  0.780140611  0.1384605 -0.4329650
## science -0.4295910  0.58940457 -0.002049416 -0.6785747  0.0870973
## socst   -0.4717551 -0.76107899 -0.123430847 -0.3265779  0.2762564
## math    -0.4246148  0.24803223  0.059903362  0.5683887  0.6569081
biplot(pca, xlabs=rep('.', nrow(df)))


Выводы: В первую главную компоненту все оценки входят примерно с одинаковым весом, она меряет успеваемость (точнее, неуспеваемость, поскольку веса отрицательны). Во вторую главную компоненту оценки за socst и science входят с разными знаками, она меряет, по всей видимости, «уклон» школьника (гуманитарный или естественнонаучный).

  1. Мы хотим понять, как переменные, соответствующие оценкам по различным дисциплинам, связаны между собой, с помощью иерархического кластерного анализа. Для этого мы вычислим матрицу «расстояний» (dissimiliarity matrix) следующим образом: вычтем каждый элемент матрицы корреляций (см. пункт 7) из числа 1. (Поскольку корреляция 1 соответствует максимальному сходству двух столбцов, и значит нулевому расстоянию, а корреялция 0 соответствует минимальному сходству и значит максимальному расстоянию.) Преобразовать получившуюся матрицу в матрицу расстояний с помощью as.dist и применить к ней кластерный анализ с помощью hclust. Построить соответствующую дендрограмму. Как переменные разбиваются в два самых больших кластера?
dis <- 1-cor(df_grades)
plot(hclust(as.dist(dis)))

Самые большие кластеры: (science, read, math) и (write, socst)

  1. Нас интересует вопрос об использовании одного из двух типов смайликов – полной формы (например, :)» или :-)) и краткой (только скобочки )))) в SMS-сообщениях в зависимости от года рождения отправителя. Гипотеза состоит в том, что люди с более поздним годом рождения (более молодые) чаще используют краткую форму. Мы проанализировали базу сообщений и для каждого абонента нашли число смайликов полной и краткой формы. (Пример гипотетический, данные вымышленные, ни одна SMS’ка при подготовке не пострадала.) Данные приведены в таблице. Проверить указанную гипотезу с помощью подходящей регрессии.
df <- read.csv("http://math-info.hse.ru/f/2014-15/ling-r/smilies.dat")
fit <- glm(cbind(df$short, df$full) ~ year, data=df, family = binomial(link="logit"))
summary(fit)
## 
## Call:
## glm(formula = cbind(df$short, df$full) ~ year, family = binomial(link = "logit"), 
##     data = df)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.8600  -1.7791  -0.8519   2.2407   2.4280  
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -276.69989   49.10111  -5.635 1.75e-08 ***
## year           0.13900    0.02468   5.631 1.79e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 95.084  on 8  degrees of freedom
## Residual deviance: 37.940  on 7  degrees of freedom
## AIC: 60.125
## 
## Number of Fisher Scoring iterations: 5

Вывод: Коэффициент при year значимый и положительный, значит, краткая форма (первый столбец) используется значимо чаще при увеличении года рождения.

Результат необходимо прислать по e-mail письмом с темой «ДЗ R 2014-15» на адрес ilya@schurov.com в виде файла Rmarkdown (рекомендуется) или просто R-скрипта с необходимыми комментариями. Дедлайн: 22 июня 2015, 12:00.