la funzione di R predict
può prendere un parametro newdata
e il documento si legge:alimentazione newdata a R prevedere la funzione
NewData Un frame di dati facoltativi in cui cercare le variabili con cui prevedere. Se omessi, vengono utilizzati i valori adattati.
Ma ho scoperto che non è completamente vero a seconda di come il modello è in forma. Per esempio, a seguito di codice funziona come previsto:
x <- rnorm(200, sd=10)
y <- x + rnorm(200, sd=1)
data <- data.frame(x, y)
train = sample(1:length(x), size=length(x)/2, replace=F)
dataTrain <- data[train,]
dataTest <- data[-train,]
m <- lm(y ~ x, data=dataTrain)
head(predict(m,type="response"))
head(predict(m,newdata=dataTest,type="response"))
Ma se il modello è in forma come ad esempio:
m2 <- lm(dataTrain$y ~ dataTrain$x)
head(predict(m2,type="response"))
head(predict(m2,newdata=dataTest,type="response"))
Gli ultimi due linea produrrà esattamente lo stesso risultato. La funzione predict
funziona in un modo che ignora il parametro newdata
, vale a dire che non è in grado di calcolare la previsione sui nuovi dati.
Il colpevole, ovviamente, è lm(y ~ x, data=dataTrain)
versus lm(dataTrain$y ~ dataTrain$x)
. Ma non ho trovato nessun documento che menzionasse la differenza tra questi due. È un problema noto?
Sto usando R 2.15.2.
Ciao sto avendo lo stesso problema, hai per caso qualche modo di risolvere questo? Grazie in anticipo, – jbest