線形モデル関数 lm() を使用すると、多項式に次のようなショートカット表記を含めることができます。
m <- lm(y ~ poly(x,3))
これは、ユーザーが x^2 および x^3 変数を作成したり、 のように数式に入力したりする必要がないようにするためのショートカットですI(x^2) + I(x^3)
。非線形関数に匹敵する表記法はありますnls()
か?
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
簡単な答え: はい。
少し長い答え: これをテストするのはかなり安上がりです。example(nls)
モデルとデータをロードするために実行し、 で用語を挿入しましたpoly()
。
さらに長い答え:lm()
については実際にはわかりませんpoly()
。数式は、フィッティングが発生する前に解決されます。つまりnls()
、数式インターフェイスを備えているという意味では、.. を受け入れる必要がありましたpoly()
。
トピック外で求められていない: Harrell の RMS の本と同様に、スプラインについて調べましたか?