Установим необходимые для занятия пакеты (это действие необходимо, только если пакеты ещё не установлены на ваш компьютер) (для установки выполните следующую строку без символа # вначале).
# install.packages(c('descr'))
Подгружаем загруженные пакеты для их использования в текущей сессии работы R.
library(descr)
Всего мальчик подошёл к 300 девочкам: к 100 с гитарой, к 100 с сумкой. В условии гитары 31 девочка дала номер телефона, в условии с сумкой только 9 девочек дали номер телефона. Насколько существенны различия между условиями?
yes <- c(31, 9)
total <- c(100, 100)
prop.test(yes, total)
##
## 2-sample test for equality of proportions with continuity
## correction
##
## data: yes out of total
## X-squared = 13.781, df = 1, p-value = 0.0002054
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.1034025 0.3365975
## sample estimates:
## prop 1 prop 2
## 0.31 0.09
Те же данные можно проанализировать с помощью таблицы сопряженности и критерия Хи-квадрат. Но для этого их нужно организовать по-другому. Нужно расчитать, сколько раз девочки дали и не дали номер телефона в каждом из условий.
Вернёмся к примеру с экспериментом с гитарой.
guitar <- c(31, (100-31))
bag <- c(9, (100-9))
Объединим результаты в матрицу.
guitar_exp <- rbind(guitar, bag)
guitar_exp
## [,1] [,2]
## guitar 31 69
## bag 9 91
Проверим, если ли статистически значимые различия в частоте предоставления номер телефона между двумя разными условиями с помощью критерия хи-квадрат.
chisq.test(guitar_exp)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: guitar_exp
## X-squared = 13.781, df = 1, p-value = 0.0002054
В случае малого количества наблюдений в некоторых ячейках можно использовать точный тест Фишера (Fisher’s Exact Test)
fisher.test(guitar_exp)
##
## Fisher's Exact Test for Count Data
##
## data: guitar_exp
## p-value = 0.0001544
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
## 1.938541 11.500399
## sample estimates:
## odds ratio
## 4.508986
Избразим результаты графически
mosaicplot(guitar_exp, shade = TRUE)
Таблицы сопряжённости можно строить и прямо из сырых данных. Самый простой и быстрай вариант - команда table()
table(mtcars$cyl, mtcars$am)
##
## 0 1
## 4 3 8
## 6 4 3
## 8 12 2
Можно подписать переменные
table(Number_of_cylinders=mtcars$cyl, Transmission=mtcars$am)
## Transmission
## Number_of_cylinders 0 1
## 4 3 8
## 6 4 3
## 8 12 2
Более красивый и информативный вариант - функция crosstab() из пакета descr.
crosstab(mtcars$cyl, mtcars$am, format = "SPSS", expected = TRUE)
## Cell Contents
## |-------------------------|
## | Count |
## | Expected Values |
## |-------------------------|
##
## ===============================
## mtcars$am
## mtcars$cyl 0 1 Total
## -------------------------------
## 4 3 8 11
## 6.5 4.5
## -------------------------------
## 6 4 3 7
## 4.2 2.8
## -------------------------------
## 8 12 2 14
## 8.3 5.7
## -------------------------------
## Total 19 13 32
## ===============================
По умолчанию строится иллюстрирующий график, который можно отключить с помощью аргумента plot = FALSE
На этой таблице также можно использовать критерий хи-квадрат.
tab <- table(mtcars$cyl, mtcars$am)
chisq.test(tab)
##
## Pearson's Chi-squared test
##
## data: tab
## X-squared = 8.7407, df = 2, p-value = 0.01265
Избразим графически
mosaicplot(tab, shade = TRUE)