데이터 세트가 있고 해당하는 막대 그래프를 로그 정규 분포에 맞 춥니 다. 먼저 lognormal 함수에 대한 최적의 매개 변수를 계산 한 다음 히스토그램과 로그 정규 함수를 플롯합니다. 이것은 꽤 좋은 결과를 얻을 수 있습니다 : 피팅 함수에 비해 데이터의 콜 모고 로프 - 스 미르 노프 테스트를 수행 할 때Python에서 p 값이 매우 낮습니다. Kolmogorov-Smirnov 적합 테스트의 적합성
import scipy as sp
import numpy as np
import matplotlib.pyplot as plt
num_data = len(data)
x_axis = np.linspace(min(data),
max(data),num_data)
number_of_bins = 240
histo, bin_edges = np.histogram(data, number_of_bins, normed=False)
shape, location, scale = sp.stats.lognorm.fit(data)
plt.hist(data, number_of_bins, normed=False);
# the scaling factor scales the normalized lognormal function up to the size
# of the histogram:
scaling_factor = len(data)*(max(data)-min(data))/number_of_bins
plt.plot(x_axis,scaling_factor*sp.stats.lognorm.pdf(x_axis, shape,
location, scale),'r-')
# adjust the axes dimensions:
plt.axis([bin_edges[0]-10,bin_edges[len(bin_edges)-1]+10,0, histo.max()*1.1])
그러나, 나는 전자의 정도 (너무 낮은 P-값을 가져 32) :
lognormal_ks_statistic, lognormal_ks_pvalue =
sp.stats.kstest(
data,
lambda k: sp.stats.lognorm.cdf(k, shape, location, scale),
args=(),
N=len(data),
alternative='two-sided',
mode='approx')
print(lognormal_ks_statistic)
print(lognormal_ks_pvalue)
이것은 우리가 피팅이 매우 정확 플롯에서 볼 수 있기 때문에 내가 실수를 한 곳 ... 아무도 알고 있지, 정상 아닌가요?
감사합니다. Charles