https://mycourses.aalto.fi/pluginfile.php/146910/mod_resource/content/1/binning_tutorial.pdf
take binning data, and calculate standard errors for them.
import matplotlib.pyplot as pl, numpy as np
from scipy.stats import binned_statistic
x, y = np.linspace(0,100,num=10000), np.random.normal(loc=3, scale=2, size=10000)
nbin = 50
cols=['b']
bx, _, _ = binned_statistic(x, x, bins=nbin, statistic='mean')
# count data for each bin (それぞれのbinにあるデータ数)
bc, _, _ = binned_statistic(x, x, bins=nbin, statistic='count')
# take edge info for bin span (binの範囲を表示するためにedgeの情報を代入)
by, bed, bn = binned_statistic(x, y, bins=nbin, statistic='median')
# standard deviations expecting to be ~2 (乱数の標準偏差は2なので、無論ここはほぼ2である)
berr, _, _ = binned_statistic(x, y, bins=nbin, statistic='std')
bw = (bed[1] - bed[0])
bc = bed[1:] - bw/2
pl.plot(x, y, '.', alpha=0.05, c='k')
pl.hlines(by, bed[:-1], bed[1:], lw=1, colors=cols[0])
#show just stddev for errors
pl.errorbar(bx, by, yerr=berr, marker='', ls='', mfc=cols[0], mec=cols[0], ecolor='r', alpha=0.5)
# calculating standard-error by dividing n_bin**0.5
pl.errorbar(bx, by, yerr=berr/bc**0.5, marker='o', ls='', mfc=cols[0], mec=cols[0], ecolor=cols[0])
pl.show()
pl.close('all')
result(結果)
0 件のコメント:
コメントを投稿