使用 WordMat 和 R 时,使用相同的数据和方法(?),结果不同

Different results, using same data and method(?), when using WordMat and R

我有兴趣将 GNU 插件计算的结果重现到 R 中的 MS Word WordMat,但我无法让它们得出相似的结果(我不是在寻找相同的,而是在寻找相似的).

我有一些 yx 值和幂函数,y = bx^a

使用以下数据,

x <- c(15,31,37,44,51,59)
y <- c(126,71,61,53,47,42)

我在 WordMat 中得到 a = -0.8051 和 b = 1117.7472,但在 R 中得到 a = -0.8026 和 B = 1108.2533,值略有不同。

我是否以某种错误的方式使用了 nls 函数,或者是否有更好(更透明)的方法在 R 中计算它?

数据和R代码,

# x <- c(15,31,37,44,51,59)
# y <- c(126,71,61,53,47,42)
df <- data.frame(x,y)
moD <- nls(y~a*x^b, df, start = list(a = 1,b=1))
summary(moD)

Formula: y ~ a * x^b

Parameters:
    Estimate Std. Error t value Pr(>|t|)    
a  1.108e+03  1.298e+01   85.35 1.13e-07 ***
b -8.026e-01  3.626e-03 -221.36 2.50e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3296 on 4 degrees of freedom

Number of iterations to convergence: 19 
Achieved convergence tolerance: 5.813e-06

看起来 WordMat 正在通过对数-对数回归而不是通过求解非线性最小二乘问题来估计 y=b*x^a 的参数:

> x <- c(15,31,37,44,51,59)
> y <- c(126,71,61,53,47,42)
> 
> (m1 <- lm(log(y)~log(x)))

Call:
lm(formula = log(y) ~ log(x))

Coefficients:
(Intercept)       log(x)  
     7.0191      -0.8051  
> exp(coef(m1)[1])
(Intercept) 
   1117.747 

进一步解释这里发生的事情:如果 y=b*x^a,对两边取对数得到 log(y)=log(b)+a*log(x),它具有线性回归的形式(lm()在R)。但是,对数转换也会影响误差的方差(隐式包含在问题的右侧),这意味着您实际上是在解决不同的问题。哪个是正确的取决于你如何陈述问题。 This question on CrossValidated 提供更多详细信息。