codeye
2022/09/22阅读:36主题:默认主题
统计 异常偏差
描述。 如果一个数据样本包含一个或多个离群点,那么该样本的平均值和标准偏差就会被抛出。
由于这个原因,在计算样本的平均数或标准差之前,检查并去除异常值通常是一个好主意。为了这个目的,你的函数将收到一个代表数据样本的数字列表。你的函数必须去除任何离群值,并返回样本的平均值,四舍五入到小数点后两位(只在最后四舍五入)。

由于统计学中没有对 "异常值 "的客观定义,你的函数也将收到一个截止值,以标准差为单位。例如,如果截止值是3,那么任何高于或低于平均值3个标准差的值都必须被删除。请注意,一旦在第一次 "扫描 "中删除了离群值,其他不太极端的值就会 "变成 "离群值,你也必须将其删除

例子:
sample = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100].
cutoff = 3
clean_mean(sample, cutoff) → 5.5
平均值的公式:

(其中n为样本大小) 标准差的公式:

(其中N为样本量,xi为观测点i,x̄为样本平均数)。 注意:由于我们不是为了推断的目的而计算样本标准差,所以分母是n,而不是n-1。
递归统计学算法数据科学
Reference Code
from statistics import mean, median, pstdev #stdev
def clean_mean(sample, cutoff):
outline = []
Mean = mean(sample)
sample_std = pstdev(sample)
sample_cut_off = sample_std * cutoff
lower_edge = Mean - sample_cut_off
upper_edge = Mean + sample_cut_off
# Generate outliers
for outlier in sample:
if outlier > upper_edge or outlier < lower_edge:
outline.append(outlier)
if len(outline) == 0:return mean(sample)
for data in outline:
sample.remove(data)
return clean_mean(sample,cutoff)
1st solve
def clean_mean(sample, cutoff):
mean = sum(sample)/len(sample)
dev = ((1/len(sample))*sum((num-mean)**2 for num in sample))**(1/2)
print('dev = ',dev)
cleaned = [num for num in sample if abs(num-mean) <= cutoff*dev]
if sample==cleaned:
return round(mean,2)
else:
return clean_mean(cleaned,cutoff)
2nd solve
#2
from statistics import mean, pstdev
def clean_mean(sample, cutoff):
cond = True
while cond:
_mean = mean(sample)
_stdev = pstdev(sample)
print('_stdev=',_stdev)
cut = [x for x in sample if abs(x-_mean)/_stdev <= cutoff]
cond = len(sample) != len(cut)
sample = cut
return round(mean(sample),2)
3rd solve
#3
from numpy import mean, std
def clean_mean(sample, cutoff):
m, newMean = 1j, mean(sample)
while m != newMean:
m, sd = newMean, std(sample)
sample = [s for s in sample if abs(s-m) < sd * cutoff]
newMean = mean(sample)
return round(newMean, 2)
标准偏差
正态分布图(或钟形曲线),其中每条带子的宽度为1个标准差 - 也见。68-95-99.7规则。
预期值为0、标准差为1的正态分布的累积概率 在统计学中,标准差是对一组数值的变化量或分散度的衡量。[1]低的标准差表明数值倾向于接近这组数值的平均值(也称为预期值),而高的标准差表明数值分散在更大的范围内。
标准差可以缩写为SD,在数学文本和方程式中最常见的是用小写希腊字母σ(sigma)表示群体标准差,或用拉丁字母s表示样本标准差。
一个随机变量、样本、统计群体、数据集或概率分布的标准差是其方差的平方根。[2][3] 标准差的一个有用的特性是,与方差不同,它是以与数据相同的单位来表示的,这一点在代数上比较简单,但在实践中没有那么稳健。
人口或样本的标准差和统计量的标准误差(例如,样本平均数的标准差)是完全不同的,但又是相关的。样本平均数的标准误差是一组平均数的标准偏差,它是通过从人口中抽取无限多的重复样本并计算每个样本的平均数而发现的。平均数的标准误差原来等于人口标准偏差除以样本大小的平方根,并通过使用样本标准偏差除以样本大小的平方根来估计。例如,一项民意调查的标准误差(即报告中所说的民意调查的误差率),是指如果同一项民意调查进行多次,估计平均值的预期标准偏差。因此,标准误差估计了一个估计的标准偏差,它本身衡量了该估计在多大程度上取决于从人口中抽取的特定样本。
在科学界,通常同时报告数据的标准差(作为一个汇总统计)和估计值的标准误差(作为对调查结果中潜在误差的衡量)。按照惯例,只有与无效期望值相差超过两个标准误差的影响才被认为是 "统计学上的显著性",这是为了防止实际上是由于随机抽样误差造成的虚假结论。
当只有人口中的一个样本数据可用时,样本的标准差或样本标准差一词既可以指适用于这些数据的上述数量,也可以指对人口标准差(整个人口的标准差)的无偏估计的修正数量。
作者介绍