卡方可以用来比较比例吗?


13

我已经读过,卡方检验对于查看样本是否与一组预期值显着不同很有用。

例如,这是有关人们最喜欢的颜色的调查结果表(总共n = 15 + 13 + 10 + 17 + 55 = 55):

red,blue,green,yellow

15,13,10,17

卡方检验可以告诉我该样本是否与人们喜欢每种颜色的概率相同的零假设显着不同。

问题:可以对喜欢某种颜色的总受访者的比例进行测试吗?如下所示:

red,blue,green,yellow

0.273,0.236,0.182,0.309

当然,这里0.273 + 0.236 + 0.182 + 0.309 = 1。

如果在这种情况下不适合使用卡方检验,那将是什么检验?谢谢!

编辑:我在下面尝试了@RomanLuštrik的答案,并得到以下输出,为什么我没有得到p值,为什么R说“卡方近似可能不正确”?

> chisq.test(c(0,0,0,8,6,2,0,0),p = c(0.406197174,0.088746395,0.025193306,0.42041479,0.03192905,0.018328576,0.009190708,0))

    Chi-squared test for given probabilities

data:  c(0, 0, 0, 8, 6, 2, 0, 0) 
X-squared = NaN, df = 7, p-value = NA

Warning message:
In chisq.test(c(0, 0, 0, 8, 6, 2, 0, 0), p = c(0.406197174, 0.088746395,  :
  Chi-squared approximation may be incorrect

1
在第二种情况下,是否假设您知道样本总数?或不?
主教

@cardinal:是的,我确实知道样本总数。
hpy 2011年

3
然后只需将比例乘以总样本量即可转化为计数表,然后应用chi-sq。与您的第一个示例相对应的方法。
亚伦

我怀疑您是在询问“拟合优度”测试(使用卡方)。下面解释了其用法。塔尔干杯
塔尔加利里

Answers:


7

如果我错了,请纠正我,但是我认为可以使用此命令在R中完成

> chisq.test(c(15,13,10,17))

    Chi-squared test for given probabilities

data:  c(15, 13, 10, 17) 
X-squared = 1.9455, df = 3, p-value = 0.5838

这假定每个比例为1/4。您可以通过arguments修改期望值p。例如,您认为人们(出于某种原因)可能更喜欢一种颜色。

> chisq.test(c(15,13,10,17), p = c(0.5, 0.3, 0.1, 0.1))

    Chi-squared test for given probabilities

data:  c(15, 13, 10, 17) 
X-squared = 34.1515, df = 3, p-value = 1.841e-07

2
我怀疑您是因为某些单元格计数低而看到这种情况(我读过的一些书建议每个单元格最少5个)。也许有人对此主题有更深入的了解可以加入?
RomanLuštrik2011年

1
另请注意,如果使概率的最后一个大于零,则可以得到ap值(但警告仍然存在)。
RomanLuštrik2011年

1
Ott&Longnecker(统计方法和数据分析简介,第5版)在第504页上指出,每个像元至少应为五个,以便舒适地使用该近似值。
RomanLuštrik2011年

1
@penyuan:您应该提到您有很多零计数。罗曼是对的,由于他提到的原因,在这种情况下使用卡方不起作用。
Joris Meys 2011年

1
@penyuan:我添加了一个答案,为您提供了一些选择。
Joris Meys 2011年

6

使用您提供的额外信息(相当一部分值为0),很明显为什么您的解决方案什么也不返回。首先,您的概率为0,所以:

  • 在亨利的溶液为0,至少一个Iei
  • 对于至少一个i,在概率逻辑解中的 n p i为0npi

这使得划分不可能。现在说意味着不可能获得该结果。如果是这样,您最好将其从数据中删除(请参阅@cardinal的注释)。如果您说极不可能的话,第一个“解决方案”可能是以很小的数目增加0的机会。p=0

鉴于:

X <- c(0,0,0,8,6,2,0,0)
p <- c(0.406197174,0.088746395,0.025193306,0.42041479,0.03192905,0.018328576,0.009190708,0)

你可以做:

> p2 <- p + 1e-6
> chisq.test(X,p2)

        Pearson's Chi-squared test

data:  X and p2 
X-squared = 24, df = 21, p-value = 0.2931

但这不是正确的结果。无论如何,在这些临界情况下,应避免使用卡方检验。更好的方法是使用自举方法,计算调整后的测试统计量,并将样本中的统计量与自举获得的分布进行比较。

在R代码中,这可能是(逐步执行):

# The function to calculate the adapted statistic.
# We add 0.5 to the expected value to avoid dividing by 0
Statistic <- function(o,e){
    e <- e+0.5
    sum(((o-e)^2)/e)
}

# Set up the bootstraps, based on the multinomial distribution
n <- 10000
bootstraps <- rmultinom(n,size=sum(X),p=p)

# calculate the expected values
expected <- p*sum(X)

# calculate the statistic for the sample and the bootstrap
ChisqSamp <- Statistic(X,expected)
ChisqDist <- apply(bootstraps,2,Statistic,expected)

# calculate the p-value
p.value <- sum(ChisqSamp < sort(ChisqDist))/n
p.value

这给出了0的p值,这与观测值和预期值之间的差异更加一致。提醒您,此方法假设您的数据是从多项分布中提取的。如果此假设不成立,则p值也不成立。


1
pi=0iipi=0pi=1/6i61,,10

@cardinal:我刚刚描述了数据,期望值是0,但是观察到的不一定是。这就是OP给我们的(尽管第二个想法确实听起来很不现实)。因此,在p值上加上一点点使其非常不可能而不是不可能会有所帮助,但是即使在这种情况下,由于计数小于5的大量表单元格,卡方也无效。码)。我在答案中添加了考虑因素,即指针。
Joris Meys 2011年

pi=0

4

1E(xi)

ψ=ixilog(xinpi)

xiii{red, blue, green, yellow}n55pipi=pj

χ2=i(xinpi)2npi2ψ

fi=xin

ψ=nifilog(fipi)
χ2=ni(fipi)2pi

ψψpi1piψ

H1H2piψ1ψ2exp(ψ1ψ2)H2H1exp(12χ1212χ22)

H2ψ2=χ22=0

χ22npi<10ψ


1
我很确定预期的频率不能大于10::)
主教

@cardinal-很高兴这是您的反对意见-因为这意味着我的其余回答肯定很好:)。
概率

哇,我希望我不要因挑剔/脾气暴躁而声名狼藉。
主教

1
ψ2ψχ2χ22ψ0χ22ψχ2
主教

χ22ψ

3

是的,您可以使用卡方检验来检验原假设:“ H0:道具(红色)=道具(蓝色)=道具(绿色)=道具(黄色)= 1/4”,该方法比较调查的比例(0.273 ,...)达到预期比例(1/4,1/4,1/4,1/4)


只是为了确认,它也可以以彼此不相等的预期比例工作?
hpy 2011年

4
除非您知道完整的样本量,否则测试将不会有意义。如果比例来自大小为1的样本,而不是大小为100的样本,则1.0 / 0.0 / 0.0 / 0.0的比例表示非常不同的内容
Aaron

是的,我确实知道样本总数。
hpy11 2011年

2

皮尔逊卡方检验的检验统计量为

i=1n(OiEi)2Ei

oi=Oinei=Einn=i=1nOii=1nei=1

ni=1n(oiei)2ei

因此,对观察到的比例的显着性进行的测试取决于样本量,这与人们期望的一样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.