curve fitting zipf distribution matplotlib python

Viewed 2902

I tried to fit the following plot(red dot) with the Zipf distribution PDF in Python, F~x^(-a). I simply chose a=0.56 and plotted y = x^(-0.56), and I got the curve shown below.

The curve is obviously wrong. I don't know how to do the curve fitting.

enter image description here

2 Answers

You need an intercept in your loglog plot, right now it is 0.

That frequency follows the inverse rank implies that there is a ratio K between the frequency and the inverse rank, so you need to fit:

F~x^(-a) => F = k/(x^a)

Related