Ho una funzione del kernel in questo modo:Come estrapolare oltre i punti x passati a `ksmooth`?
x <- 1:100
y <- rnorm(100, mean=(x/2000)^2)
plot(x,y)
kernel <- ksmooth(x,y, kernel="normal", bandwidth=10)
print(kernel$y)
Se provo a prevedere in un punto al di fuori della gamma di valori x, che mi darà NaN
, poiché tenta di estrapolare al di là dei dati:
x <- 1:100
y <- rnorm(100, mean=(x/2000)^2)
plot(x,y)
kernel <- ksmooth(x,y, kernel="normal", bandwidth=10, x.points=c(130))
print(kernel$y)
> print(kernel$y)
[1] NA
Anche quando cambio range.x
che non si muove:
x <- 1:100
y <- rnorm(100, mean=(x/2000)^2)
plot(x,y)
kernel <- ksmooth(x,y, kernel="normal", bandwidth=10, range.x=c(1,200) , x.points=c(130))
print(kernel$y)
> print(kernel$y)
[1] NA
Come faccio ad avere il 012.315.941.041.443 La funzioneestrapola oltre i dati? So che questa è una cattiva idea in teoria, ma in pratica questo problema si presenta sempre.
Suppongo che una domanda secondaria sia: * Cosa fa 'range.x'? * La documentazione sembra indicare che è" la gamma di punti da coprire nell'output. " Ma non sembra avere un effetto sull'output qui? – Hunle
Hai preso in considerazione l'utilizzo di bkde2D {KernSmooth}. Di default questo estrapola 1,5 volte la larghezza di banda in ciascuna direzione. Estrapola ulteriormente a tuo rischio e pericolo, e sii sicuro di capire cosa stai facendo ed i suoi limiti. Se hai davvero bisogno di estrapolare, forse dovresti considerare di adattare i dati a un modello che ha qualche relazione con la realtà e costituisce una base più ragionevole per l'estrapolazione. – dww
Farò una prova. Il problema è che è davvero difficile eseguire una sorta di convalida incrociata di k-fold quando non c'è estrapolazione, perché ogni volta che divido la kth fold in treno e test, alcuni degli esempi di test sono inevitabilmente al di fuori della gamma di gli esempi di formazione. Sono l'unico frustrato da questo? – Hunle