Twitter最近宣布,您可以通过在以下公式中输入他们的关注者计数来高精度地估计任何给定Twitter用户的排名:
exp($ a + $ b*log(follower_count))
其中$ a = 21,$ b = -1.1
这显然比通过给定用户的跟随者计数对整个用户列表进行排序更有效.
如果您有来自不同社交网站的类似数据集,您如何获得$ a和$ b的值以适合该数据集?基本上是一些频率列表,其分布被假定为幂律.
我确信这很容易,但是我一直在试图找出如何在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函数,但这只是估计参数 - 我想绘制数据并查看它是否排列.
我使用rplcon()包中的函数生成一些随机变量poweRlaw
data <- rplcon(1000,10,2)
现在,我想知道哪些已知分布最适合数据。对数范数?经验?伽玛?幂律?指数截止的幂律?
所以我fitdist()在包中使用函数fitdistrplus:
fit.lnormdl <- fitdist(data,"lnorm")
fit.gammadl <- fitdist(data, "gamma", lower = c(0, 0))
fit.expdl <- fitdist(data,"exp")
Run Code Online (Sandbox Code Playgroud)
由于幂律分布和具有指数截止的幂律不是根据CRAN Task View: Probability Distributions的基本概率函数,所以我根据示例 4 编写了幂律的 d,p,q 函数?fitdist 
dplcon <- function (x, xmin, alpha, log = FALSE) 
{
    if (log) {
        pdf = log(alpha - 1) - log(xmin) - alpha * (log(x/xmin))
        pdf[x < xmin] = -Inf
    }
    else {
        pdf = (alpha - 1)/xmin * (x/xmin)^(-alpha)
        pdf[x < …Run Code Online (Sandbox Code Playgroud) 我正在使用 Jeff Alstott 的 Python powerlaw 包来尝试使我的数据符合幂律。Jeff 的软件包基于 Clauset 等人讨论幂律的论文。
首先,我的数据的一些详细信息:
到目前为止我做了什么
df_data 是我的数据框,其中 word_count 是一个包含大约 1000 个单词标记的单词计数数据的系列。
首先我生成了一个合适的对象:
fit = powerlaw.Fit(data=df_data.word_count, discrete=True)
Run Code Online (Sandbox Code Playgroud)
接下来,我使用 fit.distribution_compare(distribution_one, distribution_two) 方法将数据的幂律分布与其他分布进行比较 - 即对数正态、指数、对数正态、拉伸指数和截断幂律。
作为 distribution_compare 方法的结果,我为每个比较获得了以下 (r,p) 元组:
来自幂律文档:
R:浮动
两组似然值的对数似然比。如果为正,则第一组可能性更有可能(因此产生它们的概率分布更适合数据)。如果为负,则相反。
p:浮点数
R 符号的显着性。如果低于临界值(通常为 …
我想知道绘制度分布的脚本输出是否正确.
所以脚本是(其中我的所有顶点的度数的向量都存储在x中):
x是
x
 [1] 7 9 8 5 6 2 8 9 7 5 2 4 6 9 2 6 10 8 
Run Code Online (Sandbox Code Playgroud)
x是某个网络顶点的度数 - 像顶点1有7度,顶点2有9度等等x < - v2 summary(x)
library(igraph)
split.screen(c(1,2))
screen(1)
plot (tabulate(x), log = "xy", ylab = "Frequency (log scale)", xlab = "Degree (log scale)", main = "Log-log plot of degree distribution")
screen(2)
y <- (length(x) - rank(x, ties.method = "first"))/length(x)
plot(x, y, log = "xy", ylab = "Fraction with min. degree k (log scale)", xlab = …Run Code Online (Sandbox Code Playgroud) power-law ×6
r ×4
distribution ×1
ecdf ×1
fitdistrplus ×1
math ×1
mle ×1
plot ×1
probability ×1
python ×1
statistics ×1