使用 WordMat 和 R 时,使用相同的数据和方法(?),结果不同
Different results, using same data and method(?), when using WordMat and R
我有兴趣将 GNU 插件计算的结果重现到 R 中的 MS Word WordMat,但我无法让它们得出相似的结果(我不是在寻找相同的,而是在寻找相似的).
我有一些 y 和 x 值和幂函数,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 提供更多详细信息。
我有兴趣将 GNU 插件计算的结果重现到 R 中的 MS Word WordMat,但我无法让它们得出相似的结果(我不是在寻找相同的,而是在寻找相似的).
我有一些 y 和 x 值和幂函数,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 提供更多详细信息。