卡方检验:调查果蝇对不同颜色的吸引力

机器算法验证 卡方检验
2022-04-21 03:44:27

我有几个关于卡方检验的问题。首先,这是我正在调查的:

H0:果蝇对不同颜色光的吸引力没有差异

方案: 将 20 只果蝇放入试管中。管沿其长度标记为 3 个相等的部分。

摇晃管子,使苍蝇聚集在底部。所选颜色的 LED 在管顶部发光 1.5 分钟,计算每个部分的苍蝇数量。

使用了 6 种不同的颜色。

结果: 有人告诉我对每种颜色使用卡方检验。这就是我使用红色测试的方式(值为 4.03):

在此处输入图像描述

预期频率为 6.67,因为每个管中有 20 只苍蝇,三个相等的部分,因此为 20/3。

问题 有多少自由度?6 使用不同的颜色,所以应该是 6-1= 5 度?还是因为每个管子只有 3 个部分,所以是 3-1 = 2 度​​?

第二个问题:我对 6 种颜色中的每一种都使用了卡方检验。如果一些颜色的卡方值低于表格值并且没有统计学意义,例如红色和绿色,但其他颜色是,我可以拒绝原假设吗?


更新

Repeat 1:
        Layer
Color     bottom  middle  top
  white        1       2   17
  blue         5       1   14
  red          5       3   12
  orange       5       3   12
  yellow       4       2   14
  green        8       0   12

在此处输入图像描述

这看起来好吗?

更新 2

是否可以通过将我的三个重复的结果相加来避免三向列联表?还有临界值,取 p = 0.05 和 df=10 是18.3 - 比我得到的值小很多,所以我在这里做错了数学吗?

在此处输入图像描述

2个回答

您不应该在这里使用“单向”或“拟合优度”卡方检验六次以上。您应该在双向列联表上使用卡方独立性检验。此外,正如@DJohnson 在下面指出的那样,您需要使用观察到的实际计数,而不是平均计数(例如,我不确定我是否理解您所说的底层只苍蝇。)也就是说,您需要建立一个像这样的列联表: 6.67

         Layer
Color     bottom  middle  top  sum
  red          7       3   10   20
  green        #       #    #   20
  blue         #       #    #   20
  orange       #       #    #   20
  purple       #       #    #   20
  yellow       #       #    #   20

然后运行您的卡方检验。卡方检验的自由度为(即行数减 1 乘以列数减 1)。在您的情况下,这将是:(r1)(c1)5×2=10


