Как стать автором
Обновить

В туманности статистических гипотез, или про пакет SHT

Время на прочтение9 мин
Количество просмотров1.3K

Чуть меньше месяца назад в R появился пакет SHT, в котором реализованы несколько интересных видов статистических тестов (если точнее, там реализовано 53 теста). Данная статья – краткий обзор этих тестов и гипотез, проверяемых с их помощью.

Группа тестов № 1

Тест Фишера, тест Ву и Ли на равенство ковариационной матрицы определенному значению.

Нулевая гипотеза: ковариационная матрица равна данной.

library(tidyverse)
library(AER)
library(SHT)
# Группа тестов 1
data(Electricity1970)
S <- matrix(data = c(1,0.2,0.6,0.2,1,0.3,0.6,0.3,1), nrow = 3, ncol = 3)
# Проверяемая гипотеза: ковариационная матрица между величинами общих затрат, произведенной продукции и заработной платы равна матрице S
cov1.2012Fisher(as.matrix(Electricity1970[,1:3]),Sigma0 = S) # Тест Фишера
# р-значение меньше 0.05, гипотеза отклоняется
cov1.2015WL(as.matrix(Electricity1970[,1:3]),Sigma0 = S, m = 25) # Тест Ву и Ли
# р-значение меньше 0.05, гипотеза отклоняется
# Проверяемая гипотеза: ковариационная матрица между величинами общих затрат, произведенной продукции и заработной платы равна единичной матрице
cov1.2015WL(as.matrix(Electricity1970), m = 25) 
# Проверяемая гипотеза: ковариационная матрица между величинами общих затрат, произведенной продукции и заработной платы равна единичной матрице

Группа тестов № 2

Тест Ли и Чена, тест Цая, Лю и Ся, тест Ву и Ли, байесовский тест на равенство ковариационных матриц.

Нулевая гипотеза: ковариационные матрицы двух групп, взятых из одной выборки, равны.

data(CreditCard)
S1 <- as.matrix(CreditCard[CreditCard$card=="yes",c(3,4,6)])
S2 <- as.matrix(CreditCard[CreditCard$card=="no",c(3,4,6)])
# Проверяемая гипотеза: ковариационные матрицы между величинами возраста, дохода и расходов по кредитной карте для тех, кому одобрили / не одобрили кредитку, одинаковы
cov2.2012LC(S1, S2, use.unbiased = FALSE) # Тест Ли и Чен
# р-значение меньше 0.05, гипотеза отклоняется
cov2.2013CLX(S1, S2) # Тест Цая, Лю и Ся, тест Ву и Ли
# р-значение меньше 0.05, гипотеза отклоняется
cov2.2015WL(S1, S2, m = 5) # Тест Ву и Ли
# р-значение меньше 0.05, гипотеза отклоняется
cov2.mxPBF(S1, S2, a0 = 3, b0 = 3, gamma = 2, nthreads = 3) # Байесовский тест
# А тут, видимо, где-то что-то не считается

Группа тестов № 3

Тест Скотта (две вариации) на равенство многих ковариационных матрицы.

Нулевая гипотеза: ковариационные матрицы нескольких групп, взятых из одной выборки, равны.

# Группа тестов 3
AA <- list()
AA[[1]] <- as.matrix(Electricity1970[1:30,1:3])
AA[[2]] <- as.matrix(Electricity1970[31:75,1:3])
AA[[3]] <- as.matrix(Electricity1970[76:90,1:3])
AA[[4]] <- as.matrix(Electricity1970[91:158,1:3])
# Проверяемая гипотеза: ковариационная матрица между величинами общих затрат, произведенной продукции и заработной платы в 4 разных группах равны
covk.2001Schott(AA) # Версия 2001 года
# р-значение меньше 0.05, гипотеза отклоняется
covk.2007Schott(AA) # Версия 2007 года
# р-значение меньше 0.05, гипотеза отклоняется

Группа тестов № 4

