我有一个大的数据集和已发生的损失-我想通过蒙特卡罗模拟计算未来损失的分布。在
首先计算频率分布,然后计算严重性分布(在保险中,这称为频率-严重性模型)。在
请查看所附代码:from scipy.stats import lognorm, norm, poisson, gamma, expon
from scipy import stats
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
df = pd.read_excel('m3g.xlsx')
schaden = df["Schaden"]
fre = df.groupby("Jahr").size()
print(fre)
lam = np.sum(fre.values) / 13.0
print(lam)
print(stats.kstest(df["Schaden"],"lognorm",lognorm.fit(df["Schaden"])))
(arg,loc,scale) = lognorm.fit(df["Schaden"])
x = np.linspace(0, 0.3, 100)
_, ax = plt.subplots(1, 1)
plt.hist(schaden, bins = 'auto')
ax2 = ax.twinx()
ax2.plot(x, lognorm.pdf(x,arg, loc=loc, scale=scale), '-', color = "r", lw=2)
plt.show()
print(loc,scale,arg)
我想做的是找到最合适的分布。。。有没有一种方法可以尝试多种分布,然后选择最适合的分布?在
提前谢谢你并致以亲切的问候