绘制Zipf分布

时间:2012-10-21 11:37:52

标签: r math

我有一个带有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中执行此操作?

1 个答案:

答案 0 :(得分: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页面上示例中的数据的过程。 enter image description here