[R-es] Manejo de valores perdidos usando predict con CHAID

Oscar Benitez oscar.benitez1962 en gmail.com
Mar Jul 14 22:00:21 CEST 2015


Resuelto!
Encontré el truco para que funcione,Tenía que cambiar el comando:

prob.P.T1 <- predict(chaid2.T1, pruebaT1, type="prob")

por

prob.P.T1 <- predict(chaid2.T1, newdata=pruebaT1, type="prob")

y entonces funciona:

pruebaT1$prob<-prob.P.T1[,2]

Saludos


El 14 de julio de 2015, 16:22, Oscar Benitez <oscar.benitez1962 en gmail.com>
escribió:

> Hola
> Estoy tratando de aplicar probabilidades mediante predict a una base de
> prueba y no consigo manejar los valores perdidos.
>
> No tengo problemas en la generación de las probabilidades, el comando es:
>
> #genera las probabilidades en prueba
> prob.P.T1 <- predict(chaid2.T1, pruebaT1, type="prob")
>
> El data frame 'pruebaT1' tiene 33527 registros
> La matriz 'prob.P.T1' tiene 66724 elementos, o sea 33362 registros. Esto
> me dice que hay algunos casos para los cuales no fué capaz de establecer la
> probabilidad. Esperaba esa situación.
>
> El problema es cuando trato de unir las probabilidades desde la matriz al
> data frame. El comando:
>
> pruebaT1$prob.T1<-prob.P.T1[,2]
>
> Me da el siguiente error
>
> Error in `$<-.data.frame`(`*tmp*`, "prob.T1", value = c(0.42910447761194,
>  :
>   replacement has 33362 rows, data has 33527
>
>
> El comando
>
> prueba.T1<-merge(pruebaT1, prob.P.T1[,2],by="row.names",
>                     all.x = TRUE)
>
> No da error, pero no estoy seguro que la unión por el número de fila sea
> correcto. Estuve inspeccionando la matriz resultante del predict y no veo
> saltos en la numeración de las filas....
>
> Para poner un ejemplo,
>
> Digamos que en mi dataframe 'pruebaT1´tengo lo siguiente
>
>   RowN Var1 Var2  1 a 1  2 b 2  3 a 3  4 b 4  5 a 1  6 b
>  7 a 3  8 b 4  9 a 1  10 b 2
>
> Cuando aplico la función predict a estos datos obtengo solamente 9 filas,
> lo cual es correcto. Pero cuando las veo con el comando:
>
> view(prob.T1)
>
> las filas están numeradas de 1 a 9...
>
> Eso me lleva a preguntarme si el comando merge es el mejor para estos
> casos....
>
> Para que quede claro, lo que quiero que ocurra es lo siguiente:
>
>   RowN Var1 Var2 prob.T1  1 a 1 0.03  2 b 2 0.05  3 a 3 0.06  4 b 4 0.03
> 5 a 1 0.05  6 b
> NA  7 a 3 0.03  8 b 4 0.03  9 a 1 0.05  10 b 2 0.06
>
> Y no encuentro la manera de hacerlo.
>
> Cualquier sugerencia es bienvenida.
> Gracias de antemano,
> Oscar
>
> --
> Oscar Benitez
>



-- 
Oscar Benitez

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es