如何使用 scipy optimization 找到 3 个参数和数据点列表的最小卡方?

2024-01-08

我有一个排序随机数的直方图和高斯叠加 https://i.stack.imgur.com/dBqcU.png。直方图表示每个箱的观察值(将此基本情况应用于更大的数据集),高斯是拟合数据的尝试。显然,这个高斯并不代表直方图的最佳拟合。下面的代码是高斯的公式。

normc, mu, sigma = 30.845, 50.5, 7 # normalization constant, avg, stdev
gauss = lambda x: normc * exp( (-1) * (x - mu)**2 / ( 2 * (sigma **2) ) )

我计算了每个箱的期望值(曲线下的面积)并计算了每个箱的观察值的数量。有多种方法可以找到“最佳”配合。我关心的是通过最小化卡方来实现最佳拟合。在这个卡方公式中 https://i.stack.imgur.com/o7kGN.gif,期望值是每个 bin 的曲线下面积,观测值是每个 bin 排序数据值的出现次数。因此,我想在给定值附近波动normc、mu和sigma,以找到normc、mu和sigma的正确组合,从而产生最小的卡方,因为这些将是我可以插入到上面的代码中进行覆盖的参数我的直方图上最适合的高斯。我正在尝试使用 scipy 模块来最小化我的卡方如本例所示 https://stackoverflow.com/questions/13670333/multiple-variables-in-scipys-optimize-minimize。由于我需要波动参数,因此我将使用函数 gauss(上面定义)来绘制高斯叠加图,并将定义一个新函数来查找最小卡方。

def gaussmin(var,data):
    # var[0] = normc
    # var[1] = mu
    # var[2] = sigma
    # data is the sorted random numbers, represents unbinned observed values
    for index in range(len(data)):
        return var[0] * exp( (-1) * (data[index] - var[1])**2 / ( 2 * (var[2] **2) ) ) 
    # I realize this will return a new value for each index of data, any guidelines to fix?

在此之后,我陷入困境。如何改变参数来找到产生最佳拟合的normc、mu、sigma?我最后一次尝试的解决方案如下:

var = [normc, mu, sigma]
result = opt.minimize(chi2, [normc,mu,sigma])
# chi2 is the chisquare value obtained via scipy
# chisquare input (a,b) 
# where a is number of occurences per bin, b is expected value per bin
# b is dependent upon normc, mu, sigma
print(result)
# data is a list, can I keep it as a constant and only fluctuate parameters in var?

网上有很多标量函数的示例,但我找不到变量函数的示例。

PS - 到目前为止我可以发布完整的代码,但它有点长。如果您想查看它,请询问,我可以将其发布在这里或提供 googledrive 链接。


高斯分布完全由其均值和方差(或标准差)来表征。假设您的数据呈正态分布,则通过使用 x 条形图作为平均值、使用 s 平方作为方差来获得最佳拟合。但在这样做之前,我会使用例如q-q plot https://en.wikipedia.org/wiki/Q%E2%80%93Q_plot.

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