Тест Бисваса и Гоша на равенство распределений.

Нулевая гипотеза: закон распределения в двух группах, взятых из одной выборки, одинаков.

# Группа тестов 4
# Проверяемая гипотеза: закон распределения величин возраста, дохода и расходов по кредитной карте для тех, кому одобрили / не одобрили кредитку, одинаков
eqdist.2014BG(S1, S2, method = c("asymptotic"), nreps = 9) #многомерный случай
# р-значение меньше 0.05, гипотеза отклоняется
eqdist.2014BG(S1[,1], S2[,1], method = c("asymptotic"), nreps = 9) #одномерный случай для распределения возраста
# р-значение больше 0.05, гипотеза не может быть отклонена

Группа тестов № 5

Тест Хотеллинга, Демпстера, тест Бая и Саранадасы, тест Сриваставы и Ду на равенство средних значений многомерной переменной определенному вектору средних значений.

Нулевая гипотеза: средние значения многомерной переменных равны определенному вектору значений.

# Группа тестов 5
data(Equipment)
# Проверяемая гипотеза: среднее значение добавленной стоимости равно 120, среднее значение
# капитала равно 30, среднее значение трудоемкости равно 100, среднее количество фирм равно 400
mean1.1931Hotelling(as.matrix(Equipment),mu0 = c(120,30,100,400))
# р-значение меньше 0.05, гипотеза отклоняется
mean1.1958Dempster(as.matrix(Equipment),mu0 = c(120,30,100,400))
# р-значение меньше 0.05, гипотеза отклоняется
mean1.1996BS(as.matrix(Equipment),mu0 = c(120,30,100,400))
# р-значение меньше 0.05, гипотеза отклоняется
mean1.2008SD(as.matrix(Equipment)) # Проверка о равенстве нулевому вектору
# р-значение меньше 0.05, гипотеза отклоняется
mean1.2008SD(as.matrix(Equipment),mu0 = c(120,30,100,400))
# р-значение меньше 0.05, гипотеза отклоняется

Группа тестов № 6

Тест Хотеллинга, тест Демпстера, тест Яо, тест Йохансена, тест Неля и ван дер Мерве, тест Бая и Саранадасы, тест Кришнамурти и Ю, тест Сриваставы и Ду, тест Лопеза, Якоба и Ванрайта, тест Цая, Лю и Ся, тест Тюлина, байесовский тест на равенство средних значений многомерной переменной в двух группах, взятых из одной выборки.

Нулевая гипотеза: вектора средних значений многомерной переменной в двух разных группах равны.

# Группа тестов 6
# Проверяемая гипотеза: вектора средних значений величин возраста, дохода и расходов по кредитной карте для тех, кому одобрили / не одобрили кредитку, одинаковы
mean2.1931Hotelling(S1, S2, paired = FALSE, var.equal = TRUE) #Тест Хотеллинга 
# р-значение меньше 0.05, гипотеза отклоняется
mean2.1958Dempster(S1, S2)#тест Демпстера
# р-значение меньше 0.05, гипотеза отклоняется
mean2.1965Yao(S1, S2) #тест Яо
# р-значение меньше 0.05, гипотеза отклоняется
mean2.1980Johansen(S1, S2) #тест Йохансена
# р-значение меньше 0.05, гипотеза отклоняется
mean2.1986NVM(S1, S2) #тест Неля и ван дер Мерве
# р-значение меньше 0.05, гипотеза отклоняется
mean2.1996BS(S1, S2) #тест Бая и Саранадасы
# р-значение меньше 0.05, гипотеза отклоняется
mean2.2004KY(S1, S2) #тест Кришнамурти и Ю
# р-значение меньше 0.05, гипотеза отклоняется
mean2.2008SD(S1, S2) #тест Сриваставы и Ду
# р-значение меньше 0.05, гипотеза отклоняется
mean2.2011LJW(S1, S2) #тест Лопеза, Якоба и Ванрайта
# не работает
# тест 24
mean2.2014CLX(S1, S2, precision="unknown") #тест Цая, Лю и Ся
# р-значение меньше 0.05, гипотеза отклоняется
# тест 25 
mean2.2014Thulin(S1, S2, nreps = 10) #тест Тюлина
# не работает
# тест 26
mean2.mxPBF(S1,S2) #байесовский тест
# р-значение не считается