更新: 如果你有这个实验的三个重复版本,你有(在某种意义上)三个双向列联表,或者(更准确地说)一个三路列联表。您想测试考虑到迭代的​​行之间是否存在差异。分析多路列联表的一般方法是使用对数线性模型(实际上是修饰的 Poisson GLiM)。我在这里更详细地描述了这一点: of multidimensional data下面,我使用创建了两个假数据集,一个我称之为“ ”(代表“null”,因为颜色和图层之间没有关系),另一个我称之为“ ”(代表“替代”, χ2R.n.a

dft = expand.grid(layer=c("bottom","middle","top"), 
                  color=c("blue", "green", "orange", "red", "white", "yellow"),
                  Repeat=1:3)
dft   = dft[,3:1]
dft.n = data.frame(dft, count=c(rep(c( 3,6,11), times=6), 
                                rep(c( 6,7, 7), times=6), 
                                rep(c(11,6, 3), times=6)))
dft.a = data.frame(dft, 
             count=c(c(3,6,11), c(11,6, 3), c(11,6, 3), c(3,6,11), c(3,6,11), c(11,6, 3),
                     c(3,6,11), c(11,6, 3), c(11,6, 3), c(3,6,11), c(3,6,11), c(11,6, 3),
                     c(3,6,11), c(11,6, 3), c(11,6, 3), c(3,6,11), c(3,6,11), c(11,6, 3) ))
tab.n = xtabs(count~color+layer+Repeat, dft.n)
# , , Repeat = 1
#         layer
# color    bottom middle top
#   blue        3      6  11
#   green       3      6  11
#   orange      3      6  11
#   red         3      6  11
#   white       3      6  11
#   yellow      3      6  11
# 
# , , Repeat = 2
#         layer
# color    bottom middle top
#   blue        6      7   7
#   green       6      7   7
#   orange      6      7   7
#   red         6      7   7
#   white       6      7   7
#   yellow      6      7   7
# 
# , , Repeat = 3
#         layer
# color    bottom middle top
#   blue       11      6   3
#   green      11      6   3
#   orange     11      6   3
#   red        11      6   3
#   white      11      6   3
#   yellow     11      6   3
tab.a = xtabs(count~color+layer+Repeat, dft.a)
# , , Repeat = 1
#         layer
# color    bottom middle top
#   blue        3      6  11
#   green      11      6   3
#   orange     11      6   3
#   red         3      6  11
#   white       3      6  11
#   yellow     11      6   3
# 
# , , Repeat = 2
#         layer
# color    bottom middle top
#   blue        3      6  11
#   green      11      6   3
#   orange     11      6   3
#   red         3      6  11
#   white       3      6  11
#   yellow     11      6   3
# 
# , , Repeat = 3
#         layer
# color    bottom middle top
#   blue        3      6  11
#   green      11      6   3
#   orange     11      6   3
#   red         3      6  11
#   white       3      6  11
#   yellow     11      6   3

我对两者都进行了快速对数线性分析。0模型从(“饱和”模型)到2(已删除项)列出。请注意,在 R 中,通常按从小到大的顺序列出模型,但anova()调用的结果将嵌套模型称为“ Model 1”,这使得名称不对应;尽量不要被这个甩掉。对于空数据集,Model 2不同于Model 1(即,m.1.n不同于m.2.n),这意味着layers不独立于Repeats另一方面,Model 3不不同于Model 2(即,m.0.n不同于m.1.n),意味着layer*Repeat图案不因颜色而异。此外,Model 3Saturated模型(因为它饱和模型)。

library(MASS)
m.0.n = loglm(~color*layer*Repeat, tab.n)
m.1.n = loglm(~color+layer*Repeat, tab.n)
m.2.n = loglm(~color+layer+Repeat, tab.n)
anova(m.2.n, m.1.n, m.0.n)
# LR tests for hierarchical log-linear models
# 
# Model 1:
#  ~color + layer + Repeat 
# Model 2:
#  ~color + layer * Repeat 
# Model 3:
#  ~color * layer * Repeat 
# 
#           Deviance df Delta(Dev) Delta(df) P(> Delta(Dev)
# Model 1   59.55075 44                                    
# Model 2    0.00000 40   59.55075         4              0
# Model 3    0.00000  0    0.00000        40              1
# Saturated  0.00000  0    0.00000         0              1

m.0.a = loglm(~color*layer*Repeat, tab.a)
m.1.a = loglm(~color+layer*Repeat, tab.a)
m.2.a = loglm(~color+layer+Repeat, tab.a)
anova(m.2.a, m.1.a, m.0.a)
# LR tests for hierarchical log-linear models
# 
# Model 1:
#  ~color + layer + Repeat 
# Model 2:
#  ~color + layer * Repeat 
# Model 3:
#  ~color * layer * Repeat 
# 
#           Deviance df Delta(Dev) Delta(df) P(> Delta(Dev)
# Model 1   87.47794 44                                    
# Model 2   87.47794 40    0.00000         4          1e+00
# Model 3    0.00000  0   87.47794        40          2e-05
# Saturated  0.00000  0    0.00000         0          1e+00

对于替代数据集,Model 2与 没有区别Model 1(即,m.1.a与 不同m.2.a),这意味着layers它们独立于Repeats. 另一方面,Model 3确实不同于Model 2(即,m.0.a不同于m.1.a),这意味着layer*Repeat图案确实因颜色而异。(再一次,Model 3Saturated模型。)

Gung 检验是双向分类表中的独立性检验。其他测试是可能的,如 Wicken 的书Multiway Contingency Tables Analysis for the Social Sciences中所述,这是在张量模型出现之前对该主题的最后一个很好的处理方法之一。正如威肯斯所说:

有三种不同的实验程序可以生成双向频率表。尽管实际测试是相同的,但这些导致分数群体的不同模型。这三个无效假设被称为同质性假设、 独立性假设和不相关分类的假设……区分这三种描述的一种方法是查看边际频率分布的作用(第 22 页)

在 OP 的情况下,同质性测试似乎最合适。它是一种人口特征体现在行条件概率中的方法。使用 Gung 的表格设置,按层单元格的每种颜色的预期计数取决于“总和”列:

这里测试的零假设是总体上的响应分布是相同的……因此,有人说这是对总体同质性的检验。更抽象地说,这些数据背后的概率结构是一对二项分布(第 23 页)

该测试与独立性测试的不同之处在于,它使用了单个固定边距,而不是独立性测试中的组合行和列边际。

不相关性测试涉及固定的行和列边缘,不适用于该数据(即,所有边缘的总和为 20)。