关于样本标准差(SD)与样本标准误差(SE)

许多paper里经常能看到Mean±SD(SE)这样的表达方式,或者在图表里用SD或者SE来表示error bar,用SD的居多,但是也有不少用SE的。初学者很容易混淆SD(standard deviation)和SE(standard error)。

SD

SD我们都很清楚,是表达数据的离散程度,然后实际应用中很多数据具有近似正态分布的概率分布,有了SD,我们就可以大致估计数据的范围,譬如经典的"68-95-99.7法则",即约 68% 数值分布在距离平均值有 1 个标准差之内的范围,约 95% 数值分布在距离平均值有 2 个标准差之内的范围,以及约 99.7% 数值分布在距离平均值有 3 个标准差之内的范围。如下图:

4025027-bc80f2798e909707.png

SE

SE是什么呢,一般来说,自然界里很难获得总体数据,我们只能用样本(无论是各种实验还是社会调查抽样)去近似估计总体,这样问题就来了,估计的准不准(平均值)?
我们可以理论上这样做,既然不能获得总体,我们可以尽可能多(无限)的从标准差为σ的总体数据里抽取大小为 n 的样本,每个样本各有一个平均值,所有样本平均值的标准差就可以用"68-95-99.7法则"评估准不准了(这就是所谓的置信区间),样本平均值的标准差可以被证明如下公式表达:

4025027-ed15b20039a520c0.png

但由于通常σ为未知,此时可以用研究中取得样本的标准差 (S) 来估计:

4025027-1d8fbcd68c14b80c.png

这就是SE的来源,即 样本平均值的SD,我们用MATLAB编程演示下。

MATLAB演示

以掷硬币为例,掷100次,统计正面(1)的次数,共统计1000次作为一个sample,然后我们这样采1000个sample(程序不怕累的)。
先贴结果,代码放后面。结果如下,我们能看到样本平均值的SD基本等于样本的SE!

4025027-39f61a0cfaf72273.png

完整代码如下:

%1000个样本(sample)
sample_mean = []

for m=1:1000
    
    %掷硬币100次,统计正面的次数,共统计1000次作为一个sample
    sample = []
    for i = 1:1000
        box = randi([0,1],100,1);
        sample = [sample length(box(box==1))];    
    end
    sample_mean = [sample_mean mean(sample)];
end

%sample的标准差和标准误
SD_sample = std(sample)
SE_sample = SD_sample/sqrt(1000)
%sample平均值的标准差
SD_sample_mean = std(sample_mean)

结论

1、标准差(SD)更能反应离散程度。

paper里需要Mean±SD这个信息,就是便于读者进行判断数据的离散性,e.g.,一般我们把偏离平均值2或3个SD的值作为outlier(i.e., 异常值)。

2、标准误则比较适合用于评估精确性或准确性的问题。

paper里根据需要也可以提供Mean±SE这个信息,就是便于读者进行判断数据的不确定性,e.g.,95%置信区间是用的Mean ± 2*SE。

无论用哪种表达方式,一定要注意标明,特别是error bar,好的paper都会说明这是什么的。

  • 13
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Python中,可以使用`numpy`库中的`std`函数来计算样本标准差。具体使用方法如下: 假设有一个包含样本数据的一维数组`data`,可以使用以下代码计算样本标准差: ```python import numpy as np std = np.std(data, ddof=1) ``` 其中,`ddof`参数表示自由度的调整值,通常设为1,表示样本标准差的计算中使用样本自由度。 除了使用`numpy`库,还可以使用Python内置的`statistics`库来计算样本标准差。具体使用方法如下: ```python import statistics as st std = st.stdev(data) ``` 需要注意的是,`statistics`库中的`stdev`函数默认使用样本自由度来计算样本标准差,因此不需要指定自由度的调整值。 ### 回答2: Python中的样本标准差可以使用第三方库NumPy中的函数来计算。NumPy是一个用于科学计算的强大库,其中包含了许多用于统计学的函数。 要计算样本标准差,首先需要将数据存储在NumPy的数组中。然后,可以使用numpy.std()函数来计算标准差。此函数的第一个参数是数据数组,第二个参数是一些选项,用于指定计算标准差的方式。 以下是一个简单的示例代码: ``` import numpy as np data = np.array([1, 2, 3, 4, 5]) std = np.std(data, ddof=1) # 计算样本标准差,ddof=1表示使用n-1来计算(n为样本数量) print("样本标准差:", std) ``` 在这个例子中,我们首先导入了NumPy库,然后创建了一个包含数据的NumPy数组。接下来,我们使用np.std()函数来计算样本标准差,并将结果存储在std变量中。最后,我们打印出了计算得到的样本标准差。 需要注意的是,np.std()函数的默认行为是计算总体标准差,即使用n来计算。如果要计算样本标准差,需要将ddof参数设置为1,这样函数会使用n-1来计算。 通过以上步骤,我们可以使用Python来计算一组数据的样本标准差。 ### 回答3: 在Python中,计算样本标准差可以使用NumPy库中的函数。首先,需要导入NumPy库,代码如下: ```python import numpy as np ``` 接下来,我们需要有一个样本数据集来计算标准差。假设我们有一个包含数字的列表,可以将其转换为NumPy数组,然后使用`np.std()`函数来计算样本标准差。示例代码如下: ```python data = [1, 2, 3, 4, 5] data_array = np.array(data) std = np.std(data_array, ddof=1) ``` 其中,`data`是我们的样本数据集,`data_array`是将样本数据转换为NumPy数组,`ddof`参数是自由度校正(默认为0,表示总体标准差;设置为1表示样本标准差)。 最后,我们可以打印出样本标准差的值,示例代码如下: ```python print("样本标准差为:", std) ``` 样本标准差是一种度量数据集的离散程度的指标。它表示数据的平均值与每个数据点的差的平方的平均值的平方根。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值