У меня проблемы с получением параметра дисперсии имитируемых данных с помощью функции GLM statsmodels.
import statsmodels.api as sm
import matplotlib.pyplot as plt
import scipy.stats as stats
import numpy as np
np.random.seed(1)
# Generate data
x=np.random.uniform(0, 100,50000)
x2 = sm.add_constant(x)
a = 0.5
b = 0.2
y_true = 1/(a+(b*x))
# Add error
scale = 2 # the scale parameter I'm trying to obtain
shape = y_true/scale # given that, for Gamma, mu = scale*shape
y = np.random.gamma(shape=shape, scale=scale)
# Run model
model = sm.GLM(y, x2, family=sm.families.Gamma()).fit()
model.summary()
Вот сводка сверху:
Обратите внимание, что оценки коэффициентов верны (0,5 и 0,2), но шкала (21,995) далеко от шкалы, которую я установил (2).
Может кто-нибудь указать, что я неправильно понимаю / делаю неправильно? Спасибо!