我有一个一维数据数组:
a = np.array([1,2,3,4,4,4,5,5,5,5,4,4,4,6,7,8])
为此,我想获得68%的置信区间(即1
sigma
)。
此答案中的第一条评论指出,可以使用scipy.stats.norm函数通过以下方式实现scipy.stats.norm.interval
此目的:
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)
但是这篇文章中的评论指出,获得置信区间的 实际 正确方法是:
conf_int = stats.norm.interval(0.68, loc=mean,
scale=sigma / np.sqrt(len(a)))
也就是说,sigma除以样本大小的平方根:np.sqrt(len(a))
。
问题是:哪个版本正确?
从具有正mu和std偏差sigma的正态分布 的单次绘制得出 的68%置信区间为
stats.norm.interval(0.68, loc=mu, scale=sigma)
N平均值 的68%置信区间 是 从均值mu和std偏差sigma为正态分布 得出的
stats.norm.interval(0.68, loc=mu, scale=sigma/sqrt(N))
从直觉上讲,这些公式很有意义,因为如果您举起一罐果冻豆并要求大量人猜测果冻豆的数量,则每个人的偏差可能都很大-
相同的标准偏差sigma
-但猜测的平均值将在估计实际数量方面做得非常好,这可以通过平均收缩量的标准偏差来反映1/sqrt(N)
。
如果单个抽签具有方差sigma**2
,则根据Bienaymé公式,N
不相关 抽签的总和具有方差N*sigma**2
。
平均值等于总和除以N。将随机变量(如总和)乘以常数后,方差乘以常数的平方。那是
Var(cX) = c**2 * Var(X)
所以均值的方差等于
(variance of the sum)/N**2 = N * sigma**2 / N**2 = sigma**2 / N
因此平均值的标准偏差(即方差的平方根)等于
sigma/sqrt(N).
这是sqrt(N)
分母中的原点。
这是一些基于Tom的代码的示例代码,该代码演示了上述声明:
import numpy as np
from scipy import stats
N = 10000
a = np.random.normal(0, 1, N)
mean, sigma = a.mean(), a.std(ddof=1)
conf_int_a = stats.norm.interval(0.68, loc=mean, scale=sigma)
print('{:0.2%} of the single draws are in conf_int_a'
.format(((a >= conf_int_a[0]) & (a < conf_int_a[1])).sum() / float(N)))
M = 1000
b = np.random.normal(0, 1, (N, M)).mean(axis=1)
conf_int_b = stats.norm.interval(0.68, loc=0, scale=1 / np.sqrt(M))
print('{:0.2%} of the means are in conf_int_b'
.format(((b >= conf_int_b[0]) & (b < conf_int_b[1])).sum() / float(N)))
版画
68.03% of the single draws are in conf_int_a
67.78% of the means are in conf_int_b
请注意,如果您conf_int_b
为 样本定义mean
并sigma
基于样本进行估计a
,则平均值可能不conf_int_b
符合所需的频率。
如果您从分布中获取 样本 并计算样本均值和标准差,
mean, sigma = a.mean(), a.std()
请注意,不能保证这些将等于 总体 均值和标准差,并且我们 假设 总体是正态分布的-这些不是自动给出的!
如果您抽样并想要 估计 总体平均值和标准偏差,则应使用
mean, sigma = a.mean(), a.std(ddof=1)
因为此sigma值是总体标准偏差的无偏估计量。
问题内容: 将信号量动作包装在try- catch块中的正确方法是什么?如果在获取一定数量(但不是全部)所请求的许可后中断获取动作,会发生什么情况?你怎么知道又要释放多少?应该将发布放到一个“最终”块中,但是如果操作被中断,您是否不可以发布未获得的许可? 问题答案: 该方法是一项全有或全无的操作,您将获得所有请求的许可或被阻止。您可以对代码进行两次尝试,也可以让(可能的)中断的异常阻止气泡进入调用
问题内容: 这是我的代码: 当我运行此代码时,出现以下错误: 为什么会出现此错误? 我该如何解决? 正确的逆转方法是什么? 问题答案: 或者简单地: 将反转您的数据帧,如果您想使循环从下到上,则可以执行以下操作: 要么 因为你得到一个错误首先调用返回6,然后试图调用用于在和第一个电话会; 但在pandas数据框中表示第5列,而没有第5列,因此它将引发异常。(请参阅文档)
我正在尝试单元测试我的类,它看起来像:- 我想在类B中模拟“method2()”。我知道我们需要有一个B()的mock对象,这样每当我们调用它的方法时,就会发生模拟。这是我试过的 并使用调用它,现在的主要问题是method2被嘲弄了(即method2()的主体没有被执行),但我无法接收C的对象作为响应。 我的测试场景是:- 我想测试类A的method1(),它反过来调用类B的method2(),但
问题内容: 是否有一种简单的方法来获取当前操作系统使用的行尾类型? 问题答案: 如果您对以文本模式打开的文件进行操作,那么正确的是所有换行符都显示为“ ”。否则,您正在寻找。 从http://docs.python.org/library/os.html: os。 Lineep 在当前平台上用于分隔(或终止)行的字符串。这可以是单个字符,例如对于POSIX是’\ n’,也可以是多个字符,例如对于W
本文向大家介绍JSON.parse 捕获异常的正确方法,包括了JSON.parse 捕获异常的正确方法的使用技巧和注意事项,需要的朋友参考一下 捕获无效JSON解析错误的最佳方法,是将对JSON.parse的调用放在try / catch块中。 示例
本文向大家介绍JS获得图片alt信息的方法,包括了JS获得图片alt信息的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS获得图片alt信息的方法。分享给大家供大家参考。具体如下: 下面的JS代码可通过图片的alt属性获得图片的提示信息 希望本文所述对大家的javascript程序设计有所帮助。
问题内容: 我正在尝试从数据库中获取一些信息,然后使用该信息来获取一些统计信息。 我想获取基于小时间隔的统计信息,因此我创建了一个由两小时的小时和数据组成的数据。 为了获得正确的时间,我需要从数据库中获取时间。因此,我需要创建某种数据/日历对象。 现在,由于已弃用,我需要找到一种新的方式来设置时间。 有谁知道我能做到这一点吗? 到目前为止,此解决方案有效: 但是如上所述,日期已过时,因此我想学习“
问题内容: 这可能是一个愚蠢的问题,但是我想使用Modernizr JS库检测一些浏览器属性,以确定要显示或不显示什么内容。 我有一个名为Pano2VR的应用程序,它可以同时输出HTML5和SWF。我需要用于iOS设备用户的HTML5。 但是,IE根本不呈现此“ HTML5”输出。看来他们的输出使用CSS3 3D变换和WebGL,IE9中显然不支持一种或多种。 因此,对于那些用户,我需要显示Fla