首页 > 解决方案 > QQ-plot python均值和标准差

问题描述

我正在尝试使用 python 绘制一个 QQ 图。我正在检查 scipy.stats.probplot,输入似乎是针对正常分布的测量。

import numpy as np 
import pylab 
import scipy.stats as stats

measurements = np.random.normal(loc = 20, scale = 5, size=100)   
stats.probplot(measurements, dist="norm", plot=pylab)
pylab.show()

在我的代码中,我有

stats.probplot(mean, dist="norm", plot=plt)

比较分布。

但我想知道在哪里可以输入标准偏差?我认为在比较分布时这是一个非常重要的因素,但到目前为止我只能输入平均值。

谢谢

标签: pythonplotnormal-distribution

解决方案


假设您有一个浮动列表

X = [-1.31,
 4.82,
 2.18,
 1.99,
 4.37,
 2.58,
 7.22,
 3.93,
 6.95,
 2.41,
 2.02,
 2.48,
 -1.01,
 2.3,
 2.87,
 -0.06,
 2.13,
 3.62,
 5.24,
 0.57]

如果要进行 QQ_plot 测试,则需要将 X 与分布进行比较。例如:N(0, 1) 一个正态分布,其均值 = 0 且 sigma = 1

在 OpenTURNS 中,它是这样的:

import openturns as ot

sample = ot.Sample([[p] for p in X])  
graph = ot.VisualTest.DrawQQplot(sample, ot.Normal(0,1))
View(graph);

解释:我告诉 OpenTURNS 我有一个来自 X 的 20 个点 [p] 的样本,而不是维度 20 中的 1 个点。然后我ot.VisualTest.DrawQQplot用 2 个参数调用:sample和正态分布 (0,1) ot.Normal(0,1)

我们在图表上看到测试失败:

在此处输入图像描述

现在的问题是:拟合样本的最佳正态分布是什么?感谢NormalFactory()答案很简单:

BestNormalDistribution = ot.NormalFactory().build(sample)

如果你print(BestNormalDistribution)得到这个分布的参数: Normal(mu = 2.76832, sigma = 2.27773)

如果我们对它重复 QQ_plot 测试sampleBestNormalDistribution好很多 在此处输入图像描述


推荐阅读