Я пытался подогнать степенной закон к своим данным о распределении степеней, используя пакет степенного закона Alstott et al. Ниже приведен мой код.
импортировать networkx как nx импортировать степенной закон импортировать matplotlib.pyplot как plt g = nx.powerlaw_cluster_graph(1000, 25, 0,9) градусы = список(dict(g.grade).values()) fit = powerlaw.Fit(градусы, дискретный=True) рис, топор = plt.subplots(figsize = (10,10)) powerlaw.plot_pdf(градусы, цвет='r', маркер = 'o', linestyle='', ax=ax) #построение группированных точек данных fit.power_law.plot_pdf(color = 'darkblue', ax=ax) #построение подобранной кривой ax.set_xlabel('k', размер шрифта = 16) ax.set_ylabel('P(k)', размер шрифта = 16) ax.set_title('Степень распределения сети', размер шрифта = 20) ax.tick_params (размер метки = 12) plt.text(0.05, 0.6, f'γ = {round(fit.power_law.alpha, 2)}', Transform=plt.gca().transAxes, fontsize=20, color='darkblue') plt.text(0.05, 0.55, '$x_{min}$ = ' + f'{fit.power_law.xmin}', Transform=plt.gca().transAxes, fontsize=20, color='darkblue') plt.text(0,05, 0,50, f'KS Расстояние: {round(fit.power_law.D, 2)}', Transform=plt.gca().transAxes, fontsize=20, color='darkblue')

Как вы видите, синяя кривая находится далеко от точек данных, разбитых на красные.
Что заставило меня почесать голову, так это то, как подобранная кривая расположена вдали от всех точек. Почему это так? Означает ли это, что подгонке нельзя доверять? Расстояние Колмогорова-Смирнова также невелико. Fit.noise_flag имеет значение false, что означает, что подгонка недействительна. Итак, что дает?