Расчет шкалы / дисперсии Gamma GLM с использованием statsmodels - PullRequest
0 голосов
/ 13 февраля 2020

У меня проблемы с получением параметра дисперсии имитируемых данных с помощью функции 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()

Вот сводка сверху: glm output

Обратите внимание, что оценки коэффициентов верны (0,5 и 0,2), но шкала (21,995) далеко от шкалы, которую я установил (2).

Может кто-нибудь указать, что я неправильно понимаю / делаю неправильно? Спасибо!

1 Ответ

0 голосов
/ 23 апреля 2020

Как заметил Джозеф в комментариях, statsmodels использует другой тип параметризации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...