簡體   English   中英

如何在R中設置線性回歸model中的權重?

[英]How do I set the weighed in linear regression model in R?

我在 R 中有以下數據,我想使用加權最小二乘法得到y~x1+x2+x3+x4的線性回歸 model。 如果我想使用樣本方差作為原始數據的加權平方估計的基礎。

舒伯特等人。 (1992) 用彈射器進行了一項實驗,以確定鈎子 ( x 1 )、arm 長度 ( x 2 )、起始角 ( x 3 ) 和停止角 ( x 4 ) 對彈射器彈射距離 ( y ) 的影響扔球。 他們針對每種因素將球投擲 3 次。 下表總結了實驗結果,其中對x 1、x 2、x 3和x 4的因子水平進行了標准化處理

x1<-c(-1,-1,-1,-1,1,1,1,1)
x2<-c(-1,-1,1,1,-1,-1,1,1)
x3<-c(-1,1,-1,1,-1,1,-1,1)
x4<-c(-1,1,1,-1,1,-1,-1,1)
y<-c(28,46.3,21.9,52.9,75,127.7,86.2,195)

R這個代碼怎么寫? 我嘗試了以下一個,但我不知道如何在 R 中設置加權w 。此代碼不起作用。

l=lm(y~x1+x2+x3+x4, weights=1/x) 

盡管您的 model 和數據(見下文)缺乏澄清和細節,但我認為您正在尋找這樣的東西:

# Store sample data in `data.frame`
df <- data.frame(y, x1, x2, x3, x4)

# First: "Vanilla" OLS estimation
fit_OLS <- lm(y ~ ., data = df)

# Second: Weights
weights <- 1 / fitted(lm(abs(residuals(fit_OLS)) ~ fitted(fit_OLS))) ^ 2

# Third: Weighted least squares estimation
fit_WLS <- lm(y ~  ., data = df, weights = weights)

# Compare coefficients
coef(fit_OLS)
#(Intercept)          x1          x2          x3          x4 
#     79.125      41.850       9.875      26.350       5.425 
coef(fit_WLS)
#(Intercept)          x1          x2          x3          x4 
#     79.125      41.850       9.875      26.350       5.425 

不想重復其他人已經解釋得更好的內容,我建議您參考這篇文章,詳細說明計算權重背后的基本原理。

如您所見,OLS 和 WLS 例程的參數估計是相同的,因為估計的weights是相同的。

這又回到了我原來的問題(見評論):那些x1x2x3x4預測變量的值似乎很奇怪。 如果它們表示彈射器的鈎子、arm 長度、起始角和停止角,為什么它們只取值-11 您是否以某種方式離散了原始數據? 這不清楚,但對於評估 model 擬合度很重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM