目的
方差在统计描述和概率分布中各有不同的定义,并有不同的公式。
在统计描述中,方差用来计算每一个变量(观察值)与总体均数之间的差异。为避免出现离均差总和为零,离均差平方和受样本含量的影响,统计学采用平均离均差平方和来描述变量的变异程度。
总体方差计算公式
: \({\sigma}^2=\frac{\sum_{i=1}^{N}(X_i-\bar{\mu})}{N}\)
其中\({\sigma}^2\)为总体方差,\(X_i\)为变量,\(\bar{\mu}\)为总体均值,\(N\)为总体例数。
实际工作中,总体均数难以得到时,应用样本统计量代替总体参数,经校正后,
样本方差计算公式
: \({S}^2=\frac{\sum_{i=1}^{N}(X_i-\bar{X})}{n-1}\)
其中\({S}^2\)为样本方差,\(X_i\)为变量,\(\bar{X}\)为样本均值,\(n\)为样本例数。
方差的计算
数据准备
取一定周期的沪深300指数(000300.SH)的每日行情数据,如:2019年全年。为了计算每日涨跌幅,故多取了2018年最后一个交易日的数据。
1 | import pandas as pd |
open | close | high | low | vol | amount | up_count | down_count | date_stamp | volume | ||
---|---|---|---|---|---|---|---|---|---|---|---|
date | code | ||||||||||
2018-12-28 | 000300 | 2994.80 | 3010.65 | 3024.35 | 2984.82 | 710537.0 | 7.814531e+10 | 200 | 81 | 1.545926e+09 | 710537.0 |
2019-01-02 | 000300 | 3017.07 | 2969.54 | 3018.78 | 2958.49 | 686630.0 | 7.610557e+10 | 70 | 216 | 1.546358e+09 | 686630.0 |
2019-01-03 | 000300 | 2963.02 | 2964.84 | 3000.44 | 2953.26 | 708671.0 | 7.666480e+10 | 145 | 142 | 1.546445e+09 | 708671.0 |
2019-01-04 | 000300 | 2940.19 | 3035.87 | 3036.81 | 2935.83 | 1033189.0 | 1.071410e+11 | 286 | 12 | 1.546531e+09 | 1033189.0 |
2019-01-07 | 000300 | 3055.15 | 3054.30 | 3061.75 | 3035.91 | 1011643.0 | 1.057039e+11 | 217 | 73 | 1.546790e+09 | 1011643.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2019-12-25 | 000300 | 3988.66 | 3990.87 | 4000.56 | 3976.36 | 949388.0 | 1.318965e+11 | 117 | 168 | 1.577203e+09 | 949388.0 |
2019-12-26 | 000300 | 3993.67 | 4025.99 | 4025.99 | 3993.54 | 1088606.0 | 1.408150e+11 | 236 | 53 | 1.577290e+09 | 1088606.0 |
2019-12-27 | 000300 | 4029.25 | 4022.03 | 4066.80 | 4019.72 | 1509264.0 | 1.950904e+11 | 116 | 173 | 1.577376e+09 | 1509264.0 |
2019-12-30 | 000300 | 4015.52 | 4081.63 | 4083.69 | 4001.50 | 1559714.0 | 2.168147e+11 | 241 | 53 | 1.577635e+09 | 1559714.0 |
2019-12-31 | 000300 | 4077.75 | 4096.58 | 4098.14 | 4069.01 | 1232642.0 | 1.731193e+11 | 189 | 95 | 1.577722e+09 | 1232642.0 |
245 rows × 10 columns
date code
2018-12-28 000300 NaN
2019-01-02 000300 -0.013655
2019-01-03 000300 -0.001583
2019-01-04 000300 0.023957
2019-01-07 000300 0.006071
...
2019-12-25 000300 -0.000523
2019-12-26 000300 0.008800
2019-12-27 000300 -0.000984
2019-12-30 000300 0.014818
2019-12-31 000300 0.003663
Name: close, Length: 245, dtype: float64
使用numpy计算
numpy 中计算的方差就是总体方差。
1 | np.var(returns_index) |
0.00015577588074696037
使用pandas计算
pandas 中计算的方差为样本方差。
1 | returns_index.var() |
0.0001564169337541495
小结
在计算方差时,使用numpy和pandas会得到不一样的计算结果,需要根据实际需要样本方差还是总体方差来决定使用何种方式。