如何使用 scipy optimization 找到 3 个参数和数据点列表的最小卡方? 的相关文章

  • 将 numpy 数组中低于阈值 # 的数字替换为零

    所以我有一个非常大的 Numpy 数组 2560x1920 它实际上来自灰度图片 其中每个像素都被赋予一个 0 1 之间的数字 表示其亮度 我试图用零替换低于阈值 例如 0 5 的所有值 这可能是一个简单的任务 但我是 Numpy 的初学者
  • Python NET 调用具有返回值和输出参数的 C# 方法

    我有以下静态 C 方法 public static bool TryParse string s out double result 我想使用 Python NET 包从 Python 调用它 import clr from System
  • 如何在 Ubuntu 上通过 pip 安装 python3 版本的软件包?

    我两者都有python2 7 and python3 2安装在Ubuntu 12 04 符号链接python链接到python2 7 当我输入 sudo pip install package name 它将默认安装python2的版本pa
  • Gurobi:预求解后保存模型以供重复使用

    我正在寻找一种在 gurobi 中保存预求解模型的方法 以便在下次运行模型时节省预求解所需的时间 我尝试在预求解后使用回调函数将模型写入 mps lp 文件 但是当我加载文件时 它再次开始预求解 如果我正在寻找的东西不可能的话 我也会感谢否
  • 在 Python 中计算分布的对数似然

    有什么简单的方法计算任何分布的对数似然适合数据 OP 的解决方案 Python 有 82 个标准发行版 可以找到here https docs scipy org doc scipy reference stats html continu
  • python http 客户端卡在 100 continue

    我在 python 中有一个简单的 http 服务器 它使用 100 continue 实现 PUT class TestHandler SimpleHTTPRequestHandler def do PUT self length int
  • 如何使用Python3将ruamel.yaml转换为dict?

    我想要一个dict or OrderedDict from ruamel yaml 我正在使用 Python 3 8 如果有帮助的话 很乐意切换到 3 9 from ruamel yaml import YAML from collecti
  • 随机数生成器每次仅返回一个数字

    Python 是否有一个随机数生成器 每次只返回一个随机整数next 函数被调用 数字不应该重复并且生成器应返回区间内的随机整数 1 1 000 000 这是独一无二的 我需要生成超过一百万个不同的数字 这听起来好像非常消耗内存 以防所有数
  • 找不到 Jupyter 命令 `jupyter-lab`

    我尝试在我的 Kubuntu 机器上安装 jupyter lab 如果我使用 pip3 install jupyter jupyterlab 安装 jupyter lab 则命令 jupyter notebook 完全可以正常工作 但是 如
  • 如何测量异步发电机所花费的时间?

    我想测量生成器花费的时间 阻塞主循环的时间 假设我有以下两个生成器 async def run for i in range 5 await asyncio sleep 0 2 yield i return async def walk f
  • Python 中的随机优化

    我正在尝试结合cvxopt http cvxopt org 优化求解器 和PyMC https github com pymc devs pymc 采样器 解决凸问题随机优化问题 作为参考 安装这两个软件包pip很简单 pip instal
  • matplotlib - 模块“sip”没有属性“setapi”

    我刚刚设置了带有所有 Python 扩展的 VS Code 通过 Anaconda Python 版本为 3 8 3 解释器是 venv 当我运行这段代码时 import matplotlib pyplot as plt 错误显示 Exce
  • Python3:如何“不”四舍五入到最接近的偶数?

    我知道Python3的round 函数四舍五入到最接近的偶数 我怎样才能防止这种情况发生并使其像Python2那样从零舍入一半 您可以使用Decimal and ROUND HALF UP from decimal https docs p
  • 将 Spark 数据框中的时间戳转换为日期

    我见过 这里 如何将DataFrame中的时间戳转换为日期格式 https stackoverflow com questions 40656001 how to convert timestamp to date format in da
  • Windows 中的信号处理

    在Windows中 我试图创建一个等待SIGINT信号的python进程 当它收到SIGINT时 我希望它只打印一条消息并等待SIGINT的另一次出现 所以我使用了信号处理程序 这是我的 signal receiver py 代码 impo
  • R 中的优化函数可以接受目标、梯度和粗麻布吗?

    我有一个想要优化的复杂目标函数 优化问题需要相当长的时间来优化 幸运的是 我确实有可用的函数的梯度和粗麻布 R 中是否有一个优化包可以接受所有这三个输入 optim 类不接受 Hessian 矩阵 我已经扫描了用于优化的 CRAN 任务页面
  • Python ttk.combobox 强制发布/打开

    我正在尝试扩展 ttk 组合框类以允许自动建议 我到目前为止的代码运行良好 但我想让它在输入一些文本后显示下拉列表 而不从小部件的输入部分移除焦点 我正在努力解决的部分是找到一种强制下拉的方法 在 python 文档中我找不到任何提及这一点
  • 解释 scipy.stats.entropy 值

    我正在尝试使用scipy stats 熵来估计库尔巴克 莱布勒 KL 两个分布之间的散度 更具体地说 我想使用 KL 作为衡量标准来确定两个分布的一致性 但是 我无法解释 KL 值 例如 t1 numpy random normal 2 5
  • AttributeError:“NoneType”对象没有属性“astype”

    我在复现ESRGAN相关程序时遇到了如下问题 libpng 错误 读取错误 Traceback most recent call last File sda ZTL B codes train py line 173 in
  • 如何使用 Misc.imread 将图像分割为红色、绿色和蓝色通道

    我正在尝试将图像切片为 RGB 但在绘制这些图像时遇到问题 我使用此函数从某个文件夹获取所有图像 def get images path image type image list for filename in glob glob pat

