Python SciPy 卡方测试返回与 Excel 和 LibreOffice 不同的 p 值

2023-12-01

读完一篇后最近的博客文章关于泊松分布的应用程序,我尝试使用 Python 的“scipy.stats”模块以及 Excel/LibreOffice“POISSON”和“CHITEST”函数重现其发现。

对于文章中显示的预期值,我简单地使用了:

import scipy.stats
for i in range(8):
    print(scipy.stats.poisson.pmf(i, 2)*31)

这重现了博客文章中显示的表格 - 我还在 LibreOffice 中重新创建了它,使用单元格 A1、A2、...、A8 中的值为 0 到 7 的第一列 A 和简单的公式 '=POISSON( A1, 2, 0)*31' 在 B 列的前 8 行中重复。

到目前为止一切顺利 - 现在是卡方 p 检验值:

在 LibreOffice 下,我只是在单元格 C1-C8 中写下观察到的值,并使用“=CHITEST(C1:C8, B1:B8)”重现文章报告的 p 值 0.18。然而,在 scipy.stats 下,我似乎无法重现这个值:

import numpy as np
import scipy.stats

obs = [4, 10, 7, 5, 4, 0, 0, 1]
exp = [scipy.stats.poisson.pmf(i, 2)*31 for i in range(8)]

# we only estimated one variable (the rate of 2 killings per year via 62/31) 
# so dof will be N-1-estimates
estimates = 1
print(scipy.stats.chisquare(np.array(obs), np.array(exp), ddof=len(obs)-1-estimates))
# (10.112318133864241, 0.0014728159441179519)
# the p-test value reported is 0.00147, not 0.18...
#
# Maybe I need to aggregate categories with observations less than 5 
# (as suggested in many textbooks of statistics for chi-squared tests)?
observedAggregateLessThan5 = [14, 7, 5, 5]
expectedAggregateLessThan5 = [exp[0]+exp[1], exp[2], exp[3], sum(exp[4:])]
print(scipy.stats.chisquare(np.array(observedAggregateLessThan5), np.array(expectedAggregateLessThan5), ddof=len(observedAggregateLessThan5)-1-estimates))
# (0.53561749342466913, 0.46425467595930309)
# Again the p-test value computed is not 0.18, it is 0.46...

我究竟做错了什么?


您没有使用ddof论证正确。ddof is the change达到默认的自由度。默认值比长度小一。所以你不必指定ddof at all:

In [21]: obs
Out[21]: [4, 10, 7, 5, 4, 0, 0, 1]

In [22]: exp
Out[22]: 
[4.1953937803349941,
 8.3907875606699882,
 8.3907875606699882,
 5.5938583737799901,
 2.796929186889995,
 1.1187716747559984,
 0.37292389158533251,
 0.10654968331009501]

