2017-07-15 18 views
1

なぜですかns(0.8)またはns(c(0.8))返信NA/NaN/Inf in foreign function call (arg 1)`ns(0.8)`または `ns(c(0.8))`は、外部関数呼び出し(NA 1)でNA/NaN/Infを返します。

ns(c(0.8, 1.0))がうまく機能しますが、nsにちょうど1の値を指定すると、NA/NaN/Inf in foreign function call (arg 1)が返されます。

例:

> library(splines) 
> ns(0.8) 
Error in qr.default(t(const)) : 
    NA/NaN/Inf in foreign function call (arg 1) 


> ns(c(0.8, 1.0)) 
      1 
[1,] 0.0000000 
[2,] 0.8017837 
attr(,"degree") 
[1] 3 
attr(,"knots") 
numeric(0) 
attr(,"Boundary.knots") 
[1] 0.8 1.0 
attr(,"intercept") 
[1] FALSE 
attr(,"class") 
[1] "ns"  "basis" "matrix" 
+0

どのようにスプラインを1つのポイントにフィッティングするといいのか説明できますか? 'ns()'はノットの配置(境界節点を含む)を決定するために使用できる限り、最初の引数に依存します。 1つのデータポイントだけでは、賢明な選択を行うのに十分な情報がなく、メソッドが失敗するのは理にかなっています。 – stephematician

+0

@stephematicianはより良いエラーメッセージのように聞こえます –

答えて

2

EDIT:ユーザーのコメントの後、私は私の答えは無関係に気づきました。しかし、私はR-Coreチームに電子メールでドキュメントの(実際の)矛盾について電子メールを送り、電子メールでこの記事を参照して以来、私は今は削除していません。第二引数のns()機能のドキュメントの不一致があり


df:自由

度。結び目よりもむしろdfを供給することができます。 ns()の場合、 は、適切に選択されたx の分位数でdf - 1 - インターセプトノットを選択します(欠損値は無視されます)。デフォルトのdf = 1は、 にノットがない場合に対応します。

我々は使用セクションで見ることができるように、実際のデフォルト値は、1ではないが、NULL

NS(x、DF = NULL、ノット= NULL、切片= FALSE、 Boundary.knots = 範囲(x))を

+0

Btw私はちょうどこれについてRコアデベロッパーチームに電子メールを送りました。 –

+0

@ user20650ちょうど私の答えにそれを加えました。 –

+1

ああ、そうですね...うん、私の答えはむしろ無関係です! :D –

1

私はそう変更は、少なくともそのために合理的なようです。..エラーメッセージがユーザーフレンドリーではありません同意するものとします。 ns(< 1番号>)、例えばns(pi)が意味を成すことができるかどうか見てみる必要があります...私はむしろR-develメーリングリスト(https://stat.ethz.ch/mailman/listinfo/r-devel)をここで議論したいと思います。

また、デフォルトでは1になっていないため、@Dominic Comtoisはヘルプページを修正する必要があることに同意します。

最後に、ns()bs()は、そのように設計されているため、ペアとみなす必要があります。彼らの主な使用はmodel.matrix()を生成するためのモデル式で使用されていたので、ns(pi)のケースについて合理的な誤差のない結果を出すことができれば、になります。問題を提起いただきありがとうございます。

+0

これが起こると、私は興味をそそられました...そして...タダ!私はRの 'ns()'を改良しています。実際に '' ns(pi) ''を使用するように、今は '' lm(y〜x1 + ns(x2)+ ...、data = myD) '' myD'が1つの観測しか持たない(それほど頻繁ではない;-)場合でさえ、 - *)はR-develにありますが、私はそれを 'R 3.4.1 patched'にも移植しますので、Rの次のバージョンになります。 –

関連する問題