我相信这很简单,但我一直在尝试找出如何在R中实现这一点。
我有一些数据,想要拟合到一个幂定律分布上。为了做到这一点,你需要在对数-对数累积概率图上绘制数据。y轴是数据的频率的对数(或者说是对数概率),x轴是值的对数。如果它是一条直线,那么它就符合幂定律分布,而斜率则决定了幂定律参数。
如果我想要数据的频率,我可以使用ecdf()函数:
我的数据集叫做Profits.negative,它只是一个长长的负交易利润列表(我已经将所有的负数转换成正数,以避免在后面出现对数问题)。
所以我可以输入:
plot(ecdf(Profits.negative))
我得到了一个方便的经验累积分布函数,并进行了绘图。现在我只需要将两个轴转换为对数刻度即可。我可以处理x轴:
Profits.negative.logs <- log(Profits.negative)
plot(ecdf(Profits.negative.logs))
快要完成了!我只需要想办法记录y轴!但是我似乎做不到,并且我也无法提取ecdf对象中的数字。有人能帮忙吗?
我知道有power.law.fit函数,但那只是估计参数-我想绘制数据并查看是否对齐。