Группа тестов № 7

Тест Скотта, тест Чжана и Сюя, тест Цао, Парка и Хэ, АНОВА-тест на равенство средних значений в нескольких группах, взятых из одной выборки.

Нулевая гипотеза: средние значения одной переменной в нескольких группах, взятых из одной выборки, равны.

data(Fatalities)
A <- list()
A[[1]] <- as.matrix(Fatalities[1:30,4])
A[[2]] <- as.matrix(Fatalities[31:70,4])
A[[3]] <- as.matrix(Fatalities[71:80,4])
A[[4]] <- as.matrix(Fatalities[81:150,4])
A2 <- list()
A2[[1]] <- as.vector(Fatalities[1:30,4])
A2[[2]] <- as.vector(Fatalities[31:70,4])
A2[[3]] <- as.vector(Fatalities[71:80,4])
A2[[4]] <- as.vector(Fatalities[81:150,4])
# Проверяемая гипотеза: средние значения уровня безработицы в 4 разных группах равны
meank.2007Schott(A) #Тест Скотта 
# р-значение меньше 0.05, гипотеза отклоняется
# Проверяемая гипотеза: вектора средних значений общих затрат, произведенной продукции и заработной платы в 4 разных группах равны
meank.2009ZX(AA, method = "L") #тест Чжана и Сюя
meank.2009ZX(AA, method = "T")
# р-значение меньше 0.05, гипотеза отклоняется
meank.2019CPH(AA, method = "original") #тест Цао, Парка и Хэ
meank.2019CPH(AA, method = "Hu")
# р-значение больше 0.05, гипотеза не отклоняется
meank.anova(A2) #АНОВА-тест
# р-значение меньше 0.05, гипотеза отклоняется

Группа тестов № 8

Тест Арнольда и Шавела, тест отношения правдоподобий на одновременное равенство среднего значения и дисперсии двум заданным числовым значениям.

Нулевая гипотеза: одновременно среднее значение равно заданному числу 1, а дисперсия – заданному числу 2.

# Группа тестов 8
# Проверяемая гипотеза: среднее значение уровня дохода равно 100000, а дисперсия - 200000
mvar1.1998AS(Fatalities$income, mu0 = 100000, var0 = 200000)# Тест Арнольда и Шавела
# р-значение меньше 0.05, гипотеза отклоняется
mvar1.LRT(Fatalities$income, mu0 = 100000, var0 = 200000)# Тест отношения правдоподобий
# р-значение меньше 0.05, гипотеза отклоняется

Группа тестов № 9

Тест Пирсона и Неймана, тест Пернга и Литтела, тест Мюрхеда, тест Чжана, Сюя, Чэня, тест отношения правдоподобия одновременного равенства среднего значения и дисперсии в двух группах, взятых из одной выборки.

Нулевая гипотеза: одновременно средние значения и дисперсия одной переменной в двух группах, взятых из одной выборки, равны.

# Группа тестов 9
SS1 <- as.vector(CreditCard[CreditCard$card=="yes",4])
SS2 <- as.vector(CreditCard[CreditCard$card=="no",4])
# Проверяемая гипотеза: значения среднего дохода и дисперсии дохода для тех, кому одобрили / не одобрили кредитку, одинаковы
mvar2.1930PN(SS1, SS2) #тест Пирсона и Неймана
# р-значение больше 0.05, гипотеза не отклоняется
mvar2.1976PL(SS1, SS2) #тест Пернга и Литтела
# р-значение меньше 0.05, гипотеза отклоняется
mvar2.1982Muirhead(SS1, SS2) #тест Мюрхеда
# р-значение больше 0.05, гипотеза не отклоняется
mvar2.2012ZXC(SS1, SS2) #тест Чжана, Сюя, Чэня 
# р-значение меньше 0.05, гипотеза отклоняется
mvar2.LRT(SS1, SS2) #тест отношения правдоподобия
# р-значение меньше 0.05, гипотеза отклоняется

