分離度(Resolution, R)=2.5のヒストグラムがどういうのか想像できなかったので作ってみた。分離度はそれぞれの分布を正規分布としたとき、隣り合うピークの平均値の差 と、各ピークの標準偏差を使い、以下の式で定義している。
半値全幅 FWHM は なので、
となる。参照: 島津
重なりの割合も計算し、図示した。
import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm plt.rcParams['figure.figsize'] = [10, 2] for d in range(1,11): arr = [] sig = 1/d a = np.random.normal(0,sig,100000) b = np.random.normal(1,sig,100000) arr=np.concatenate([a,b]) overlap = (1-norm.cdf(0.5, loc=0, scale=sig))*2 label=f"R={1/(sig+sig)/2:.2f}\nσ={sig:.3f}\n1/σ={1/sig:.1f}\nOverlap={overlap*100:.3}%" plt.hist(arr,range=[-3,3],bins=200,alpha=0.6,label=label) plt.hist(a ,range=[-3,3],bins=200,alpha=0.2) plt.hist(b ,range=[-3,3],bins=200,alpha=0.2) plt.legend() plt.show()
正規分布から、標準偏差 σ の何倍の外れ値の割合を計算すると以下のようになる。
import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm plt.rcParams['figure.figsize'] = [10, 2] for d in range(1,8): arr = [] sig = 1/d a = np.random.normal(0,sig,100000) rate = (1-norm.cdf(1, loc=0, scale=sig))*2 label=f"σ={sig:.3f}\n1/σ={1/sig:.1f}\nRate(<1)={(1-rate)*100:.10}%\nRate(>1)={rate*100:.10}%" plt.hist(a ,range=[-3,3],bins=200,alpha=0.6,label=label) ymin, ymax = plt.gca().get_ylim() plt.vlines(1, ymin, ymax) plt.vlines(-1, ymin, ymax) plt.legend() plt.show()