R中的运行百分比最小二乘回归

R中的运行百分比最小二乘回归,r,regression,R,Regression,我感兴趣的是运行百分比最小二乘回归,而不是R中的普通最小二乘回归。这也可以被称为带乘法误差的线性模型。之前有人问过一个关于这个网站上的百分比最小二乘法的问题,回答者建议研究加权回归,一种可能性是通过X值的平方反比对每个观察值进行加权 然而,这假设我知道每个观察值应该被预先加权多少。我不。我不知道百分比误差是否为1%、10%、15%等等。我想要的是一个符合要求的模型 y= b1*x + e 其中,误差项建模为: e= b2*x b2是回归模型中需要最小化的误差百分比。我还没有找到任何包或任何代

我感兴趣的是运行百分比最小二乘回归,而不是R中的普通最小二乘回归。这也可以被称为带乘法误差的线性模型。之前有人问过一个关于这个网站上的百分比最小二乘法的问题,回答者建议研究加权回归,一种可能性是通过X值的平方反比对每个观察值进行加权

然而,这假设我知道每个观察值应该被预先加权多少。我不。我不知道百分比误差是否为1%、10%、15%等等。我想要的是一个符合要求的模型

y= b1*x + e
其中,误差项建模为:

e= b2*x
b2是回归模型中需要最小化的误差百分比。我还没有找到任何包或任何代码来适合R的这种类型的模型。任何关于如何做到这一点的反馈都将不胜感激

查看nlme包中的gls函数,以及varIdent或varPower等varclass之一

可能是这样的模型:

gls( y ~ x, data=mydata, weights=varPower(form= ~x) )
查看nlme包中的gls函数,以及vardent或varPower等varclass之一

可能是这样的模型:

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

我想你是指托法利斯定义的百分比回归

以他的例子:

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)
如果我们应用普通最小二乘法,将销售额作为依赖项 我们获得的变量模型销售额=43942+15.00研发 截距和斜率的p值分别为0.03和0.0015

如果我们这样做,并进行普通最小二乘法,我们得到 型号:LnSales=10.341+0.000198研发,p值为0.002 对于斜率,截距基本为零

最后,我们转向本文提出的方法,最小化 残差的平方百分比。得出的模型为:, 转回后:销售=8817+17.88研发,p值为 坡度和截距分别为0.002和5×10-5

最后,这是加权回归

为了确认这一点,我们还可以使用数值优化:

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

不同的优化器会给出稍有不同的结果。

我假设您指的是Tofallis定义的百分比回归

以他的例子:

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)
如果我们应用普通最小二乘法,将销售额作为依赖项 我们获得的变量模型销售额=43942+15.00研发 截距和斜率的p值分别为0.03和0.0015

如果我们这样做,并进行普通最小二乘法,我们得到 型号:LnSales=10.341+0.000198研发,p值为0.002 对于斜率,截距基本为零

最后,我们转向本文提出的方法,最小化 残差的平方百分比。得出的模型为:, 转回后:销售=8817+17.88研发,p值为 坡度和截距分别为0.002和5×10-5

最后,这是加权回归

为了确认这一点,我们还可以使用数值优化:

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

不同的优化器将给出略有不同的结果。

