日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

解决异方差问题--加权最小二乘法

發布時間:2024/9/19 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 解决异方差问题--加权最小二乘法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

異方差問題 

  Ordinary Least Squares (OLS)需要四個 - -有些人說五或六個 - 假設要滿足,但建模時我們經常會遇到異方差(Heteroskedasticity)問題,

那是因為,很多數據都表現出這種“異方差性”。我們通常可以直觀地解釋原因:

隨著年齡的增長,凈值往往會出現分歧
隨著公司規模的擴大,收入趨于分化
或者,隨著嬰兒身高的增加,體重趨于分散

  OLS的主要假設之一是數據的殘差相同的,當不滿足同方差的假設時,即存在異方差時候,我們需要另外的方法--加權最小二乘法(WLS)去處理。

WLS實例 

import numpy as np
import pandas as pd
import seaborn as sns
import statsmodels.api as sm

# generate random data
np.random.seed(24)
x = np.random.uniform(-5,5,25)
e= 2*np.random.randn(25)
y = 2*x+e
# alternate error as a function of x
e2 = e*(x+5)
y2 = 2*x+e2

sns.regplot(x,y);
sns.regplot(x,y2);

  可以看到,這些集合來自相同的實例函數,但是作為x的函數的增加的方差導致橙色模型擬合不同于藍色的線。 在另一個隨機抽取中,斜率可能低于藍色,但一般會更加不穩定。

# add a strong outlier for high x
x_high = np.append(x,5)
y_high = np.append(y2,160)
# add a strong outlier for low x
x_low = np.append(x,-4)
y_low = np.append(y2,160)

sns.regplot(x_high,y_high);

sns.regplot(x_low,y_low);

  上面的第一個附加模仿了一個常見的情況,即高方差區域(預期)會看到極端觀察。 這將比WLS更多地影響OLS,因為WLS將減去方差及其“懲罰”。

  計算樣本權重,我們添加的錯誤隨(x + 5)的變化而變化; 我們可以使用它來對值進行反向加權。

# calculate weights for sets with low and high outlier
sample_weights_low = [1/(x+5) for x in x_low]
sample_weights_high = [1/(x+5) for x in x_high]
# reshape for compatibility
X_low = x_low.reshape(-1, 1)
X_high = x_high.reshape(-1, 1)

# import and fit an OLS model, check coefficients
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_low, y_low)
# fit WLS using sample_weights
WLS = LinearRegression()
WLS.fit(X_low, y_low, sample_weight=sample_weights_low)
print(model.intercept_, model.coef_)
print('WLS')
print(WLS.intercept_, WLS.coef_)

  需要注意的是,WLS中的斜率受到低異常值的影響。 低區域應該具有低可變性,因此異常值被放大到高于OLS的范圍,推動斜率更負。 讓我們看下面如何在WLS中抑制高異常值。 

model = LinearRegression()
model.fit(X_high, ymod)
WLS.fit(X_high, ymod, sample_weight=sample_weights_high)
print(model.intercept_, model.coef_)
print('WLS')
print(WLS.intercept_, WLS.coef_)

總結

  這是WLS的一個基本介紹,在這個領域還有很多東西要探索。例如:在建模時始終尋求使用經驗或先驗信息。使用模型的殘差 - 例如,如果var(εi)=σ2x_i* var(εi)=σ2x_i 那么我們可以決定使用w_i = 1 / x_i。

  如果響應是n觀察的平均值,則類似var(y_i)= var(ε_i)=σ2/ n_i * var(y_i)= var(ε_i)=σ2/ n_i,那么我們可以決定使用w_i = n_i。
有時我們知道異方差的類型。在這種情況下,我們可能決定使用權重與測量誤差的方差成反比。

總結

以上是生活随笔為你收集整理的解决异方差问题--加权最小二乘法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。