泊松函数与直方图数据的曲线拟合总和

如何解决泊松函数与直方图数据的曲线拟合总和

我是新来的,所以我希望这篇文章清晰易读/正确设置。我在尝试在python中使用 curve_fit 将直方图数据拟合为泊松分布之和时遇到困难。数据是一组不同原子数的光子计数。该代码中的集合被截断为0个原子(背景),1个原子或2个原子。无论是使用用户定义的Poisson还是scipy中的poisson.pmf函数,我都无法成功实现拟合而没有错误。

```python
from scipy.special import factorial
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
import numpy as np

### User Defined poisson
def poissonian( x,A0,x0,A1,x1,A2,x2 ):
    return (A0 * x0**x * np.exp(-x0) / scipy.special.factorial(x)\
        +A1 * x1**x * np.exp(-x1) / scipy.special.factorial(x)\
        +A2 * x2**x * np.exp(-x2) / scipy.special.factorial(x))

### Built in poisson function
#def poissonian( x,x2 ):
#    return (A0*poisson.pmf(x,x0)+A1*poisson.pmf(x,x1)+A2*poisson.pmf(x,x2))

binwidth = 75
bin2 = 18
xmin = 0
xmax = bin2 * binwidth

counts,bins,bars = plt.hist( counts_77_2x2,bins=bin2,range=(xmin,xmax) )
#counts_77_2x2 is a dataset for the number of photons detected from atoms 
#trapped in an optical tweezer. The point of this fit is to determine the 
#probability of loading n atoms in a given optical tweezer,77 is for tweezer 
#7,2x2 is the box pixel size for the target tweezer site imaged by emccd


bins = np.rint( bins[1:] - 75 / 2 ).astype( np.int32 )

#for reference
#bins =[  38  112  188  262  338  412  488  562  638  712  788  862  938 
#1012 1088 1162 1238 1312]
#counts= [ 2.  0.  1.  2.  2.  5.  3. 10. 11.  8.  6.  4. 10.  8.  8.  9.  
#7.  3.]


## Initial Guess
p0 = [1,400,9,650,8,1050]

#Bounds for fit
bounds=([1,1,5,525,850],[6,524,14,800,1350])

coeff,var_matrix = curve_fit(poissonian,counts,p0=p0,maxfev=1000000)

print( coeff )```

使用用户定义的泊松函数收益率

.... RuntimeWarning:powerreturn中遇到溢出(A0 * x0 ** x * np.exp(-x0)/ scipy.special.factorial(x)....

我已经阅读了有关类似问题的前几页,我将scipy.special.factorial替换为阶乘,因为它可以容纳更高价值的输入,但无济于事。

使用内置的poisson.pmf概率质量函数产生

... \ anaconda3 \ lib \ site-packages \ scipy \ optimize \ minpack.py:828:OptimizeWarning:无法估计参数的协方差警告.warn('无法估计参数的协方差',

为减少计算开销,我将x值按比例缩小为1(所有仓室均等距,因此以后可以按比例放大以用于实际峰中心)。使用此方法,我终于可以进行工作(尽管很丑陋)

```python
import scipy
from scipy.stats import poisson
from scipy.special import factorial
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
import numpy as np


def poissonian( x,x2 ):
    return (A0 * x0**x * np.exp(-x0) / scipy.special.factorial(x)\
        +A1 * x1**x * np.exp(-x1) / scipy.special.factorial(x)\
        +A2 * x2**x * np.exp(-x2) / scipy.special.factorial(x))

binwidth = 75
bin2 = 18
xmin = 0
xmax = bin2 * binwidth

counts,xmax) )

#for reference
#bins =[  38  112  188  262  338  412  488  562  638  712  788  862  938 1012 
#1088 1162 1238 1312]
#counts= [ 2.  0.  1.  2.  2.  5.  3. 10. 11.  8.  6.  4. 10.  8.  8.  9.  7.  
#3.]


### set bin separation to one to reduce calculation overhead (bins1)

bins1 = np.linspace( 1,18,18 )

## Scaled down guess values
p0 = [1,4,10,15]

#scaled down bounds
bounds=([0.1,0.1,7,13],[5,6,12,3,18])

coeff,bins1,maxfev=1000000)

print( coeff )
```

现在我想知道按比例缩小版本的版本是否正常运行,使用真实数据集的代码是否存在错误,或者python对于非小x值数据适合泊松函数的能力是否存在根本限制?

谢谢您的时间!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res