python - 使用 python 拟合经验分布
问题描述
我有 255 个月(约 21 年)的金融资产回报率,范围从 -22.25% 到 +18.09%。我正在使用Scipy (Python) 将经验分布拟合到理论分布中的代码?将数据拟合到分布中并生成随机数。
这是数据的直方图。我相信上面的代码尝试使用 MLE(最大似然估计)将数据拟合到分布中,并且列表中有大约 88 种不同的分布。我的问题是,例如,burr
分布只是正随机变量(https://en.wikipedia.org/wiki/Burr_distribution,https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats .burr.html)。
但是当我拟合分布、获取参数并制作 PDF 时,我得到以下结果:
其中分布既有正值又有负值。
老实说,我认为我并不完全理解代码和拟合分布的含义。为什么应该只适合正值的分布也适合负值?
解决方案
试试distfit库。它适合基于您的经验数据的最佳理论分布。它返回 loc/scale 参数。您可以设置方向性以测试显着性(上限/下限)。拟合模型可用于生成新样本。有关文档,请参见此处。
pip install distfit
# import library
from distfit import distfit
# Lets create some random data for demonstration purposes. Ssuppose that X is your data.
X = np.random.normal(0, 2, 10000)
# Initialize with default settings
model= distfit(bound='both')
# Fit to find the best theoretical distribution
model.fit_transform(X)
# The fitted distribution can now be used to generate new samples.
Xgenerate = model.generate(n=1000)
推荐阅读
- java - 如何在列表中创建嵌套列表
- java - 如何在我的 Android 应用程序中向现有 csv 文件添加一行?
- azure - 在 Azure 数据工厂中处理多个目标 - 数据流管道
- php - 按对象的值分组,Laravel
- laravel - Laravel 请求很慢
- command - 使用斜线命令与 Rasa 进行 Mattermost 集成
- r - 尝试在 R 中运行代码时出现“model.frame.default 中的错误,可变长度不同”
- r - 计算一行中 NA 值的数量 - 当为 0 时重置
- oracle - SQLAlchemist 和 Oracle:ORA-00972:标识符太长
- python - 调整模型以获得更好的性能