Решение распределения степенного закона в 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