1

我有一个带有 zipf 规律分布的数据集,现在我想将它与标准zipf图进行比较,这是我的R代码:

f <- read.table('/myfile.txt',sep='\t',header=T)
attach(f)
fs <- f[order(cnt), ]
detach(f)
n = 1:dim(fs)[1]
plot(fs[,2]~n)

现在我想将它与zipf同一个情节进行比较,我该怎么做R

4

1 回答 1

6

VGAM 包具有估计 Zipf 分布中的指数的功能。您可能希望根据最佳拟合估计密度绘制分布:

plot( cntdens <- table(f[['cnt']])/length(f[['cnt']]),
       xlim=range(f[['cnt']]), ylim=c(0, 0.8)  )

# And then plot the theoretic distribution for the VGAM fit 
# ... extending the example on ?VGAM::zipf:

require(VGAM)
zdata <- data.frame( y=1:max( f[['cnt']] ),  ofreq= table( f[['cnt']] ) )
fit = vglm(y ~ 1, zipf, zdata, trace = TRUE, weight = ofreq, crit = "coef")
proby = dzipf(1:max(f[['cnt']]), N =max(f[['cnt']]), s = Coef(fit) )
points((1:5)+0.05, proby,  col="red")

下面是使用 ?dzipf 页面上示例中的数据的过程。 在此处输入图像描述

于 2012-10-21T20:25:19.560 回答