簡體   English   中英

在R中運行百分比最小二乘回歸

[英]Running percentage least squares regression in R

我感興趣的是運行百分比最小二乘回歸,而不是R中的普通最小二乘回歸。這也可以稱為具有乘法誤差的線性模型。 關於該站點的最小二乘百分比之前已經提出了一個問題,並且響應者建議研究加權回歸,一種可能性是通過其X值的倒數平方來加權每個觀察。

stackoverflow.com/questions/15275236/least-square-percentage-regression

然而,這假設我知道每個觀察應該先驗加權多少。 我不。 我不知道百分比誤差是1%,10%,15%等。我想要的是模型擬合

y= b1*x + e

將錯誤術語建模為:

e= b2*x

b2將是回歸模型中需要最小化的百分比誤差。 我無法找到適合R的此類型號的任何包或任何代碼。任何有關如何執行此操作的反饋將非常感激。

我假設您的意思是Tofallis (2009)定義的百分比回歸。

用他的例子:

Sales <- c(6375,11626,14655,21869,26408,32406,35108,40295,70762,80553,95294,101314,116141,122316,141650,175026,230614,293543)
Expenses <- c(62.5,92.9,178.3,258.4,494.7,1083,1620.6,421.7,509.2,6620.1,3918.6,1595.3,6107.5,4454.1,3163.8,13210.7,1703.8,9528.2)

如果我們將帶銷售額的普通最小二乘法作為因變量,我們得到模型Sales = 43942 + 15.00 R&D,截距和斜率的p值分別為0.03和0.0015。

fit1 <- lm(Sales ~ Expenses)
summary(fit1)
#                Estimate Std. Error t value Pr(>|t|)   
# (Intercept)   43941.705  18493.079   2.376  0.03033 * 
#   Expenses       14.994      3.915   3.830  0.00148 **

如果我們這樣做並執行普通最小二乘,我們得到模型:Ln(Sales)= 10.341 + 0.000198 R&D,斜率的p值為0.002,截距基本為零。

fit2 <- lm(log(Sales) ~ Expenses)  
summary(fit2)
#                Estimate Std. Error t value Pr(>|t|)    
# (Intercept)   1.034e+01  2.535e-01  40.793  < 2e-16 ***
#   Expenses    1.982e-04  5.366e-05   3.694  0.00197 **

最后,我們轉向本文提出的方法,最小化殘差的平方百分比。 在轉換回來之后得到的模型是:Sales = 8817 + 17.88 R&D,p值分別為0.002和5×10-5的斜率和截距。

fit3 <- lm(Sales ~ Expenses, weights = 1/Sales^2)
summary(fit3)
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)   8816.553   2421.644   3.641   0.0022 ** 
#   Expenses      17.880      3.236   5.525 4.61e-05 ***

所以,最后,這是加權回歸。

為了確認這一點,我們還可以使用數值優化:

resfun <- function(par) {
  sum((Sales - par[[1]]*Expenses - par[[2]])^2 / Sales^2)
}

optim(c(10,1000), resfun)
# $par
# [1]   17.87838 8816.44304

optim(c(10,1000), resfun, method="BFGS")
# $par
# [1]   17.97975 8575.71156

(不同的優化器會給出略有不同的結果。)

查看nlme包中的gls函數,以及一個varClasses ,如varIdentvarPower

可能是這樣的模型:

gls( y ~ x, data=mydata, weights=varPower(form= ~x) )

暫無
暫無

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

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