繁体   English   中英

R中的幂回归系数与Excel不匹配

[英]Coefficients from power regression in R do not match Excel

我在R和Excel中都创建了长度与干重的幂回归方程,但是系数不匹配。

我从此链接使用了Hong Ooi的答案R中的幂回归类似于excel 在该代码中,他们能够使用R代码从Excel复制幂方程。 但是,当我尝试时,我得到了一些非常奇怪的系数。 使用随机长度进行测试时,来自幂趋势线的Excel方程更为精确。

代码如下:

#sample dataset of Lengths and Dry Masses
test <- structure(list(
  Length = c(23, 17, 16, 25, 15, 25, 11, 22, 13, 21, 31), 
  DryMass = c(3.009, 1.6, 1, 4.177, 0.992, 6.166, 0.7, 1.73, 0.613, 3.429, 7.896)), 
  .Names = c("Length", "DryMass"), 
  row.names = c(NA, 11L), 
  class = "data.frame")

#log-log regression
lm(formula = log(Length) ~ log(DryMass), data = test)

Coefficients:
 (Intercept)  log(DryMass)  
      2.7048        0.3413  

一旦我转换了截距(EXP(2.7048)= 14.9515),这应该给我方程式“ 14.9515 * x ^ 0.3413”。 我试图用一些随机长度对其进行测试,但预测还很遥远。

但是,Excel给出的公式为“ 0.0009 * x ^ 2.6291”,经测试,该公式非常准确。 我只是使用Excel中的方程式,但我需要再增加50个方程式,并希望使用R将其自动化。

您正在尝试拟合以下模型。

library(ggplot2)
ggplot(test, aes(x = log(DryMass), y = log(Length))) +
  theme_bw() +
  geom_point() +
  scale_y_continuous(limits = c(0, 5)) +
  geom_smooth(formula = y ~ x, method = "lm", se = FALSE)

在此处输入图片说明

我相信(截距)(第一个系数)是线在x = 0处与y交叉的位置。 在上面的图像中,该值似乎介于2.5和3之间,所以说2.8,如果您问我的话,这很接近2.7。 也许Excel是错误的,在这种情况下,我建议您联系他们的作者? 或者,也许您正在Excel中做某事而在这里没有被听到,因此可以说该工具的可重复性。

编辑:

您在R中切换了x和y。

mod_linearized <- lm(formula = log(DryMass) ~ log(Length), data = test)

exp(coef(mod_linearized)[1])
# (Intercept) 
#0.0008775079 

旧答案(可能仍然有用):

线性化模型的逆变换与非线性模型不同,因为误差项不同:

逆变换的线性化模型导致乘法误差:y = exp(a)* x ^ b * exp(epsilon)

非线性模型具有加法误差:y = a * x ^ b + epsilon

基本上,线性化等效于数据点的不同加权(较大的值加权较小)。 这实际上可能是理想的(取决于您的特定数据生成过程)。 但是有时您想要相等的权重,然后应该拟合非线性模型。

您可以在R中进行非线性回归:

mod_linearized <- lm(formula = log(Length) ~ log(DryMass), data = test)

exp(coef(mod_linearized)[1])
#(Intercept) 
#   14.95152 


mod_nonlinear <- nls(Length ~ a * DryMass ^ b, data = test, 
                     #use result from linearization as starting values:
                     start = list(a = exp(coef(mod_linearized)[1]), 
                                  b = coef(mod_linearized)[2]))

coef(mod_nonlinear)[1]
#      a 
#15.2588 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM