Решение распределения степенного закона в Python

У меня есть данные, которые очень похожи на power law распределение. Используя Python, я хочу приблизить данные, решая два уравнения в форме:

y это данные оси Y. В Python это было бы data[i], х будет i + 1, Отсюда следует, что мы получаем два уравнения с двумя неизвестными переменными в первом индексе данных и в "случайном" втором где-то еще в данных:


Проблема сводится к решению просто

из-за математического упрощения. Я не знаю, как решить такое уравнение, используя такие библиотеки, как numpy.linalg.solve, Как мне найти значение a используя Python?

1 ответ

Решение

Хорошо, я понял.

import math

def get_power_law_variables(data):
    c = data[0]
    middle_index = len(data) / 2
    division = float(data[middle_index]) / c
    logarithm_base = middle_index + 1
    a = math.log(division, logarithm_base)
    return c, a

# Example usage
data = range(50, 150)
c, a = get_power_law_variables(data)
print c, a
Другие вопросы по тегам