蟒蛇:瑞利飞度直方图 更新

如何解决蟒蛇:瑞利飞度直方图 更新

我仍在使用python进行编程。 这是我第一次尝试使用直方图和拟合!

特别是,我有一个数据集,并对其做了直方图。在这一点上,我应该进行瑞利拟合,但是我无法找出正确设置参数的正确方法。我读到了loc和scale,应该将fit的参数通常设置为0和1。显然,这种方式的拟合效果不好!!!有没有人可以帮助我? 为了清楚起见,我要附加我正在使用的代码。

谢谢。

pipeline.set_params(hyperparameter=1,...)
我的数据(fondi)是:[13 15 13 14 12 13 12 14 15 12 11 10 11 15 18 11 11 11 13 15 15 15 15 12 12 13 12 15 15 15 12 12 11 14 16 11 13 14 16 17 24 21 16 20 18 18 19 21 22 19 15 16 15 13 14 16 18 21 19 22 14 13 14 15 14 17 19 17 16 18 12 15 17 17 16 17 16 19 17 14 13 16 16 13 15 17 17 20 18 17 12 19 14 15 15 14 13 17 16 14 12 11 12 20 19 16 24 19 20 19 17 16 17 16 19 22 17 16 20 22 21 22 20 14 18 16 19 20 17 20 22 20 22 19 17 13 16 18 14 16 20 20 18 19 19 16 19 12 12 14 14 13 15 16 16 19 16 17 12 11 11 10 12 11 11 13 14 13 17 8 8 8 10 10 10 14 16 11 9 9 11 10 17 13 15 19 15 13 16 17 14 12 13 14 11 10 15 13 12 12 11 10 9 9 9 9 8 15 16 12 9 11 9 10 10 7 7 7 21 19 13 10 15 12 10 10 9 8 10 20 14 13 11 13 15 14 10 11 12 16 17 15 12 13 16 15 13 14 17 14 13 15 13 11 14 15 17 18 22 22 16 16 17 22 17 17 18 26 17 19 21 16 15 19 19 22 19 18 17 18 18 12 17 17 17 18 18 14 16 20 17 16 16 18 16 19 18 18 20 20]

输出:loc = 6.783540954380711 scale = 6.430045149216335

Rayleight fit

解决方法

调整MCVE

下面是一个简单的过程,可从Rayleigh distribution提取试验数据集,然后使用Maximum Likelihood Estimation方法提供的scipy.stats.rv_continuous.fit查找其参数:

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

# Create a Continuous Variable: 
X = stats.rayleigh(loc=10,scale=5)

# Sample from this Random variable
x0 = X.rvs(size=10000,random_state=123)

# Adjust Distribution parameters
loc,scale = stats.rayleigh.fit(x0) # (9.990726961181025,4.9743913760956335)

# Tabulate over sample range (PDF display):
xl = np.linspace(x0.min(),x0.max(),100)

# Display Results:
fig,axe = plt.subplots()
axe.hist(x0,density=1,label="Sample")
axe.plot(xl,X.pdf(xl),label="Exact Distribution")
axe.plot(xl,stats.rayleigh(scale=scale,loc=loc).pdf(xl),label="Adjusted Distribution")
axe.set_title("Distribution Fit")
axe.set_xlabel("Variable,$x$ $[\mathrm{AU}]$")
axe.set_ylabel("Density,$f(x)$ $[\mathrm{AU}^{-1}]$")
axe.legend()
axe.grid()

它呈现如下:

enter image description here

注释

我想提请您注意以下要点:

  • 300对于直方图分类箱来说是一个巨大的数字,因为您将拥有空的或低填充的分类箱,这会降低表示的质量。由于代表下的垃圾箱,它也可能使统计检验(例如“卡方拟合度”)失败。您当然可以让matplotlib估算垃圾箱的数量;
  • 分布通常采用位置和比例参数,在scipy.stats中,它们会尽一切可能以这种方式对每个可用分布进行规范化。要找出与usual parametric distribution definition的对应关系,您需要解决以下问题:pdf(x) = pdf(y)/scale其中y = (x-loc)/scale。在这种情况下,您将看到scale参数等效于sigma,并且这对于原点偏移是不变的(不依赖于loc值);
  • 要调整分布,您需要在某些时候执行一些分析/统计过程以从采样数据中估计参数。您的代码中缺少此部分(请参见上面的MCVE中的stats.rayleigh.fit(x0))。这部分独立于matplotlib绘制的任何图形,由scipy处理,该图形在完整数据集上执行MLE(这就是为什么更改bin只会影响直方图显示而没有其他影响的原因。) / li>

更新

根据您的帖子更新,我完成了我的回答。使用您提供的数据集:

x0 = np.array([13,15,13,14,12,11,10,18,16,17,24,21,20,19,22,8,9,7,26,18])

我们可以尝试调整瑞利分布:

p = stats.rayleigh.fit(x0)
X = stats.rayleigh(*p)

从视觉上看,合身度不是很好:

enter image description here

让我们通过统计测试进行确认。首先,我们可以使用ECDF Kolmogorov-Smirnov检查Test是否与调整后的分布的CDF兼容:

kst = stats.kstest(x0,X.cdf)
# KstestResult(statistic=0.12701044409231593,pvalue=0.0001232197856051324)

我们还可以评估调整后的分布的预期计数,并使用Chi Square Test将它们与有礼貌的计数进行比较:

c,b = np.histogram(x0)
ct = np.diff(X.cdf(b))*np.sum(c)
c2t = stats.chisquare(c,ct,ddof=2)
# Power_divergenceResult(statistic=31.874916914227434,pvalue=4.284273564311872e-05)

自由度的差等于2,因为除了卡方统计量外,我们还必须估计瑞利分布的locscale参数(因此在测试中为ddof=2致电)。

这两个测试的p-value都非常低且相似,这意味着很难满足零假设(因此告诉我们应该拒绝它们):

  • Kolmogorov: H0 =样本是从参考分布中提取的;
  • 卡方: H0 =类别在观察分布和预期分布之间没有差异;

那么很难相信您的数据集来自调整后的瑞利分布。

您可以将这些结果与MCVE中绘制的综合数据进行比较,测试返回的p值会超过10%:

# KstestResult(statistic=0.0097140857969642,pvalue=0.3019167138216704)
# Power_divergenceResult(statistic=11.170065854104491,pvalue=0.13137094282775724)

在这种情况下我们无法拒绝H0,我们相信采样数据可能来自调整后的瑞利分布。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 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