ns()
原則として使えない理由がわかりませんglm()
。ns()
その理由を理解するには、数式で何が行われているかを調べてください。から?ns
> model.frame(weight ~ ns(height, df = 5), data = women)
weight ns(height, df = 5).1 ns(height, df = 5).2 ns(height, df = 5).3 ns(height, df = 5).4 ns(height, df = 5).5
1 115 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
2 117 7.592323e-03 0.000000e+00 -8.670223e-02 2.601067e-01 -1.734045e-01
3 120 6.073858e-02 0.000000e+00 -1.503044e-01 4.509132e-01 -3.006088e-01
4 123 2.047498e-01 6.073858e-05 -1.677834e-01 5.033503e-01 -3.355669e-01
5 126 4.334305e-01 1.311953e-02 -1.324404e-01 3.973211e-01 -2.648807e-01
6 129 6.256681e-01 8.084305e-02 -7.399720e-02 2.219916e-01 -1.479944e-01
7 132 6.477162e-01 2.468416e-01 -2.616007e-02 7.993794e-02 -5.329196e-02
8 135 4.791667e-01 4.791667e-01 1.406302e-02 2.031093e-02 -1.354062e-02
9 139 2.468416e-01 6.477162e-01 9.733619e-02 2.286023e-02 -1.524015e-02
10 142 8.084305e-02 6.256681e-01 2.707683e-01 6.324188e-02 -4.052131e-02
11 146 1.311953e-02 4.334305e-01 4.805984e-01 1.252603e-01 -5.240872e-02
12 150 6.073858e-05 2.047498e-01 5.954160e-01 1.989926e-01 7.809246e-04
13 154 0.000000e+00 6.073858e-02 5.009718e-01 2.755102e-01 1.627794e-01
14 159 0.000000e+00 7.592323e-03 2.246113e-01 3.520408e-01 4.157556e-01
15 164 0.000000e+00 0.000000e+00 -1.428571e-01 4.285714e-01 7.142857e-01
height
これは、変数の自然なスプラインに B スプラインの基底を提供することを示しています。ここでは特別なことは何もありません。
したがって、date
変数が数値ではないか、導入せずに強制的に数値にすることでRが機能するものではないのではないかと思いますNA
-警告メッセージを参照してください。ただし、再現可能な例とデータに関する情報がなければ、それを伝えることは不可能です!
さらに、推奨パッケージとしてRとともに配布されているパッケージmgcvgam()
の関数を確認することをお勧めします。これは、説明した方法でセミパラメトリックモデルに適合するように設計されており、パラメトリック用語とスムーズ/スプラインを含めることができますその他の用語。パッケージはかなり包括的で、多数のタイプのスプラインに適合します。マニュアルですのでご覧ください。