Использование функции lm и nls

#r #lm #nls

Вопрос:

Не могли бы вы сказать мне, есть ли какая-либо разница между использованием функции lm и nls ? Я привел пример ниже:

 df1lt;-structure(list(Category = c("ABC", "ABC", "ABC"), Days=c(42,43,44), Numbers = c(456.589136904762, 456.589136904762, 456.589136904762)), class= "data.frame", row.names = c(NA, -3L))  mod lt;- lm(Numbers ~ I(Days^2), df1) gt; mod  Call: lm(formula = Numbers ~ I(Days^2), data = df1)  Coefficients: (Intercept) I(Days^2)   4.566e 02 -1.711e-15   mod1 lt;- nls(Numbers ~ b1*Days^2 b2,start = list(b1 = 0,b2 = 0),data = df1, algorithm = "port")  gt; mod1 Nonlinear regression model  model: Numbers ~ b1 * Days^2   b2  data: df1  b1 b2  1.513e-08 4.566e 02   residual sum-of-squares: 1.422e-10  Algorithm "port", convergence message: X-convergence (3)  

Комментарии:

1. Из — за различий в расчетах и допусков обе функции обеспечивают приблизительно 0 для наклона.

2. Разница в том, что lm решает линейное уравнение, чтобы найти точный минимум остаточной суммы квадратов. Это работает только в том случае, если модель имеет линейную зависимость от коэффициентов b . Нелинейные методы, такие как nls поиск минимума остаточной квадратной суммы с помощью итерации, и эта итерация останавливается, когда разница шагов меньше заданного порога. Эти нелинейные методы почти никогда не находят точного минимума для линейной модели, но приближаются к нему.

3. Спасибо @Dave2e и @Нечой! Так что наиболее вероятным было бы использовать эту lm функцию, верно?

4. Если ваша модель линейна по коэффициентам b, как и ваша, то используйте lm .

5. Да, lm() это всегда лучший выбор для любых линейных соотношений (или уравнений, которые могут быть смоделированы как линейные).