2017-07-22 4 views
1
library(splines) 
set.seed(3) 
x <- rnorm(100) 
plot(x) 
lines(ns(x)) 

Cela fonctionne très bien, mais si je tente d'ajouter des nœuds spécifiques, à savoirErreur lors du traçage spline cubique naturelle avec des noeuds

lines(ns(x, knots = c(1, 2, 3, 50))) 

L'exécution du code ci-dessus me donne l'erreur suivante:

Error in qr.default(t(const)) : 
    NA/NaN/Inf in foreign function call (arg 1) 

Editer:

Selon la suggestion de Peter, un noeud à 50 est beaucoup trop grand, donc je modifie le code à:

> lines(ns(x, knots = sort(x, decreasing = TRUE)[1:10])) 
Error in qr.default(t(const)) : 
     NA/NaN/Inf in foreign function call (arg 1) 

Maintenant, je veux placer 10 noeuds à 10 valeurs les plus élevées de x. Mais je reçois toujours une erreur? Pourquoi donc?

Répondre

1

50 est trop gros. x est un normal avec une moyenne de 0 et sd 1. Ainsi, par exemple,

lines(ns(x, knots = c(1, 1.5))) 

fonctionne bien. (Un autre exemple d'un message d'erreur R inutile).

+0

Merci. J'ai rencontré la même erreur quand j'ai essayé d'utiliser 'lines (ns (x, noeuds = sort (x, décroissant = TRUE) [1:10])), c'est-à-dire placer des noeuds aux 10 valeurs les plus élevées. Pourquoi est-ce? – Adrian

+0

Vous ne pouvez pas avoir un noeud sur le noeud final. –