제조 현장에서 자주 보는 CUM_plot이 그물에 떨어지지 않았기 때문에 파이썬으로 만들어 보았습니다.

0. 처음에



생산 현장에서 불량 해석을 하고 있으면, CUM_plot 되는 것을 자주 이용한다. 정규 분포라면 직선이 되어, 이상치나 복수의 정규 분포가 섞여 있는지 등을 알기 쉽다. 문득 파이썬으로 작성하려고 하면 아무래도 그림 1의 CUM이 나오지만, 그림 2의 CUM이 나오지 않는다. . . 아무래도 보통은 CUM이라고 하면 그림 1을 나타냅니다.



그래서, 그림 2의 CUM 작성에 도전해 보았습니다. 옳은지 불명이므로, 잘못 등 있으면 지적해 주시면 도움이 됩니다.

1.CUM plot이란?



누적 분포 함수(cumulative distribution)의 약자. 다만 이것으로 구그하면 그림 1밖에 나오지 않는다. . .
htps : // 그럼.ぃきぺぢ아. 오 rg/우키/%에7%B4%아 F%에7%아9%8D%에5%88%86%에5%B8%83%에9%96%아2%에6%95%B0
그림 1의 CUM 작성 방법은 아래 URL을 참조하십시오.
htps // tp t b. rg / 3.1.1 / ぇ ry / s 들 s 치 cs / 히 s와 g 등 m_ 쿠무 ゔ ぇ. HTML

2.CUM 만드는 법



그림 2의 CUM을 잘 보면 y축이 정규 분포를 매핑하고 있는 것처럼 보인다. 다만 그런 스케일은 matplotlib에 없기 때문에, 무리하게 스케일 변환해 할당해 보았습니다.
#宣言
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt

#dataの作成
np.random.seed(19680803)
mu = 200
sigma = 3
x = np.random.normal(mu, sigma, size=100)

#累積分布関数の逆関数をxに割り当てる
norm_arr = list()
for no in range(1,len(x)+1):
   norm_arr.append(norm.ppf((no)/(len(x)+1))-norm.ppf(1/(len(x)+1)))
norm_arr=norm_arr/max(norm_arr)#正規化
x.sort()#xを小さい順にソート

#y軸表示の変更
scale =[]
list_axis =[0.0001,0.001,0.01,0.05,0.1,0.2,0.3,0.5,0.7,0.8,0.9,0.95,0.99,0.999,0.9999]
for no in list_axis:
   scale.append(norm.ppf(no)-norm.ppf(0.0001))
scale=scale/max(scale)

#描画
fig, ax = plt.subplots(figsize=(8, 4))
linestyles = '-'
ax.grid(True)
ax.legend(loc='right')
ax.set_title('Cumulative step histograms')
ax.set_xlabel('data')
ax.set_ylabel('Percentage')
plt.yticks(scale,list_axis)
ax.plot(x,norm_arr,label='linear',marker='o',markersize=1.0,linewidth=0.1,linestyle=linestyles)

plt.show()

실행하면 위 그림 2가 그대로 출력됩니다.

좋은 웹페이지 즐겨찾기