Олеся Волченко
30 сентября 2020
Позволяет находить связи
Таблица сопряжённости — средство представления совместного распределения двух переменных, предназначенное для исследования связи между ними.
Например:
| мужчины | женщины | всего: | |
|---|---|---|---|
| предпочитают кошек | 50 | 50 | 100 |
| предпочитают собак | 50 | 50 | 100 |
| всего: | 100 | 100 | 200 |
Предположим, мы собрали вот такие данные:
| ходили на выборы | не ходили на выборы | всего: | |
|---|---|---|---|
| любят лопать пузырчатую упаковку | 80 | 20 | 100 |
| не любят лопать пузырчатую упаковку | 20 | 80 | 100 |
| всего: | 100 | 100 | 200 |
Но если бы распределение двух переменных было несвязано, то таблица выглядела бы так:
| ходили на выборы | не ходили на выборы | всего: | |
|---|---|---|---|
| любят лопать пузырчатую упаковку | 50 | 50 | 100 |
| не любят лопать пузырчатую упаковку | 50 | 50 | 100 |
| всего: | 100 | 100 | 200 |
| выборы + | выборы - | всего: | |
|---|---|---|---|
| пузырчатая упаковка + | (A+B)(A+C)/(A+B+C+D) | (A+B)(B+D)/(A+B+C+D) | A + B |
| пузырчатая упаковка - | (C+D)(A+C)/(A+B+C+D) | (C+D)(B+D)/(A+B+C+D) | C + D |
| всего: | A + C | B + D | A+B+C+D |
То есть, для каждой ячейки мы перемножаем маргинальные значения и делим это число на общее число наблюдений
Внимание! Тут возможно получить “полтора землекопа”
В нашем случае:
| выборы + | выборы - | |
|---|---|---|
| пузырчатая упаковка + | 100 * 100 / 200 = 50 | 100 * 100 / 200 = 50 |
| пузырчатая упаковка - | 100 * 100 / 200 = 50 | 100 * 100 / 200 = 50 |
\[\chi^2 = \sum_{i=1}^{n} \frac{ (O~i - E~i)^2}{E~i}\] O - observed. Те значения, которые мы видим в таблице сопряженности
Е - expected. Те значения, которые мы бы наблюдали, если бы 2 переменные были распределены независимо друг от друга.
Разница между наблюдаемыми и ожидаемыми значениями называется остатками (residuals).
В нашем случае:
## [1] 72
Определяем число степеней свободы (r – 1) × (c – 1)
Сравниваем значение критерия χ2 с критическим значением при числе степеней свободы f (по таблице).
Если \(\chi^2\) превышает критическое значение (p-value меньше 0.05) нужно узнать, за счёт каких ячеек это происходит.
Для этого нужно посмотреть на стандартизованные остатки: если значение больше 2, то в этой ячейке наблюдений больше, чем ожидалось в случае, если две переменные не связаны между собой. Если значение стандартизованных остатков меньше -2, то в этой ячейке наблюдений меньше, чем ожидалось в случае, если две переменные не связаны между собой.
mytable <- matrix(c(1272, 797, 781, 693, 461, 894, 748, 731, 433, 392, 136, 169, 117, 169, 87, 176, 163, 146, 151, 126), ncol = 2)
row.names(mytable) <- c("Valeriy_Meladze", "Max_Korzh", "Bi_2", "Monetochka", "Skriptonit", "Little_Big", "Oxxxymiron", "Zemfira", "LSP", "Tima_Beloruskih")
colnames(mytable) <- c("student_votes", "liceist_votes")
chisq.test(mytable)##
## Pearson's Chi-squared test
##
## data: mytable
## X-squared = 122.85, df = 9, p-value < 2.2e-16
## List of 9
## $ statistic: Named num 123
## ..- attr(*, "names")= chr "X-squared"
## $ parameter: Named int 9
## ..- attr(*, "names")= chr "df"
## $ p.value : num 3.49e-22
## $ method : chr "Pearson's Chi-squared test"
## $ data.name: chr "mytable"
## $ observed : num [1:10, 1:2] 1272 797 781 693 461 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:10] "Valeriy_Meladze" "Max_Korzh" "Bi_2" "Monetochka" ...
## .. ..$ : chr [1:2] "student_votes" "liceist_votes"
## $ expected : num [1:10, 1:2] 1173 805 748 718 457 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:10] "Valeriy_Meladze" "Max_Korzh" "Bi_2" "Monetochka" ...
## .. ..$ : chr [1:2] "student_votes" "liceist_votes"
## $ residuals: num [1:10, 1:2] 2.879 -0.283 1.193 -0.946 0.202 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:10] "Valeriy_Meladze" "Max_Korzh" "Bi_2" "Monetochka" ...
## .. ..$ : chr [1:2] "student_votes" "liceist_votes"
## $ stdres : num [1:10, 1:2] 7.708 -0.736 3.087 -2.444 0.511 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:10] "Valeriy_Meladze" "Max_Korzh" "Bi_2" "Monetochka" ...
## .. ..$ : chr [1:2] "student_votes" "liceist_votes"
## - attr(*, "class")= chr "htest"
## student_votes liceist_votes
## Valeriy_Meladze 1272 136
## Max_Korzh 797 169
## Bi_2 781 117
## Monetochka 693 169
## Skriptonit 461 87
## Little_Big 894 176
## Oxxxymiron 748 163
## Zemfira 731 146
## LSP 433 151
## Tima_Beloruskih 392 126
## student_votes liceist_votes
## Valeriy_Meladze 1173.3876 234.61236
## Max_Korzh 805.0373 160.96274
## Bi_2 748.3680 149.63203
## Monetochka 718.3666 143.63342
## Skriptonit 456.6878 91.31220
## Little_Big 891.7079 178.29206
## Oxxxymiron 759.2018 151.79819
## Zemfira 730.8672 146.13284
## LSP 486.6892 97.31081
## Tima_Beloruskih 431.6866 86.31335
## student_votes liceist_votes
## Valeriy_Meladze 2.878794007 -6.43807308
## Max_Korzh -0.283269634 0.63349812
## Bi_2 1.192851801 -2.66766815
## Monetochka -0.946430851 2.11657763
## Skriptonit 0.201784968 -0.45126757
## Little_Big 0.076756480 -0.17165654
## Oxxxymiron -0.406545724 0.90919012
## Zemfira 0.004913697 -0.01098889
## LSP -2.433666251 5.44259893
## Tima_Beloruskih -1.910117558 4.27174588
## student_votes liceist_votes
## Valeriy_Meladze 7.70822448 -7.70822448
## Max_Korzh -0.73631823 0.73631823
## Bi_2 3.08700146 -3.08700146
## Monetochka -2.44361120 2.44361120
## Skriptonit 0.51078746 -0.51078746
## Little_Big 0.20088280 -0.20088280
## Oxxxymiron -1.05299080 1.05299080
## Zemfira 0.01269903 -0.01269903
## LSP -6.17419588 6.17419588
## Tima_Beloruskih -4.82623156 4.82623156
library(foreign)
data <- read.spss("/Users/olesyavolchenko/Yandex.Disk.localized/datafiles/WV6_Data_spss_v_2016_01_01.sav", to.data.frame = TRUE)
data <- subset(data, subset=(V2=="Russia"))
dim(data)## [1] 2500 430
Шаг 1. Проверяем, все ли хорошо с переменными V53.- On the whole, men make better business executives than women do
##
## Agree strongly Agree Disagree Strongly disagree
## 376 821 895 225
##
## Male Female
## 1115 1385
Шаг 2. Хи квадрат
##
## Pearson's Chi-squared test
##
## data: data$V53 and data$V240
## X-squared = 71.715, df = 3, p-value = 1.833e-15
##
## Male Female
## Agree strongly 217 159
## Agree 409 412
## Disagree 346 549
## Strongly disagree 64 161
Шаг 3. Значение остатков
## data$V240
## data$V53 Male Female
## Agree strongly 217 159
## Agree 409 412
## Disagree 346 549
## Strongly disagree 64 161
## data$V240
## data$V53 Male Female
## Agree strongly 168.1208 207.8792
## Agree 367.0937 453.9063
## Disagree 400.1813 494.8187
## Strongly disagree 100.6042 124.3958
Шаг 3. Значение остатков
## data$V240
## data$V53 Male Female
## Agree strongly 3.769753 -3.390145
## Agree 2.187214 -1.966965
## Disagree -2.708450 2.435713
## Strongly disagree -3.649414 3.281924
## data$V240
## data$V53 Male Female
## Agree strongly 5.539258 -5.539258
## Agree 3.660808 -3.660808
## Disagree -4.649674 4.649674
## Strongly disagree -5.165279 5.165279
Например, X2 (2, N = 170) = 14.14, p <.01
Показать разницу распределений в группах
Гистограмма с накоплением позволяет показать разницу раcпределений в группах
Гистограмма с накоплением позволяет показать разницу раcпределений в группах
https://r-analytics.blogspot.com/2012/08/blog-post.html#.W66bd2gzY2w