Python 3: Как выполнить односторонний тест на коэффициенты OLS в Python? - PullRequest
1 голос
/ 05 ноября 2019
import numpy as np
import statsmodels.api as sm

# Generate the data
X= np.random.normal(loc=0, scale=1, size=[50,2])
x=X[:,0]
y=X[:,1]

# Run the regression
X = sm.add_constant(x)
res = sm.OLS(y, X).fit()
print(res.summary())

enter image description here

Как проверить следующую нулевую гипотезу:

H_0: interecept=0.05
H_a: intercept<0.05

Существует ли код или какой-либо пакет, который позволяет вамсделать это в Python?

1 Ответ

1 голос
/ 05 ноября 2019

Я отвечаю на этот конкретный вопрос следующим образом:

def ttest_OLS(res, numberofbeta, X, value=0, alternative='two-sided', level_of_sig = 0.05):
    results=np.zeros([2])
    # numberofbeta represent the coeffiecent you would like to test 0 standts for interecept
    results[0]=res.tvalues[numberofbeta]
    results[1]=res.pvalues[numberofbeta]
    if isinstance(X, pd.DataFrame):
        column=X.columns[numberofbeta]
    else:
        column=numberofbeta
    if alternative == 'two-sided':
        if results[1]<level_of_sig:
            print("We reject the null hypothesis that the Selected Coefficient: {} is equal to {} with a {} % significance level".format(column, value, level_of_sig*100))
        else: print("We accept the null hypothesis that the Selected Coefficient: {} is equal to {} with a {} % significance level".format(column, value, level_of_sig*100))
    elif alternative == 'larger':
        if (results[0] > 0) & (results[1]/2 < level_of_sig):
            print("We reject the null hypothesis that the Selected Coefficient: {} is less than {} with a {} % significance level".format(column, value, level_of_sig*100))
        else: print("We accept the null hypothesis that the Selected Coefficient: {} is less than {} with a {} % significance level".format(column, value, level_of_sig*100))

    elif alternative == 'smaller':
        if (results[0] < 0) & (results[1]/2 < level_of_sig):
            print("We reject the null hypothesis that the Selected Coefficient: {} is more than {} with a {} % significance level".format(column, value, level_of_sig*100))
        else: print("We accept the null hypothesis that the Selected Coefficient: {} is more than {} with a {} % significance level".format(column, value, level_of_sig*100))

Способ, которым я реализовал следующий вопрос:

import pandas as pd
ttest_OLS(res, 0, X, value=0.5, alternative='two-sided', level_of_sig = 0.02)

Что будетсделать работу. Однако, если у вас есть лучший способ сделать это, пожалуйста, дайте мне знать.

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