Как проверить значения p параметров в OLS - PullRequest
0 голосов
/ 08 апреля 2019

При выполнении линейной регрессии, такой как y=a*x+b, сводка дает мне p-значения того, равны ли параметры нулю, что, если бы я хотел видеть p-значение того, равен ли параметр a2 или что-то отличное от нуля?

Я ожидаю, что сводка OLS даст мне значение p того, отличается ли a от 2.

Ответы [ 3 ]

2 голосов
/ 08 апреля 2019

В классах результатов есть методы проверки гипотез.Большинство из них основаны на тесте Вальда, то есть мы оцениваем полную модель и проверяем, соответствует ли ограничение данным.

http://www.statsmodels.org/devel/generated/statsmodels.regression.linear_model.RegressionResults.html

См., Например, t_test, чтовекторизовано для простой гипотезы и создает сводную таблицу, аналогичную той, которая содержится в сводке регрессии.http://www.statsmodels.org/devel/generated/statsmodels.regression.linear_model.RegressionResults.t_test.html, который имеет этот пример

>>> results = ols(formula, dta).fit()
>>> hypotheses = 'GNPDEFL = GNP, UNEMP = 2, YEAR/1829 = 1'
>>> t_test = results.t_test(hypotheses)

Существует несколько других методов, доступных для проверки гипотез:
wald_test предназначен для одной совместной гипотезы.
wald_test_terms проверяет, является ликаждый член имеет все параметры, равные нулю (например, для категориальных регрессоров), а
t_test_pairwise вычисляет t_test для каждой пары уровней для категориальных регрессоров.

0 голосов
/ 08 апреля 2019

Значение p соответствует вероятности наблюдения этого значения a при нулевой гипотезе (которая обычно равна 0, так как это тот случай, когда ковариата x не влияет на результат y).

Это подразумевает линейную регрессию, которая, среди прочего, утверждает, что a следует нормальному распределению.Поэтому, если вы действительно хотите изменить свою нулевую гипотезу на a=2, просто преобразуйте a так, чтобы a_ = a - 2 теперь, когда a=2, a_, было бы 0 согласно обычному предположению.

Таким образом, вы можете достичь этого путем решения для y+2x = a_*x + b, и у вас будет p-значение для вероятности того, что a=2 произойдет случайно.Как я уже сказал, это довольно необычный тест ...

0 голосов
/ 08 апреля 2019

мой комментарий объяснил:

Вот пример результата OLS (данные являются искусственными):

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.161
Model:                            OLS   Adj. R-squared:                 -0.007
Method:                 Least Squares   F-statistic:                    0.9608
Date:                Mon, 08 Apr 2019   Prob (F-statistic):              0.372
Time:                        11:14:10   Log-Likelihood:                -10.854
No. Observations:                   7   AIC:                             25.71
Df Residuals:                       5   BIC:                             25.60
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          2.1429      1.141      1.879      0.119      -0.789       5.075
x1             0.2500      0.255      0.980      0.372      -0.406       0.906
==============================================================================
Omnibus:                          nan   Durbin-Watson:                   1.743
Prob(Omnibus):                    nan   Jarque-Bera (JB):                0.482
Skew:                           0.206   Prob(JB):                        0.786
Kurtosis:                       1.782   Cond. No.                         10.4
==============================================================================

Итак, для параметра x1 мы имеем коэффициент 0,25 с STD 0,255.

p-значение x1 = 1:

>>> from scipy.stats import norm
>>> 2*(1 - norm.cdf(abs(1-0.25), scale=0.255))                                                                                          
0.00326968201269362
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...