In [23]: chisquare(obs, f_exp=array(exp))
Out[23]: (10.112318133864241, 0.1822973566091409)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python SciPy 卡方测试返回与 Excel 和 LibreOffice 不同的 p 值 的相关文章

  • 在 Python 中对数据进行求和

    Given that the fitting function is of type 我打算将这样的函数拟合到我拥有的实验数据 x y f x 中 但后来我有一些疑问 当涉及求和时 如何定义拟合函数 一旦定义了函数 即def func re
  • 来自多元 t 分布的样本 python

    我想知道Python中是否有一个从多元学生t分布中采样的函数 我有包含 14 个元素的均值向量 14x14 协方差矩阵和自由度 我想从这个 t 分布中采样一个向量 对于一维情况 我使用 stats t rvs df loc scale 并且
  • 使用 scipy、python、numpy 进行非线性 e^(-x) 回归

    下面的代码为我提供了一条最佳拟合线的平坦线 而不是沿着 e x 模型的一条适合数据的漂亮曲线 谁能告诉我如何修复下面的代码以使其适合我的数据 import numpy as np import matplotlib pyplot as pl
  • 在 Python 中倾斜数组

    我有一个 2D 数组 我将使用它保存为灰度图像scipy misc toimage 在此之前 我想将图像倾斜给定角度 像这样进行插值scipy ndimage interpolation rotate 上图只是为了说明倾斜过程 我知道我必须
  • 统计Sweep算子的Python实现

    我正在学习一些用书中缺失的数据进行统计的技术 缺失数据的统计分析作者 利特尔和鲁宾 对于处理单调无响应数据来说 一个特别有用的函数是扫频操作员 详情见第 148 151 页 我知道 R 模块gmm有swp函数可以做到这一点 但我想知道是否有
  • 约束 3D 表面的 RBF 插值以保持曲率

    我的任务是开发一种算法 给定一组表示现有表面测量值的稀疏点 我们就可以计算表面上任何点的 z 坐标 面临的挑战是找到一种合适的插值方法 该方法可以在仅给定几个点的情况下重新创建 3D 表面 并推断出超出包含初始测量值的范围的值 对于许多插值
  • 根据两个预先计算的直方图报告两个样本的 K-S 统计量

    Problem 在这里 我绘制了存储在文本文件中的 2 个数据集 在列表中 dataset 每个包含 218 亿个数据点 这使得数据太大而无法作为数组保存在内存中 我仍然能够将它们绘制为直方图 但我不确定如何通过2 样本KS测试 http
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 在 SQL Server 中通过标准差消除异常值

    我试图通过标准差消除 SQL Server 2008 中的异常值 我只想要特定列中包含该列平均值的 1 标准差范围内的值的记录 我怎样才能做到这一点 如果您假设事件呈钟形曲线分布 则只有 68 的值与平均值相差 1 个标准差以内 95 的值
  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我
  • 如何指定聚类的距离函数?

    我想对给定距离的点进行聚类 奇怪的是 似乎 scipy 和 sklearn 聚类方法都不允许指定距离函数 例如 在sklearn cluster AgglomerativeClustering 我唯一可以做的就是输入一个亲和力矩阵 这将非常
  • 如何在Python中高效地添加稀疏矩阵

    我想知道如何在Python中有效地添加稀疏矩阵 我有一个程序 可以将大任务分解为子任务 并将它们分配到多个 CPU 上 每个子任务都会产生一个结果 一个 scipy 稀疏矩阵 格式为 lil matrix 稀疏矩阵尺寸为 100000x50
  • 如何定义“f_n-chi-square”函数并使用“uniroot”求置信区间?

    I want to get a 95 confidence interval for the following question 我已经写了函数f n在我的 R 代码中 我首先使用 Normal 随机采样 100 个样本 然后定义函数h
  • C++ 中的 Anderson Darling 测试

    我正在尝试计算发现的安德森 达林测试here https en wikipedia org wiki Anderson E2 80 93Darling test 我按照维基百科上的步骤进行操作 并确保当我计算我正在测试的数据的平均值和标准差
  • 反转或点 kxnxn 矩阵的快速方法

    有没有一种快速方法可以使用 numpy 计算 kxnxn 矩阵的逆矩阵 在每个 k 切片处计算逆矩阵 换句话说 有没有办法矢量化下面的代码 gt gt gt from numpy linalg import inv gt gt gt a r
  • Numpy ,Python3.6 - 无法理解为什么地址不同?

    这是我的代码 my array 1 np arange 25 reshape 5 5 print my array 1 my array red my array 1 1 2 print my array red my array blue
  • 如何在Python中拟合阶跃函数

    我有一个关于使用 curve fit 等 scipy 例程拟合阶跃函数的问题 我很难将其矢量化 例如 import numpy as np from scipy optimize import curve fit import matplo
  • 来自 data.frame 每一列的随机样本

    我想从 a 的每一行中抽取随机样本data frame独立于其他行 这是一个例子 此代码为每行选择相同的列 但我需要为每行独立选择列 library plyr set seed 12345 df1 lt mdply data frame m
  • FutureWarning:使用非元组序列进行多维索引

    我收到的警告是 C Users el Anaconda3 envs Py3 lib site packages scipy io matlab miobase py 414 FutureWarning 使用非元组序列进行多维 不推荐使用索引
  • 对象对于所需数组来说太深 - scipy.integrate.odeint

    我昨天刚开始使用Python 使用时遇到错误scipy integrate odeint 我定义了一个函数 def SIR x t beta gamma mu M 这需要numpy array物体x t and M 标量浮动beta gam