Группа тестов № 10

Тест Шапиро-Уилка, тест Шапиро-Франка, тест Жарке и Бера, расширенный тест Жарке и Бера, устойчивый тест Жарке и Бера на соответствие нормальному распределению.

Нулевая гипотеза: переменная распределена по нормальному закону.

# Группа тестов 10
# Проверяемая гипотеза: распределение значений капитала подчинено нормальному закону
norm.1965SW(Equipment$capital) #Тест Шапиро-Уилка
# р-значение меньше 0.05, гипотеза отклоняется
norm.1972SF(Equipment$capital) #тест Шапиро-Франка 
# р-значение меньше 0.05, гипотеза отклоняется
norm.1980JB(Equipment$capital, method = "asymptotic", nreps = 2000) #тест Жарке и Бера
norm.1980JB(Equipment$capital, method = "MC", nreps = 2000)
# р-значение меньше 0.05, гипотеза отклоняется
norm.1996AJB(Equipment$capital, method = "asymptotic", nreps = 2000) #расширенный тест Жарке и Бера
norm.1996AJB(Equipment$capital, method = "MC", nreps = 2000)
# р-значение меньше 0.05, гипотеза отклоняется
norm.2008RJB(Equipment$capital, C1 = 6, C2 = 24, method = "asymptotic", nreps = 2000) #устойчивый тест Жарке и Бера
norm.2008RJB(Equipment$capital, C1 = 6, C2 = 24, method = "MC", nreps = 2000)
# р-значение меньше 0.05, гипотеза отклоняется

Группа тестов № 11

Тест Лю и тест отношения правдоподобия на одновременное равенство вектора средних значений и ковариационной матрицы установленным значениям.

Нулевая гипотеза: одновременно вектора средних значений многомерной переменной равны данным значениям и ковариационная матрица равна данной.

# Группа тестов 11
S <- matrix(data = c(1,0.2,0.6,0.2,1,0.3,0.6,0.3,1), nrow = 3, ncol = 3)
# Проверяемая гипотеза: одновременно вектор средних значений равен установленным значениям и ковариационная матрица между величинами общих затрат, произведенной продукции и заработной платы равна матрице S
sim1.2017Liu(as.matrix(Electricity1970[,1:3]), mu0 = c(10,40,60), Sigma0 = S) # Тест Лю
# р-значение меньше 0.05, гипотеза отклоняется
sim1.LRT(as.matrix(Electricity1970[,1:3]), mu0 = c(10,40,60), Sigma0 = S) # Тест отношения правдоподобий
# р-значение меньше 0.05, гипотеза отклоняется

Группа тестов № 12

Тест Хиодо и Хишиямы одновременного равенства средних и ковариационных матриц.

Нулевая гипотеза: одновременно вектора средних значений многомерной переменной и ковариационные матрицы в двух группах, взятых из одной выборки, равны.

# Группа тестов 12
# Проверяемая гипотеза: одновременно вектора средних значений и ковариационные матрицы между величинами возраста, дохода и расходов по кредитной карте для тех, кому одобрили / не одобрили кредитку, равны
sim2.2018HN(S1, S2) #Тест Хиодо и Хишиямы 
# р-значение меньше 0.05, гипотеза отклоняется

Группа тестов № 13

Тест Яна и Модареса однородности ковариационных матриц.

Нулевая гипотеза: ковариационная матрица однородна в некотором гиперпрямоугольнике.

