常见统计检验的本质都是线性模型(或:如何教统计学)下篇
7 比率:卡方检验是对数线性模型
7.1 拟合优度检验
7.1.1 理论:作为对数线性模型
7.1.2 示例数据
# Data in long formatD <- data.frame(
mood = c("happy", "sad", "meh"),
counts = c(60, 90, 70)
)# Dummy coding for the linear model
D$mood_happy <- ifelse(D$mood == "happy", 1, 0)
D$mood_sad <- ifelse(D$mood == "sad", 1, 0)
7.1.3 R代码:拟合优度检验
# Built-in test
a <- chisq.test(D$counts)
# As log-linear model, comparing to an intercept-only model
full <- glm(counts ~ 1 + mood_happy + mood_sad, data = D, family = poisson())
null <- glm(counts ~ 1, data = D, family = poisson())
b <- anova(null, full, test = "Rao")
# Note: glm can also do the dummy coding for you:
c <- glm(counts ~ mood, data = D, family = poisson())
anova(..., test = 'Rao')
表示用 Rao 得分 检验,又称为拉格朗日乘子检验(Lagrange Multiplier test,LM test)来计算 p 值。当然也可以使用
test='Chisq'
或
test='LRT'
,它们计算近似的 p 值。你可能会认为我们在这里作弊了,偷偷地对卡方模型进行后续处理,实际上,
anova
仅仅指定了 p 值的计算方式,内部对数线性模型仍然发生在
glm
中。
binom.test
。这个样本量比通常情况要更大,所以我认为这不是经验准则,也不会在此进一步探索。
7.2 列联表
7.2.1 理论:作为对数线性模型
lm
函数了。
7.2.2 示例数据
我们需要一些“长”格式的数据,并且需要保存为表格格式,才能作为 chisq.test 的输入:
# Contingency data in long format for linear model
D <- data.frame(
mood = c("happy", "happy", "meh", "meh", "sad", "sad"),
sex = c("male", "female", "male", "female", "male", "female"),
Freq = c(100, 70, 30, 32, 110, 120)
)
# ... and as table for chisq.test
D_table <- D %>%
tidyr::spread(key = mood, value = Freq) %>% # Mood to columns
select(-sex) %>% # Remove sex column
as.matrix()
# Dummy coding of D for linear model (skipping mood=="sad" and gender=="female")
# We could also use model.matrix(D$Freq~D$mood*D$sex)
D$mood_happy <- ifelse(D$mood == "happy", 1, 0)
D$mood_meh <- ifelse(D$mood == "meh", 1, 0)
D$sex_male <- ifelse(D$sex == "male", 1, 0)
7.2.3 R代码:卡方检验
# Built-in chi-square. It requires matrix format.
a <- chisq.test(D_table)
# Using glm to do a log-linear model, we get identical results when testing the interaction term:
full <- glm(Freq ~ 1 + mood_happy + mood_meh + sex_male +
mood_happy * sex_male + mood_meh * sex_male, data = D, family = poisson())
null <- glm(Freq ~ 1 + mood_happy + mood_meh + sex_male, data = D, family = poisson())
b <- anova(null, full, test = "Rao") # Could also use test='LRT' or test='Chisq'
# Note: let glm do the dummy coding for you
full <- glm(Freq ~ mood * sex, family = poisson(), data = D)
c <- anova(full, test = "Rao")
# Note: even simpler syntax using MASS:loglm ("log-linear model")
d <- MASS::loglm(Freq ~ mood + sex, D)
8 资料来源和更多的等价模型
-
Cross Validated 网站上, 我的原始想法 。
https://stats.stackexchange.com/questions/303269/common-statistical-tests-as-linear-models
-
对于“非参”检验, 我之前提出的疑问 和有用的答案。
https://stats.stackexchange.com/questions/210529/are-parametric-tests-on-rank-transformed-data-equivalent-to-non-parametric-test
-
StackOverflow 网站上,关于 t 检验和方差分析的 问题和回答 。
https://stats.stackexchange.com/questions/59047/how-are-regression-the-t-test-and-the-anova-all-versions-of-the-general-linear
-
Christoph Scheepers 的幻灯片 ,介绍了卡方检验如何被理解为对数线性模型。
https://uni-tuebingen.de/fileadmin/Uni_Tuebingen/SFB/SFB_833/A_Bereich/A1/Christoph_Scheepers_-_Statistikworkshop.pdf
-
Philip M. Alday 的笔记,里面包括了卡方、二项、多项、泊松分布作为对数线性模型和 logistic 模型的理解。文中介绍的“等价性”没有我在本文展示的那么精确,因此我没有在本文详细介绍。然而,它们对理解这些检验是有帮助的!
https://rpubs.com/palday/glm-test
-
Kristoffer Magnusson 的文章使用
lme4::lmer
混合模型( mixed model )介绍了 RM-ANOVA 和增长模型( growth model )。https://rpsychologist.com/r-guide-longitudinal-lme-lmer
-
Thom Baguley 的文章介绍了 Friedman 检验。这篇文章实际上启发了我开始思考“非参”检验的线性模型等价形式,而且最终推动我写下了本文章。
https://seriousstats.wordpress.com/2012/02/14/friedman/
9 教材和课程大纲
-
Russ Poldrack 的开源书籍 "Statistical Thinking for the 21st century"(从关于建模的第 5 章开始)
http://statsthinking21.org/fitting-models-to-data.html
-
Jeff Rouder 的课程笔记,介绍了仅使用 R^2 和 BIC 来对比模型。它避开了所有关于 p 值、F 值等等的繁琐问题。完整的材料和幻灯片。
https://jeffrouder.blogspot.com/2019/03/teaching-undergrad-stats-without-p-f-or.html
https://drive.google.com/drive/folders/1CiJK--bAuO0F-ug3B5I3FvmsCdpPGZ03
-
回归的基础知识
-
回想高中的知识: 然后获得对斜率和截距的非常好的直觉。理解到这条式子能用所有的变量名称来重写:如 money = profit * time + starting_money或 或去除系数之后可写成 y ~ x + 1。如果听众接受程度高的话,可以探索这些模型是如何解微分方程的,并指出 y 是如何随着 x 的变化而变化的。
-
扩展到多元回归模型。记得这时候要带有非常多的生活例子和练习,从而使这些概念变得直觉上非常容易理解。让听众感叹于这些简洁的模型都可以用来描述非常大的数据集。
-
介绍对于非数值型数据如何进行秩转换,并进行各种尝试。
-
教授三种前提假设:数据点的独立性,残差分布的正态性和方差齐性 (homoscedasticity)。
-
参数的置信(confidence)/可信(credible)区间。指出极大似然估计(Maximum-Likelihood estimate)很难计算,因此区间估计更为重要。
-
对以上简单的回归模型,简要地介绍 R^2。顺便提及一下,这就是 Pearson 和 Spearman 相关系数。
-
特殊情况 #1:一个或两个均值(t 检验、Wilcoxon 检验、Mann-Whitney 检验):
-
单均值: 当只有一个 x 值的时候,回归模型简化成了 y = b。如果 y 不是数值型的,你可以进行秩转换。应用模型假设(只有一个 x,因此方差齐性不适用于这里)。顺便提及一下,这些仅有截距的模型也分别可称为单样本 t 检验和 Wilcoxon 符号秩检验。
-
双均值: 如果我们把两个变量一起放在 x 轴,两者均值之差就是斜率。很好!这就能用我们称为瑞士军刀的线性模型来解决。应用模型的假设条件,检查两个组的方差是否相等,相等即方差齐性。这模型称为独立 t 检验。构造一些例子,做一些练习,也许还能加上 Welch 检验,再加上秩转换 ---- 变成所谓的 Mann-Whitney U 检验的版本。
-
配对样本: 违反了独立性假设。通过计算配对组的差值,这就转化成了 2.1(单截距)的等价形式,尽管这种情况有另外的名称:配对 t 检验和 Wilcoxon 配对组检验。
-
特殊情况 #2:三个或多个均值(方差分析(ANOVA))
-
对类别转化后的 示性变量 : 类别的每一个取值范围对应的回归系数,是如何通过乘以一个二元(binary)示性变量,来对每个取值范围对应的截距来进行建模的。 ( How one regression coefficient for each level of a factor models an intercept for each level when multiplied by a binary indicator.) 这只是我们为了使数据能用线性模型建模,而扩展了在 2.1 所做的事情而已。
-
一个变量的均值: 单因素方差分析(one-way ANOVA) .
-
两个变量的均值: 双因素方差分析(two-way ANOVA) .
-
特殊情况 #3:三个或多个比率(卡方检验)
-
对数变换: 通过对数变换,把“多元乘法”模型转化成线性模型,从而可以对比率进行建模。关于对数线性模型和对比率的卡方检验的等价性,可以查阅这个非常优秀的介绍。此外,还需要介绍 (log-) odds ratio(一般翻译为“比值比”或“优势比”)。当“多元乘法”模型使用对数变换转化为“加法”模型之后,我们仅加上来自 3.1 的示性变量技巧,就会在接下来发现模型等价于 3.2 和 3.3 的方差分析----除了系数的解释发生了变化。
-
单变量的比率: 拟合优度检验.
-
双变量的比率: 列联表.
-
假设检验:
-
视为模型比较的假设检验: 假设检验用于全模型和某个参数固定了(通常为 0,也即从模型中去除)的模型进行比较,而不是对模型进行估计。比如说,在 t 检验 把两个均值之一固定为零之后,我们探究单独一个均值(单样本 t 检验)对两个组的数据的解释程度。如果解释程度比较好,那么我们更倾向于这个单均值模型,而不是双均值模型,因为前者更为简单。假设检验其实是比较多个线性模型,来获得更多的定量描述。单参数的检验,假设检验包含的信息更少。但是,同时对多个参数(如方差分析的类别变量)进行检验的话,模型比较就会变得没有价值了。
-
似然比: 似然比是一把瑞士军刀,它适用于单样本 t 检验到 GLMM 等情况。BIC 对模型复杂度进行惩罚。还有,加上先验(prior)的话,你就能得到贝叶斯因子(Bayes Factor)。一个工具,就能解决所有问题。我在上文方差分析中使用了似然比检验。
10 不足之处
-
我没在这里覆盖到前提假设的内容。这会在另一篇文章揭晓!但是所有检验都很可能有三个预定假设:a) 数据点的独立性, b) 残差的正态性, c) 同方差性(homoscedasticity)。
-
我假定所有的零假设是缺失了效应的情况,但是所有原理都和非 0 的零假设所一致的。
-
我没有讨论推断内容。因为大家都会关心 p 值,因此我在比较中提到了 p 值,从而简短地展示了背后的模型等价性。参数的估计值也会展示出相同的等价性。如何进行推断则是另一个话题了。我个人是贝叶斯学派的,但是展示贝叶斯学派内容的话,会减少这篇文章的受众。此外,构造 稳健模型 是更好的选择,但是它无法揭示模型的等价性。
-
本文列表依然缺失了很多其它著名的检验,有可能在以后添加进来。比如说符号检验(sign test)(要求很大的 N 从而可以有效地使用线性模型来近似),Friedman 检验 -- 即在 rank(y) 上的 RM-ANOVA,McNemar 检验,和二项(Binomial)/多项(Multinomial)检验。如果你认为它们需要在本文提及到,欢迎在本文档的 Github 仓库 提交对应说明!
11 附录:翻译稿评论
11.1 译者评论
11.2 审稿人讨论
-
Dennis D. Boos and L. A. Stefanski. Essential Statistical Inference: Theory and Methods. 2013. Springer, New York.
<10> Chapter 3. Likelihood-Based Tests and Confidence Regions. 10> -
Vito M. R. Muggeo and Gianfranco Lovison (2014) The “Three Plus One” Likelihood-Based Test Statistics: Unified Geometrical and Graphical Interpretations, The American Statistician, 68:4, 302-306, DOI: 10.1080/00031305.2014.955212
统计之都官网: cosx.org
统计之都公众号: CapStat