这不等于使用y的对数变换并继续进行普通最小二乘回归吗?若要返回到未转换的y,将对RHS求幂,从而产生乘法项和错误。@zkurtz log transformation假设关系的形式为y=e^x,因此,如果关系是真正的线性关系,则返回转换的效果大小将减小。对数变换可能适用于确定显著性,但不适用于确定影响大小。我更喜欢按实际情况对数据进行建模,而不是以估计适当的效应大小为代价进行转换以处理非正态残差。更明确地说,对数转换将使误差分布为正态,并处理此模式的异方差性,以便可以在OLS框架中进行处理。此外,在这种情况下,从未转换的模型中获取效应大小可能是合理的。然而,我更愿意运行一个模型来处理所有的问题。这将通过运行百分比最小二乘回归而不是普通最小二乘回归来实现。这不等于使用y的对数变换并继续进行普通最小二乘回归吗?若要返回到未转换的y,将对RHS求幂,从而产生乘法项和错误。@zkurtz log transformation假设关系的形式为y=e^x,因此,如果关系是真正的线性关系,则返回转换的效果大小将减小。对数变换可能适用于确定显著性,但不适用于确定影响大小。我更喜欢按实际情况对数据进行建模,而不是以估算适当的效应大小为代价进行转换以处理非正态残差。更明确地说,
对数变换将使误差分布正态化,并处理此模式的异方差性,以便可以在OLS框架中进行处理。此外,在这种情况下,从未转换的模型中获取效应大小可能是合理的。然而,我更愿意运行一个模型来处理所有的问题。这将通过运行百分比最小二乘回归来实现,而不是普通的最小二乘回归。我的意思是Tofallis 2009定义的百分比回归。谢谢你附上参考资料。你的回答和原稿都很清楚。但我确实有一个问题——你链接的托法利斯论文建议权重为1/y,而你建议权重为1/y^2。在你的例子中,y是销售。为什么选择按1/y^2计算权重,而不是源代码中建议的1/y?对我来说,用平方反比来加权,而不是仅仅用平方反比来加权,会得到更大的观测值,甚至更少的权重,这不是我想做的事情@使用函数lm的colin加权1/y^2意味着平方残差乘以权重,即残差乘以1/y。快速一瞥,这与参考相符。如果你不同意,请指出论文的相关部分。你可以自由使用任何你想要的重量,如果这能改进模型的话。谢谢。我已经决定用1/y来称重,而不是1/y^2。在手稿中,对系数部分公式的推导进行了描述,从第3页底部开始,一直到第4页。接下来,在检查正态性时,我认为在这种情况下,查看模型残差除以y值平方根的qqnorm图是正确的,残差与拟合值也应该这样做?@colin AFAIU他们将残差除以y。因为我的代码将残差的平方除以y^2,所以它应该是相同的。然而,加权回归的一般建议在此适用。研究残差图和杠杆图,并比较AIC。@科林:我认为权重=1/y^2与本例相同。拟合残值=40%拟合值:104,r^2[1/y]16/10=1.6,r^2[1/y^2]16/100=0.16;208,r^2[1/y]64/20=3.2,r^2[1/y^2]64/400=0.16。如果您的模型将残差^2最小化,并且在我的示例中,您希望y的z%的所有残差具有相等的权重,即40%,那么权重=1/y^2。我的意思是Tofallis 2009定义的百分比回归。谢谢你附上参考资料。你的回答和原稿都很清楚。但我确实有一个问题——你链接的托法利斯论文建议权重为1/y,而你建议权重为1/y^2。在你的例子中,y是销售。为什么选择按1/y^2计算权重,而不是源代码中建议的1/y?对我来说,用平方反比来加权,而不是仅仅用平方反比来加权,会得到更大的观测值,甚至更少的权重,这不是我想做的事情@使用函数lm的colin加权1/y^2意味着平方残差乘以权重,即残差乘以1/y。快速一瞥,这与参考相符。如果你不同意,请指出论文的相关部分。你可以自由使用任何你想要的重量,如果这能改进模型的话。谢谢。我已经决定用1/y来称重,而不是1/y^2。在手稿中,对系数部分公式的推导进行了描述,从第3页底部开始,一直到第4页。接下来,在检查正态性时,我认为在这种情况下,查看模型残差除以y值平方根的qqnorm图是正确的,残差与拟合值也应该这样做?@colin AFAIU他们将残差除以y。因为我的代码将残差的平方除以y^2,所以它应该是相同的。然而,加权回归的一般建议在此适用。研究残差图和杠杆图,并比较AIC。@科林:我认为权重=1/y^2与本例相同。拟合残值=40%拟合值:104,r^2[1/y]16/10=1.6,r^2[1/y^2]16/100=0.16;208,r^2[1/y]64/20=3.2,r^2[1/y^2]64/400=0.16。如果您的模型最小化残差^2,并且在我的示例中,您希望y的z%的所有残差具有相等的权重,即40%,那么权重=1/y^2。