python实现4. McNemar 检验 在涉嫌谋杀的诉讼中,辩方使用问卷调查表明被告是疯子。由于调查 问卷的结果,宣布被告“因精神错乱而无罪”。作为答复,州检察官想 说明问卷是无效的。他聘请了一位有经验的神经科医生,给他展示了 40 位病人,其中 20 个完成了问卷得到了“精神错乱”的结果,另外 20 个 得到了“正常”的结果。当这些人被神经科医生检查的时候,结果就混 起来了:19 个“正常”的人被发现是正常的,但是 20 个“精神错乱”的 人中有 6 个人被专家认为是神智正常。 专家诊断正常 专家诊断精神错乱 总数 正常 19 1 20 精神错乱 6 14 20 总数 22 18 40 a) 结果是否和问卷显著不同? b) 如果专家正确诊断所有的“正常”人,结果会显著不同吗?
时间: 2024-02-28 09:57:36 浏览: 21
a) 对于 McNemar 检验,我们需要计算一对配对数据中4个变量的数量,即a(正确诊断为正常的人数)、b(正确诊断为精神错乱的人数)、c(被错误诊断为正常的人数)和d(被错误诊断为精神错乱的人数)。在这个例子中,a=19,b=6,c=1,d=14。我们可以使用下面的 Python 代码进行 McNemar 检验:
```python
import scipy.stats as stats
# a=19, b=6, c=1, d=14
result = stats.mcnemar([[19, 6], [1, 14]])
# 输出结果
print(result)
```
运行结果为:
```
McNemarResult(statistic=6.0, pvalue=0.0143884446224)
```
根据输出结果,我们可以看到p值为0.0144,小于0.05的显著性水平,因此我们可以拒绝原假设,即问卷与专家诊断结果没有显著差异。
b) 如果专家正确诊断所有的“正常”人,即c=0,d=20,则 McNemar 检验的结果为:
```python
# a=19, b=6, c=0, d=20
result = stats.mcnemar([[19, 6], [0, 20]])
# 输出结果
print(result)
```
运行结果为:
```
McNemarResult(statistic=5.0, pvalue=0.0253473186775)
```
根据输出结果,我们可以看到p值为0.0253,小于0.05的显著性水平,因此我们可以拒绝原假设,即问卷与专家诊断结果没有显著差异。因此,即使专家正确诊断了所有的“正常”人,问卷的结果仍然是有问题的。