# Группа тестов 13
SS <- as.matrix(cbind(Electricity1970[,1]/max(Electricity1970[,1]),Electricity1970[,2]/max(Electricity1970[,2]),Electricity1970[,3]/max(Electricity1970[,3])))
# Проверяемая гипотеза: ковариационная матрицы между величинами возраста, дохода и расходов равномерно распределена в 3-х мерном прямоугольнике
unif.2017YMi(as.matrix(Electricity1970[,1:3])) #Тест Яна и Модареса на основе межточечного расстояния
# р-значение меньше 0.05, гипотеза отклоняется
# Проверяемая гипотеза: ковариационная матрицы между величинами возраста, дохода и расходов равномерно распределена в 3-х мерном прямоугольнике
# Обязательно нормирование в диапазоне 0-1
unif.2017YMq(SS) #Тест Яна и Модареса на основе квантилей
# р-значение меньше 0.05, гипотеза отклоняется

Группа тестов № 14

Хи-квадрат тест значения дисперсии.

Нулевая гипотеза: дисперсия равна (больше/меньше) определенного значения.

# Группа тестов 14 
# Проверяемая гипотеза: дисперсия уровня дохода равна 1
var1.chisq(Fatalities$income, alternative="g") # Хи-квадрат тест
# р-значение меньше 0.05, гипотеза отклоняется
# Проверяемая гипотеза: дисперсия уровня дохода больше 1
var1.chisq(Fatalities$income, alternative="l") # Хи-квадрат тест
# р-значение больше 0.05, гипотеза не отклоняется
# Проверяемая гипотеза: дисперсия уровня дохода меньше 1
var1.chisq(Fatalities$income, alternative="t") # Хи-квадрат тест
# р-значение меньше 0.05, гипотеза отклоняется

Группа тестов № 15

F-тест сравнения дисперсий значений в двух группах.

Нулевая гипотеза: дисперсия в первой группе равна (больше/меньше) дисперсии во второй группе.

# Группа тестов 15
S3 <- as.vector(CreditCard[CreditCard$card=="yes",3])
S4 <- as.vector(CreditCard[CreditCard$card=="no",3])
# Проверяемая гипотеза: дисперсия уровня дохода для тех, кому одобрили / не одобрили кредитку, одинакова 
var2.F(S3,S4, alternative = "two.sided") # F-тест
# р-значение больше 0.05, гипотеза не отклоняется
# Проверяемая гипотеза: дисперсия уровня дохода для тех, кому одобрили кредитку, больше, чем для тех, кому не одобрили
var2.F(S3,S4, alternative = "less") # F-тест
# р-значение больше 0.05, гипотеза не отклоняется
# Проверяемая гипотеза: дисперсия уровня дохода для тех, кому одобрили кредитку, меньше, чем для тех, кому не одобрили
var2.F(S3,S4, alternative = "greater") # F-тест
# р-значение больше 0.05, гипотеза не отклоняется

Группа тестов № 16

Тест Бартлетта, тест Левена, тест Брауна-Форсайта равенства значений во многих группах.

Нулевая гипотеза: дисперсия в нескольких группах, взятых из одной выборки, одинакова.

# Группа тестов 16
# Проверяемая гипотеза: дисперсия уровня безработицы в 4 разных группах одинакова
vark.1937Bartlett(A2) #Тест Бартлетта
# р-значение меньше 0.05, гипотеза отклоняется
vark.1960Levene(A2) # тест Левена
# р-значение меньше 0.05, гипотеза отклоняется
vark.1974BF(A2) #тест Брауна-Форсайта 
# р-значение меньше 0.05, гипотеза отклоняется

Все материалы (справка к пакету + код), а также оригинальные статьи, в которых более подробно рассмотрены математические и статистические основы (номер в названии статьи равен номеру теста по порядку в пакете) есть на https://github.com/acheremuhin/advance_tests.

Теги:
Хабы:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Публикации

Истории

Работа

Data Scientist
78 вакансий

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань