Почему уравнение nls (нелинейная модель) в R отличается от Excel?

Я хочу проверить нелинейную модель с помощью пакета nls.

power<- nls(formula= agw~a*area^b, data=calibration_6, start=list(a=1, b=1))
summary(power)

а это параметры модели.

введите описание изображения здесь

В нем говорится, что y = 0,85844 x ^ 1,37629

Однако в Excel (ниже график). В нем говорится, что y = 0,7553 x ^ 1,419

введите описание изображения здесь

Если я построю график на R, он будет таким же. Почему одна и та же модель генерирует разные параметры?

Какому уравнению мне нужно больше доверять? Не могли бы вы мне об этом ответить?

Большое спасибо.

ggplot(data=calibration_6, aes(x=area, y=agw)) + 
  geom_point (shape=19, color="cadetblue" ,size=2.5) +
  stat_smooth(method = 'nls', formula= y~a*x^b, start = list(a = 0, b=0), se=FALSE, color="Dark Red",level=0.95) +
  scale_x_continuous(breaks = seq(0,25,5),limits = c(0,25)) +
  scale_y_continuous(breaks = seq(0,80,10), limits = c(0,80)) +
  theme_bw() + 
  theme(panel.grid = element_blank())

введите описание изображения здесь


person Jinwook Kim    schedule 08.10.2020    source источник
comment
Сравните стандартную остаточную ошибку (для R показано выше) или остаточную сумму квадратов для R deviance(power) двух решений.   -  person G. Grothendieck    schedule 08.10.2020


Ответы (1)


Excel фактически не выполняет нелинейную регрессию. Он преобразует и выполняет линейную регрессию.

Смоделируем некоторые данные в R.

x <- 1:20
set.seed(42)
y <- 0.7 * x ^1.5 + rnorm(20, sd = 0.1)

Вот что дает мне Excel:

Диаграмма Excel с подгонкой

Вот что я получаю с нелинейной регрессией:

fit <- nls(y ~ a * x ^ b, start = list(a = 1, b = 1))

coef(fit)
#        a         b 
#0.7128834 1.4932711 

Это подход Excel:

fit_linear <- lm(log(y) ~ log(x))
exp(coef(fit_linear)[1])
# (Intercept) 
# 0.7515136 
coef(fit_linear)[2]
#  log(x) 
#1.471128

Как видите, тот же результат, что и в Excel.

Теперь, какой из обоих подходов правильный, зависит от ваших предположений относительно неопределенности. В подходе нелинейной регрессии возникают аддитивные ошибки. В линейной регрессии преобразованных данных возникают мультипликативные ошибки.

Смотрите также:

https://stats.stackexchange.com/a/254706/11849

https://stats.stackexchange.com/a/255265/11849

person Roland    schedule 08.10.2020
comment
Большое спасибо, Роланд. Ваш ответ - это то, что я до сих пор искал. Большое спасибо!! Я думаю, что это глупый вопрос, но ... если вам нужно выбрать одно уравнение, какое из них вы бы выбрали? из Excel или R? Я имею в виду, что я должен объяснить, почему я выбираю определенное уравнение. Например, если я говорю: «Я выбираю модель, y = 0,85844 x ^ 1,37629, используя формулу = agw ~ a * area ^ b в R», это звучит логично? Или, если я говорю: «Я выбираю модель, y = 0,7553 x ^ 1,419, используя линию тренда Excel в качестве мощности», это тоже правильно? - person Jinwook Kim; 08.10.2020
comment
Совсем не глупый вопрос. Мне кажется, что ваша дисперсия несколько увеличивается со средним значением (хотя это появление иногда может быть артефактом неравномерной выборки), предполагая, что подход преобразования и регрессии, вероятно, лучше. Вам также следует подумать, действительно ли разница в строках имеет значение для ваших выводов (если это так, вы должны быть более осторожными). - person Ben Bolker; 08.10.2020