随机推荐

  • 为什么它不转一圈?以及如何修复它?

    我不确定正在创建的形状的名称是什么 但我认为是圆形和方形的组合 或者可能类似于圆柱体 您可以运行代码来查看它会形成什么形状 您能否推荐一个我可以学习编写游戏代码 基本游戏背后的算法 的网站 我希望你明白我的意思 因为我英语不好 import
  • 当 PictureBox 处于“缩放”模式时裁剪图像的正确部分[重复]

    这个问题在这里已经有答案了 我有一个 PictureBox1 其尺寸模式设置为 拉伸 并且 PictureBox1 PictureBox1 包含一个图像 让我选择它的一部分 然后裁剪它并将裁剪的部分存储在 PictureBox2 中 效果很
  • python中浮点精度的定义是什么?

    我了解到 Erlang 中的 完全等于 运算符 它不仅比较值 还有数字的数据类型 我很好奇 Python 中的工作原理及其唯一的 等于 运算符 所以在确定之后 gt gt gt 1 1 0 True 我想知道浮点精度 然后得到了这个 gt
  • 在 PHP 中从空值创建默认对象?

    仅在将 PHP 环境升级到 PHP 5 4 及更高版本后 我才会看到此错误 错误指向这行代码 Error 从空值创建默认对象 Code res gt success false 我是否需要首先声明我的 res object 你的新环境可能有
  • div 中的居中文本

    div div class left div align center class node div class nodeText h2 test h2 div div class node h2 test h2 div div class
  • mod_rewrite后获取变量

    我有一组遵循以下 htaccess 规则的产品页面 RewriteCond REQUEST FILENAME s RewriteCond REQUEST URI 0 9 html RewriteRule product index php
  • Opencv 和 python 用于自动裁剪

    我想自动裁剪图像 我正在为此使用 ImageMagick 我正在使用的命令 convert 3 jpg fuzz 10 trim trim jpg 我该如何解决 我认为正在设置的模糊因子存在问题 If you want to do this
  • 在sp_executesql中使用@ParmDefinition有什么好处

    DECLARE id int DECLARE name nvarchar 20 SET id 5 SET name Paul 这两个选项有什么区别 Set SQLQueryInnen SELECT FROM someTable WHERE
  • 对多个工作簿和多个工作表中的单元格值求和 - 宏

    我有 50 本练习册 每个有 3 个工作表 我在单元格 A1 到 N1 的每个工作表中都有一个值 我想总结一个工作簿中的所有值 分别在 3 个工作表中 即sheet1工作簿1的A1 sheet1工作簿2的A1 sheet1工作簿50的A1
  • 如何禁用列表的第一项可排序并删除目标

    我有一个项目列表 我想让列表中的第一个项目不可排序且不可移动 列表中的第一项应始终保留为列表中的第一项 但是 我似乎无法让它工作 这是我的排序代码 jQuery gt lineup sortable axis y items ui stat
  • 如何让 MySQL 使用 INDEX 进行视图查询?

    我正在开发一个使用 Java EE 上的 MySql 数据库的 Web 项目 我们需要一个视图来汇总 3 个总共超过 300 万行的表中的数据 每个表都是用索引创建的 但我还没有找到一种方法来利用我们使用 group by 创建的视图中的条
  • .Net 3.5 SP1 的离线安装程序无法正常工作

    我下载了一个 Net 3 5 SP1的大文件 现在 当我尝试在 Windows Server 2012 上安装它时 我得到以下屏幕截图 现在这是一个循环 当我尝试从服务器管理器安装时 我发现安装无法完成 它需要安装盘 这是否意味着如果没有安
  • 静态变量是否可以继承

    我已经在 1000 个位置读到静态变量不能被继承 但是这段代码如何正常工作呢 父类 java public class Parent static String str Parent 孩子 java public class Child e
  • Swift 可编码多种类型

    我尝试解析返回 json 对象的 api 我的问题是 某些键有时是字符串 有时是对象 如以下示例中的键 Value Description null Group Beskrivning av enheten GroupDescription
  • 使用纵横比时 CSS 会忽略子元素的宽度

    我遇到了有关 CSS 的问题aspect ratio在子元素上 我一直在尝试将元素的宽度和高度 两者相同 设置为等于父容器的高度 使用height 100 and aspect ratio 1 然而 这可以实现 使用时父容器似乎忽略了子容器
  • 有没有办法从 SQL 中的日期中减去天数?

    我知道 DATEDIFF d date1 date2 但我不想减去两个日期 而是减去一个日期的天数 例如 2010 04 13 4 2010 04 09 mySQL 可以吗 date sub date interval 4 day
  • 生成具有预定义模数和指数的公钥

    n rKZ 1zdz CoLekSynOtyWv6cPSSkV28Kb9kZZHyYL yhkKnH bHl8OpWiGxQiKP0ulLRIaq1IhSMetkZ8FfXH iptIDu4lPb8gt0HQYkjcy3HoaKRXBw2F
  • 使用 vstack 的全屏背景图像

    我想要一个带有导航视图的全屏背景图像 必须位于顶部 因为它来自基础视图 而不是通常位于 此 视图中 在此视图中 我想要一个位于安全区域内的 VStack 位于导航栏和底部布局之间 不幸的是我得到了 见图 I expected the tex
  • 使用外部计算的变量的回调函数

    基本上我想做这样的事情 arr 1 2 3 4 5 6 7 8 9 10 avg array sum arr count arr callback function val return val lt avg return array fi
  • Python SciPy 卡方测试返回与 Excel 和 LibreOffice 不同的 p 值

    读完一篇后最近的博客文章关于泊松分布的应用程序 我尝试使用 Python 的 scipy stats 模块以及 Excel LibreOffice POISSON 和 CHITEST 函数重现其发现 对于文章中显示的预期值 我简单地使用了