scipy 如何使用Python进行数据的多项式极大似然估计?

0ejtzxu1  于 2022-11-10  发布在  Python
关注(0)|答案(1)|浏览(232)

数据是这样的:

category number
100 1658
101 1801
102 1856
103 1804
104 1779
105 1765
106 1912
107 1976
108 2233
109 2512
110 3133

当你知道样本类型和每种类型的样本数时,就可以使用多项式最大似然估计。如何使用Python进行数据的多项式最大似然估计?

htzpubme

htzpubme1#

如果您将数据解释为多项分布中的样本,其中k = 10,n = 22429(其中n和k遵循Wikipeda文章Multinomial distribution中使用的约定),并且您希望得到事件概率的最大似然估计值,则只需将每个类别的计数除以n即可。(例如,请参见https://math.stackexchange.com/questions/421105/maximum-likelihood-estimator-of-parameters-of-multinomial-distribution.
下面是对数据的简单计算:

In [189]: import numpy as np

In [190]: s = """100 1658
     ...: 101 1801
     ...: 102 1856
     ...: 103 1804
     ...: 104 1779
     ...: 105 1765
     ...: 106 1912
     ...: 107 1976
     ...: 108 2233
     ...: 109 2512
     ...: 110 3133"""

In [191]: category, number = np.loadtxt(s.splitlines(), dtype=int, unpack=True)

In [192]: p = number/number.sum()  # Maximum likelihood estimate

In [193]: p
Out[193]: 
array([0.07392215, 0.08029783, 0.08275001, 0.08043158, 0.07931696,
       0.07869276, 0.08524678, 0.08810023, 0.09955861, 0.11199786,
       0.13968523])

相关问题