[英]Statsmodels - Wald Test for significance of trend in coefficients in Linear Regression Model (OLS)
我使用Statsmodels生成OLS線性回歸模型,以基於大約10個獨立變量預測因變量。 自變量都是絕對的。
我有興趣仔細研究其中一個自變量的系數的重要性。 共有4個類別,因此有3個系數 - 每個系數都非常重要。 我還想看看所有三個類別的趨勢的重要性。 根據我的(有限)理解,這通常使用Wald測試並將所有系數比較為0來完成。
如何使用Statsmodels完成這項工作? 我看到有一個OLS功能的Wald測試方法。 使用此方法時,似乎必須傳入所有系數的值。
我的方法如下......
首先,這里是所有系數:
np.array(lm.params) = array([ 0.21538725, 0.05675108, 0.05020252, 0.08112228, 0.00074715,
0.03886747, 0.00981819, 0.19907263, 0.13962354, 0.0491201 ,
-0.00531318, 0.00242845, -0.0097336 , -0.00143791, -0.01939182,
-0.02676771, 0.01649944, 0.01240742, -0.00245309, 0.00757727,
0.00655152, -0.02895381, -0.02027537, 0.02621716, 0.00783884,
0.05065323, 0.04264466, -0.13068456, -0.15694931, -0.25518566,
-0.0308599 , -0.00558183, 0.02990139, 0.02433505, -0.01582824,
-0.00027538, 0.03170669, 0.01130944, 0.02631403])
我只對params 2-4感興趣(這是3個感興趣的系數)。
coeffs = np.zeros_like(lm.params)
coeffs = coeffs[1:4] = [0.05675108, 0.05020252, 0.08112228]
檢查以確保這有效:
array([ 0. , 0.05675108, 0.05020252, 0.08112228, 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ])
看起來不錯,現在要在測試中運行!
lm.wald_test(coeffs) =
<class 'statsmodels.stats.contrast.ContrastResults'>
<F test: F=array([[ 13.11493673]]), p=0.000304699208434, df_denom=1248, df_num=1>
這是正確的方法嗎? 我真的可以使用一些幫助!
線性假設具有R params = q
的形式,其中R是定義參數的線性組合的矩陣,q是假設值。
在我們想要測試某些參數是否為零的簡單情況下,R矩陣在列中對應於參數的位置為1,在其他地方為零,q為零,這是默認值。 每行指定參數的線性組合,其將假設定義為整體或聯合假設的一部分。
在這種情況下,獲得限制矩陣的最簡單方法是使用單位矩陣的相應行
R = np.eye(len(results.params))[1:4]
然后, lm.wald_test(R)
將提供3個參數為零的聯合假設的檢驗。
指定限制的一種更簡單的方法是使用參數的名稱並通過字符串列表定義限制。
模型結果類還有一個新方法wald_test_terms
,它自動生成設計矩陣中的項的wald檢驗,其中假設包括幾個參數或列,如分類解釋變量或多項式解釋變量的情況。 這在statsmodels master中可用,並將在即將發布的0.7版本中提供。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.