标准差SD、相对标准偏差RSD学习和python实现

标准差SD、相对标准偏差RSD学习和python实现提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档标准差SD、相对标准偏差RSD学习和python实现前言一、SD和RSD的定义、公式、深层意义(1)定义(2)公式(3)RSD的必

一、SD和RSD的定义、公式、深层意义

(1)定义

RSD定义:相对标准偏差(relative standard deviation;RSD)又叫标准偏差系数、变异系数、变动系数等,由标准偏差除以相应的平均值乘100%所得值,可在检验检测工作中分析结果的精密度。
SD定义:标准差也被称为标准偏差,标准差(Standard Deviation)描述各数据偏离平均数的距离(离均差)的平均数,它是离差平方和平均后的方根,用σ表示。

(2)公式

SD:
在这里插入图片描述
RSD:
在这里插入图片描述
多了解点:
在这里插入图片描述

(3)RSD的必要性

只用SD不足以反映数据偏离中心的程度!
虽然标准偏差能够反映检测结果的精密程度,但是对于下面两组数据则无法正确体现:
第一组:10.1、10.2、10.3、10.4、10.5.
SD=0.158
第二组: 0.1、0.2、0.3、0.4、0.5.
SD=0.158
虽然这两组数据的都为0.158,但第一组数据是在10.3的基础上“波动”0.158,第二组数据是在“0.3”的基础上“波动”0.158,两组数据的“波动基础”明显不同。
数量级不同,绝对波动不能反映真实的波动程度,要用相对波动!
这样,必须引人“相对标准偏差”这个概念来体现这种波动的相对大小。这样,第一组数据的RSD=1.5%,第二组数据的RSD=52.7%,精密程度立刻体现出来。

(4)多学一点(关于n-1)

多学一点:为什么SD的分母是n-1,而不是n,我理解数学家大概的想法排除掉样本中偏离度比较大的点,但是没有实际的排除,是从维度自由度上解决的,即n-1。这个问题知有很好的文章写的很好,链接:https://www.zhihu.com/question/20099757?rf=21126585
补充知识:有偏估计、无偏估计和标准差的一些关系,去看看概率统计相关

二、Python实现

1.求SD

(1)numpy.std() 求标准差的时候默认是除以 n 的,即是有偏的,np.std无偏样本标准差方式为加入参数 ddof = 1;关于numpy.std()的官网手册链接:https://numpy.org/doc/stable/reference/generated/numpy.std.html
(2)pandas.std() 默认是除以n-1 的,即是无偏的,如果想和numpy.std() 一样有偏,需要加上参数ddof=0 ,即pandas.std(ddof=0) ;DataFrame的describe()中就包含有std();

以numpy.std举例:
代码:

import numpy as np
import pandas as pd
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
std1 = np.std(a, ddof = 1)                                     #方法1,np.std无偏样本标准差方式为加入参数 ddof = 1
std2 = np.sqrt(((a - np.mean(a)) ** 2).sum() / (a.size - 1))   #方法3,直接用公式啦

print(std1) 
print(std2)

输出结果:

3.0276503540974917
3.0276503540974917

Process finished with exit code 0

关于pandas:要了解下DataFrame,下次再写。
补看下这篇文章,参考链接https://www.jianshu.com/p/8024ceef4fe2

2.求RSD

import numpy as np

a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
std1 = np.std(a, ddof = 1)                                     #方法1,np.std无偏样本标准差方式为加入参数 ddof = 1
std2 = np.sqrt(((a - np.mean(a)) ** 2).sum() / (a.size - 1))   #方法2,直接用公式啦
print(std1)
print(std2)

ave = np.mean(a)
rsd1 = std1 / ave
rsd2 = std2 / ave
print(rsd1)
print(rsd2)

结果:

3.0276503540974917
3.0276503540974917
0.6728111897994427
0.6728111897994427

Process finished with exit code 0

先写这点,回头再加


今天的文章标准差SD、相对标准偏差RSD学习和python实现分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88837.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注