如果我有两个随机指数分布,其中有一个特定的lambda,我混合了这两个分布,我如何用矩估计方法从混合分布中获得2个lambda,这是我到目前为止得到的:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from random import choice
n = 100
lambda1 = 10
lambda2 = 50
dataset1 = pd.DataFrame(np.random.default_rng().exponential(scale=(1/lambda1), size=n))
dataset2 = pd.DataFrame(np.random.default_rng().exponential(scale=(1/lambda2), size=n))
mixeddata = pd.concat([dataset1, dataset2])
bins = [5, 10, 25, 50]
fig, (ax1, ax2, ax3, ax4) = plt.subplots(4)
ax1.hist(mixeddata, bins=5, edgecolor='black', density=True)
ax2.hist(mixeddata, bins=10, edgecolor='black', density=True)
ax3.hist(mixeddata, bins=25, edgecolor='black', density=True)
ax4.hist(mixeddata, bins=50, edgecolor='black', density=True)
ax1.set_ylim(0, 1)
ax2.set_ylim(0, 1)
ax3.set_ylim(0, 1)
ax4.set_ylim(0, 1)
plt.show()
我做了两个随机指数分布的数据集,我混合了它们,绘制了不同箱的直方图。现在我想从中提取两个lambda。
1条答案
按热度按时间1mrurvl11#
混合指数分布的前两个矩可以用混合概率

p
和速率参数lambda_1
和lambda_2
表示。均值和方差可以这样推导:
现在,您可以将这些表达式等同于混合数据的样本均值和方差,并求解得到的方程组。注意,这可能导致非线性方程组,这可能需要数值方法来求解。
我们可以使用SciPy库中的
fsolve
来求解方程组: