相关疑难解决方法(0)

用scipy获得置信区间的正确方法

我有一个1维数据数组:

a = np.array([1,2,3,4,4,4,5,5,5,5,4,4,4,6,7,8])
Run Code Online (Sandbox Code Playgroud)

我希望获得68%置信区间(即:1西格玛).

在第一个评论这个回答指出,这可以实现使用scipy.stats.norm.intervalscipy.stats.norm功能,通过:

from scipy import stats
import numpy as np
mean, sigma = np.mean(a), np.std(a)

conf_int = stats.norm.interval(0.68, loc=mean, 
    scale=sigma)
Run Code Online (Sandbox Code Playgroud)

但是这篇文章中的评论指出,获得置信区间的实际正确方法是:

conf_int = stats.norm.interval(0.68, loc=mean, 
    scale=sigma / np.sqrt(len(a)))
Run Code Online (Sandbox Code Playgroud)

也就是说,sigma除以样本大小的平方根:np.sqrt(len(a)).

问题是:哪个版本是正确的?

python numpy scipy confidence-interval

33
推荐指数
3
解决办法
5万
查看次数

拟合曲线:为什么小数字更好?

这些天我花了一些时间解决一个问题。我有一组数据:

y = f(t),其中 y 是非常小的浓度 (10^-7),t 是秒。t 从 0 到 12000 左右不等。

测量遵循既定模型:

y = Vs * t - ((Vs - Vi) * (1 - np.exp(-k * t)) / k)
Run Code Online (Sandbox Code Playgroud)

我需要找到 Vs、Vi 和 k。所以我使用了curve_fit,它返回了最佳拟合参数,并绘制了曲线。

然后我使用了一个类似的模型:

y = (Vs * t/3600 - ((Vs - Vi) * (1 - np.exp(-k * t/3600)) / k)) * 10**7
Run Code Online (Sandbox Code Playgroud)

通过这样做,t 是一个小时数,而 y 是一个介于 0 和大约 10 之间的数字。返回的参数当然是不同的。但是当我绘制每条曲线时,我得到的是:

http://i.imgur.com/XLa4LtL.png

绿色拟合是第一个模型,蓝色拟合是“标准化”模型。红点是实验值。

拟合曲线不同。我认为这不是预期的,我不明白为什么。如果数字“合理”,计算是否更准确?

python numpy

5
推荐指数
1
解决办法
2540
查看次数

假设分布未知,根据样本数据计算置信区间

我有一些样本数据,我想计算其置信区间,假设分布不正常且未知。基本上,看起来分布是帕累托分布。分布直方图但我不确定。

正态分布的答案:

根据样本数据计算置信区间

使用 scipy 获取置信区间的正确方法

python statistics numpy scipy confidence-interval

5
推荐指数
1
解决办法
8681
查看次数

标签 统计

numpy ×3

python ×3

confidence-interval ×2

scipy ×2

statistics ×1