随机推荐

  • .gitattributes 中没有扩展名的文件

    我正在尝试处理 gitattributes 中没有扩展名的文件 text auto eol lf py eol lf 显然没有帮助 git check attr all foo输出 foo 文本 自动 如何才能做到这一点 我认为您必须为所有
  • 迭代 CSV 文件中的列 (PHP)

    我需要编写一个函数 以年份和温度作为输入 并返回给定年份中温度等于或低于给定温度的天数 由于数据是关于小时而不是天 因此需要找到小时数并将其除以 24 示例 getDaysUnderTemp 2019 10 返回 13 92 CSV 文件如
  • ng2-smart-table 缺少依赖项完成程序

    我正在使用 Ng2SmartTable 并且出现此错误 目标入口点 ng2 smart table 丢失时出现错误 依赖项 akveo ng2 completer 我已经尝试过以下命令 但它不起作用 1 npm install save n
  • 在 C++ 中分配和使用无类型内存块的正确方法是什么?

    到目前为止 我对这个问题得到的答案有两种完全相反的答案 它是安全的 和 它是未定义的行为 我决定完全重写这个问题 以便为我和任何可能通过谷歌到达这里的人获得一些更好的澄清答案 另外 我删除了C标签 现在这个问题是 C 特定的 我正在制作一个
  • chrome.storage.sync.set 不保存值

    因此 我在 Google Chrome 上的本地存储方面遇到了一些障碍 根据我的研究 我的语法似乎是正确的 但由于某种原因该值没有被保存 这是我的代码 chrome storage sync get accName function dat
  • 如何手动将 dns 条目添加到由 AWS ECS 服务发现管理的托管区域?

    我正在 AWS ECS 中的私有托管区域中使用容器服务发现staging example com 现在 在容器旁边 我想将 AWS RDS 数据库映射到db staging example com 但是 我无法修改 Route53 托管区域
  • 如何使用 Android Studio 2.2.3 调试外部本机库的 C++ 源代码?

    我有一个在Windows 10下由Android Studio 2 2 3创建的android项目 该项目通过其包装jar 通过JNI 使用本机库 本机库是由 qmake 在 Android Studio 之外构建的 它将使用 androi
  • 如何将文本文件转换为ARFF格式?

    我正在使用 WEKA 工具进行文本分类 并且必须将纯文本文件转换为 ARFF 格式 但是 我不知道该怎么做 谁能帮我将文本文件转换为 ARFF 格式 谢谢伦克劳夫的回复 我不明白这些要点 由于像记事本这样的文本编辑器只允许有限数量的列 因此
  • 错误:‘$’未定义。[no-undef]

    我想用一些 jQuery 来做一个粘性导航栏但我得到了错误 ERROR is not defined no undef ERROR document is not defined no undef 并且代码不起作用 有人可以帮助我为什么会出
  • 我可以在不使用好友的情况下从班级外部访问私人成员吗?

    免责声明 是的 我完全意识到我所问的问题是完全愚蠢的 任何希望在生产代码中尝试这样的事情的人都应该被解雇和 或枪杀 我主要是想看看是否can做完了 现在这已经不成问题了 有什么方法可以从类外部访问 C 中的私有类成员吗 例如 有什么方法可以
  • 解析 JSON 数组并加载到 hive 表中

    我有一个如下所示的 Json 数组 Name xxxx Machine Machine1 Name yyyy Machine Machine2 Name zzzz Machine Machine3 我需要解析该数据并加载到如下所示的配置单元
  • 循环内分配内存与循环外分配内存

    在循环的每次迭代中分配大块堆内存是否会带来明显的性能损失 当然 我在每次迭代结束时释放它 另一种方法是在进入循环之前分配一次 在所有迭代中重复使用它 并最终在退出循环后释放它 请参阅下面的代码 allocation inside loop
  • PowerMock java.lang.ClassCastException:sun.net.www.protocol.https.HttpsURLConnectionImpl 无法转换为 javax.net.ssl.HttpsURLConnection

    我创建了一个模拟HttpsURLConnection基于一个堆栈交换答案 https stackoverflow com a 25334710 939250 import java net URL import javax net ssl
  • 如何通过ajax调用获取JSON数据

    我想得到JSON来自 ajax 调用的 php 页面的数据 php 页面正在返回AJAX字符串 现在我必须得到它JSON数据和显示值分开 我怎样才能做到这一点 这是我正在使用的代码 当我运行此代码来获取数据product id 时 它显示警
  • Django 中如何发送电子邮件

    我有设置 py Email settings EMAIL BACKEND django core mail backends smtp EmailBackend EMAIL HOST smtp gmail com EMAIL HOST US
  • 通过Java从.class文件中获取ByteCode(依赖)信息

    我想分析一下 class文件并获取有关哪个类使用哪个其他类的信息 jdeps是一个命令行工具 它允许您在控制台中显示一些信息 但我想避免调用外部工具并抓取命令行输出 所有依赖项都记录在类文件的中心位置 即常量池 因此 为了有效地处理所有依赖
  • 格式化 C# 代码片段的文字参数

    有什么方法可以更改代码片段的文字在代码片段生成的代码中使用时的呈现方式吗 具体来说 我想知道是否可以有一个名为 PropertyName 的文字 然后让代码片段引擎渲染 PropertyName 其中第一个字符为小写 我买不起 R 请帮忙
  • 以一种独特且确定性的方式将两个整数映射到一个

    想象两个正整数 A 和 B 我想将这两个组合成一个整数 C 不能有其他整数 D 和 E 组合成 C 因此将它们与加法运算符结合起来是行不通的 例如 30 10 40 40 0 39 1 连接也不起作用 例如 31 2 312 3 12 这种
  • 如何让 localeCompare 的行为与 .sort() 类似,以便所有大写字母排在前面?

    我有一个要排序的字符数组 const arr z a Z A 我希望排序顺序为 按字母顺序排列大写字符 然后按字母顺序排列小写字符 A Z a z 使用以下方法来完成此操作很简单 sort 没有任何参数 const arr z a Z A
  • 如何使用 scipy optimization 找到 3 个参数和数据点列表的最小卡方?

    我有一个排序随机数的直方图和高斯叠加 https i stack imgur com dBqcU png 直方图表示每个箱的观察值 将此基本情况应用于更大的数据集 高斯是拟合数据的尝试 显然 这个高斯并不代表直方图的最佳拟合 下面的代码是高