R: сокращенная запись полинома в формуле nls()

С функцией линейной модели lm() полиномиальные формулы могут содержать сокращенную запись, подобную этой:

m <- lm(y ~ poly(x,3))

это ярлык, который избавляет пользователя от необходимости создавать переменные x ^ 2 и x ^ 3 или вводить их в формулу, например I(x^2) + I(x^3). Существуют ли сопоставимые обозначения для нелинейной функции nls()?


person JD Long    schedule 04.09.2010    source источник


Ответы (2)


poly(x, 3) — это больше, чем просто сокращение для x + I(x ^ 2) + I(x ^ 3). На самом деле он создает многочлены легенды, обладающие прекрасным свойством быть некоррелированным:

options(digits = 2)
x <- runif(100)
var(cbind(x, x ^ 2, x ^ 3))
#       x            
# x 0.074 0.073 0.064
#   0.073 0.077 0.071
#   0.064 0.071 0.067
zapsmall(var(poly(x, 3)))
#      1    2    3
# 1 0.01 0.00 0.00
# 2 0.00 0.01 0.00
# 3 0.00 0.00 0.01
person hadley    schedule 04.09.2010
comment
+1 для указателя ортогональности. Остается ли интерпретация оценок параметров одинаковой в двух приведенных выше случаях. Я знаю, что подобранные значения останутся неизменными в линейной модели, поскольку в обоих случаях они охватывают одно и то же пространство. Но как насчет случая, когда используется нелинейный метод наименьших квадратов? - person user227290; 05.09.2010
comment
Лаплас... Серия Тейлора... о, черт, мне нужно достать свой пыльный экземпляр "Фундаментальных методов математической экономики". - person JD Long; 05.09.2010
comment
Ну, это сокращение для x + I(x ^ 2) + I(x ^ 3), если вы, конечно, добавите аргумент raw=TRUE (poly(x,3,raw=TRUE)... - person Tom Wenseleers; 05.11.2017

Краткий ответ: да.

Немного более длинный ответ: проверить это довольно дешево. Я просто запустил example(nls), чтобы загрузить модель и данные, а затем вставил термин с poly().

Еще более длинный ответ: lm() на самом деле не знает о poly(), формулы решаются до того, как произойдет подгонка. Так что в том смысле, что nls() имеет интерфейс формулы... он должен был принять poly().

Не по теме и не запрашивалось: вы изучали сплайны, а также книгу Харрелла RMS?

person Dirk Eddelbuettel    schedule 04.09.2010
comment
Я протестировал poly() и у меня возникли проблемы с ним. Изучив примеры в примере (nls), я вижу, что у меня возникла проблема с синтаксисом, связанная с моими коэффициентами. Я думал, что он блевал на poly, когда он действительно блевал на мои синтаксические проблемы. Сплайны WRT и RMS, мне очень нравятся сплайны. И я перепутал большую часть RMS. В этой ситуации, однако, я пытаюсь воссоздать горячий беспорядок, который кто-то собрал, используя некоторую регрессионную надстройку для Excel. - person JD Long; 05.09.2010
comment
Ах, так вы снимаете «Миссия невыполнима 3»? ;-) - person Dirk Eddelbuettel; 05.09.2010