R中的日志日志概率图

use*_*916 3 r power-law ecdf

我确信这很容易,但是我一直在试图找出如何在R中做到这一点.

我有一些数据,我试图适应幂律分布.为此,您需要在对数日志累积概率图表上绘制数据.y轴是数据频率的LOG(如果您愿意,则为对数概率),x轴是值的对数.如果它是直线,则它符合幂律分布,并且梯度确定幂律参数.

如果我想要数据的频率,我可以使用ecdf()函数:

我的数据集叫做Profits.negative,它只是一长串的交易利润小于零(我将它们全部转换为正数以避免以后记录问题).

所以我可以输入

plot(ecdf(Profits.negative))
Run Code Online (Sandbox Code Playgroud)

我得到了一个方便的经验CDF功能.我需要做的就是将两个轴转换为对数刻度.我可以做x轴:

Profits.negative.logs <- log(Profits.negative)
plot(ecdf(Profits.negative.logs))
Run Code Online (Sandbox Code Playgroud)

差不多了!我只需要弄清楚如何记录y轴!但我似乎无法做到这一点,我无法弄清楚如何从ecdf对象中提取数字.有人可以帮忙吗?

我知道有一个power.law.fit函数,但这只是估计参数 - 我想绘制数据并查看它是否排列.

csg*_*pie 5

您可以使用poweRlaw包来拟合和绘制幂律.这是一个例子.首先,我们从重尾分布中生成一些数据:

set.seed(1)
x = round(rlnorm(100, 3, 2)+1)
Run Code Online (Sandbox Code Playgroud)

接下来,我们加载包并创建一个数据对象和一个displ对象:

library(poweRlaw)
m = displ$new(x)
Run Code Online (Sandbox Code Playgroud)

我们可以估算xmin和缩放参数:

est = estimate_xmin(m))
Run Code Online (Sandbox Code Playgroud)

并设置参数

m$setXmin(est[[2]])
m$setPars(est[[3]])
Run Code Online (Sandbox Code Playgroud)

然后绘制数据并添加拟合线:

plot(m)
lines(m, col=2)
Run Code Online (Sandbox Code Playgroud)

要得到:

在此输入图像描述