四、方差和标准差

  • 方差是数据组中各数据值与其算术平均数离差平方的算术平均数。
  • 方差的平方根就是标准差
  • 标准差的本质与平均差基本相同,平均差取绝对值的方法消除离差正负号后用算数平均的方法求平均离差。标准差用平方的方法消除离差的正负号后用离差平方求平均数再开根号。
  • 标准差的性质:
    • 标准差度量了偏离平均数的大小
    • 标准差是一类平均偏差
    • 数列大多数项距离平均数少于1个标准差范围内,极少数项距离平均数 2个 或者 3个标准差以上。

两组工人日产量标准差计算如下:

甲   组 乙   组
日产量 离差 离差平方 日产量 离差 离差平方
x x - 平均数 (x - 平均数) 的平方 x x - 平均数 (x - 平均数) 的平方
4 -12 144 7 -9 81
7 -9 81 12 -4 16
11 -5 25 14 -2 4
14 -2 4 14 -2 4
14 -2 4 15 -1 1
16 0 0 17 1 1
17 1 1 17 1 1
24 8 64 19 3 9
25 9 81 20 4 16
28 12 144 25 9 81
合计 --- 548 合计 --- 214
  • 甲组方差 = 甲组离差平方的平均值 = 548 / 10 = 54.8
  • 甲组标准差 = 7.40 (件)
  • 乙组方差 = 乙组离差平方的平均值 = 214 / 10 = 21.4
  • 乙组标准差 = 4.63(件)
  • 在甲乙两组工人平均日产量相等(都是16件)的情况下,甲组的标准差(7.40 件)大于乙组的标准差(4.63 件),因而其平均数的代表性比乙组小。

五、离散系数

  • 极差、平均差、标准差都是对数据的离中趋势进行绝对或平均差异的测定。
  • 在通常情况下,它们都带有计量单位,而月其离中趋势大小与变量平均水平的高低有关。
  • 因此,要比较数据平均水平不同的两组数据的离中程度的大小,就有必要计算它们的相对离中程度指标,即离散系数。
  • 常用的离散系数指标是标准差系数。

标准差系数是将一组数据的标准差与其算数平均数对比的结果,以测定其相对离中程度。

例:甲乙两班中,哪个班的平均成绩更具有代表性?

甲班的平均成绩为 70 分,标准差为 9.0 分,乙班的成绩分组如下:

成绩分组 学生人数
60以下 2
60 - 70 6
70 - 80 25
80 - 90 12
90 - 100 5

以下分析乙班成绩:

按成绩分组

组中值(x) 学生人数(f) xf x - 平均数 (x - 平均数)的平方 (x - 平均数)的平方 * 人数
60以下 55 2 110 -22.4 501.76 1003.52
60 - 70 65 6 390 -12.4 153.76 922.56
70 - 80 75 25 1875 -2.4 5.76 144
80 - 90 85 12 1020 7.6 57.76 693.12
90 - 100 95 5 475 17.6 309.76 1548.8
合计 --- 50 3870 --- --- 4312
  • 甲班的平均成绩为 70分,标准差为9.0分,标准差系数为 9.0 / 70 = 0.1286
  • 乙班的平均成绩为 3870 / 50 = 77.4 分
  • 乙班的标准差为 4312 / 50 的开根号 = 9.29 分

由于甲、乙两班成绩的平均值和标准差都不一样,无法使用标准差来比较哪个班的成绩波动大,因此必须使用离散系数来判断。从计算中可以看出:V乙<V甲,所以乙班的成绩波动小一些,则其班级的平均成绩更有代表性。

六、Python 计算 方差、标准差、离散系数

import dash
from dash import dcc, html
from dash.dependencies import Input, Output
import numpy as np

# 创建 Dash 应用
app = dash.Dash(__name__)

# 应用布局
app.layout = html.Div([
    html.H1('请输入数据'),
    dcc.Input(id='input-data', type='text', placeholder='输入数据,用逗号分隔'),
    html.Button('计算', id='compute-button', n_clicks=0),
    html.Div(id='output-container')
])

# 回调函数,用于处理按钮点击事件
@app.callback(
    Output('output-container', 'children'),
    [Input('compute-button', 'n_clicks')],
    [dash.dependencies.State('input-data', 'value')]
)
def compute_var_std_mean(n_clicks, input_value):
    if n_clicks > 0:
        try:
            # 将输入字符串转换成数字列表
            data = list(map(float, input_value.split(',')))
            # 方差
            variance = np.var(data)
            # 标准差
            std_dev = np.std(data)
            # 均值
            mean = np.mean(data)
            # 离散系数
            coefficient_of_variation = std_dev / mean if mean != 0 else float('inf')

            # 显示结果
            output = [
                f'方差:{variance:.2f}'
                f'标准差:{std_dev:.2f}',
                f'离散系数:{coefficient_of_variation:.2f}'
            ]
            return '<br>'.join(output)
        except Exception as e:
            return str(e)

if __name__ == '__main__':
    app.run_server(debug=True)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