異方差(heteroscedasticity)是指模型的誤差方差和自變量的取值有相關性,即對于不同的自變量取值,誤差的方差是不同的。在回歸分析中,如果存在異方差,會導致模型的參數估計不準確甚至無效。Python提供了一些方法來解決異方差問題。
一種解決異方差的方法是使用加加權最小二乘法(weighted least squares, WLS)。加權最小二乘法可以讓每個數據點的權重跟其對應的方差成反比例關系。在Python中,使用statsmodels包可以進行WLS回歸。
import numpy as np import statsmodels.api as sm # 定義自變量和因變量 X = sm.add_constant(X) # 加入截距項 model_wls = sm.WLS(y, X, weights=1./(X[:,1]**2)) results_wls = model_wls.fit() # 查看WLS回歸的結果 print(results_wls.summary())
上述代碼中,weights參數指定了每個數據點的權重,其中X[:,1]**2表示每個數據點的方差。WLS回歸得到的結果可以通過summary()方法查看。
另一種解決異方差的方法是使用穩健標準誤(robust standard errors)。這個方法通過對模型參數的標準誤進行修正來解決異方差問題。在Python中,使用statsmodels包的OLS方法可以進行穩健回歸。
import statsmodels.api as sm # 定義自變量和因變量 X = sm.add_constant(X) # 加入截距項 model_robust = sm.RLM(y, X, M=sm.robust.norms.HuberT()) results_robust = model_robust.fit() # 查看穩健回歸的結果 print(results_robust.summary())
上述代碼中,使用了RLM方法進行穩健回歸,并選擇了HuberT作為M參數指定的魯棒估計方法。如果模型存在異方差問題,穩健回歸的標準誤會比普通最小二乘法的標準誤更為準確。