簡體   English   中英

為什么ns(0.8)或ns(c(0.8))在外函數調用(arg 1)中返回NA / NaN / Inf?

[英]Why does `ns(0.8)` or `ns(c(0.8))` return `NA/NaN/Inf in foreign function call (arg 1)`?

為什么ns(0.8)ns(c(0.8)) NA/NaN/Inf in foreign function call (arg 1)返回NA/NaN/Inf in foreign function call (arg 1)

ns(c(0.8, 1.0))可以正常工作,但是我想知道為什么只給ns 1值會導致NA/NaN/Inf in foreign function call (arg 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"

編輯 :在用戶評論后,我意識到我的回答是無關緊要的。 但是,由於我向R-Core團隊發送了有關文檔中(非常真實的)差異的電子郵件,並在電子郵件中引用了此帖子,因此我暫時不刪除它。


ns()函數的文檔中有第二個參數df的差異:

自由程度。 一個人可以提供df而不是結。 ns()然后選擇df-1-在適當選擇的x分位數處截取結點(將忽略缺失值)。 默認值df = 1,不打結。

實際的默認值不是1,而是NULL ,正如我們在“ 用法”部分中所看到的:

ns(x,df = NULL,結= NULL,截距= FALSE,邊界.knots = range(x))

我同意錯誤消息不是用戶友好的..因此,至少對於此更改似乎是合理的。 我們必須查看ns(<1 number>),說ns(pi)完全有意義……我寧願在R-devel郵件列表( https://stat.ethz。 ch / mailman / listinfo / r-devel ),而不是此處。

我也同意@Dominic Comtois的觀點,應該修改幫助頁面,因為很長一段時間以來默認值都不為1

最后但並非最不重要的一點是,請注意ns()bs()應當以這種方式設計為一對。 因為它們的主要用途是在模型公式中生成model.matrix() ,所以我傾向於同意,如果我們能夠為ns(pi)情況得出一個合理的無錯誤結果,那是很好的。 謝謝你們提出這個問題!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM