[R-es] Predecir valor nuevo - sm.regressión

Scott Kostyshak skostysh en princeton.edu
Mie Mayo 28 00:10:51 CEST 2014


2014-05-27 17:52 GMT-04:00 calvinahobbes Lina <calvinahobbes en gmail.com>:
> Hola,
>
> Tenéis razón, seguiré vuestras sugerencias.
>
> De todas formas os comento lo que busco y adjunto scrip
>
> Estoy intentando realizar una NP bivariante, con un ejemplo de R y poder
> hacer una manta(malla) de la variable a estimar a partir de para nuevos
> valores de las covariables.
>
> En mi caso, La mejor estimación se da con la función sm.regressión...
> pero no he podido encontrar cómo predecir un nuevo valor para esta función
> (sm.regression) que es en realidad lo que busco
>
> He realizado varios modelos y al ver que la mejor estimación se daba con sm,
> queria poder estimar un nuevo valor.
> Los modelos udados fueron:
>
> 1. locfit(...) --> predict ok
> 2. sm.regression(...) --> la mejor estimación --> predecir???
> 3. sBF(...
> 4. gam(z ~ lo(x, span=1, degree=2) + lo(y, span=1, degree=2),  ...)
> 5. gam(y ~ s(x) + s(x,df=4,spar=1), ...) --> predict ok
>
> Dado lo que me habia dicho un profesor, se supone que cada paquete que
> utilizo tiene unas funciones “predict” específicas del paquete y con unos
> argumentos específicos, los cuales debo analizar a partir de la “ayuda” del
> paquete, ya que son específicos de cada paquete. Allí se supone que dirá
> cómo tienen que venir los datos, que seguramente será en formato “data
> frame”, será la ayuda la que me ha de indicar el tipo de dato que tengo que
> utilizar...cosa que no terminaba de encontrar por más que buscaba en la
> ayuda...Ahora entiendo porqué...

!Gracias por la información, Ligia! Por favor, responde a la lista
para que todos podemos aprender y ayudar.

Ahora veo un poco más qué tipo de información te serviría. Bueno tu
profe tiene razón que normalmente la función predict debería
funcionar, pero en este caso no existe. En R cada objeto tiene una
clase. Por ejemplo si haces

y <- rnorm(100)
x <- rnorm(100)
abc <- lm(y ~ x)
class(abc)
[1] "lm"
predict(abc)
...

funciona bien. ¿Por qué? Porque el objeto abc tiene una clase "lm" y
existe la función predict.lm (puedes ver la información con
?predict.lm). Si intentas la misma cosa con sm, no te va a dar porque
el resultado de sm.regression es un objeto de clase "list" y no existe
predict.list (intenta con ?predict.list o exists(predict.list) o ve el
resultado de "methods(predict)" y nota que no hay predict.list). Tiene
sentido porque "list" es una clase muy general.

Pero puedes hacer lo que describí antes. Puedes construir la
predicción tú mismo.

Saludos,

Scott


--
Scott Kostyshak
Economics PhD Candidate
Princeton University

>
>
>
> El 27 de mayo de 2014, 22:15, Scott Kostyshak <skostysh en princeton.edu>
> escribió:
>
>> 2014-05-27 13:48 GMT-04:00 calvinahobbes Lina <calvinahobbes en gmail.com>:
>> > Cómo puedo predecir un nuevo valor con el paquete sm, en particular
>> > sm.regression.
>> > Creo que la función predict() no funciona con sm,  y no puedo encontrar
>> > otra opción.
>> > Alguien me puede ayudar?
>> >
>> > Gracias!
>> > --
>> > Un saludo,
>> > Ligia.
>>
>> Hola Ligia,
>>
>> La próxima vez, por favor danos un ejemplo de lo que quieres hacer. Si
>> no, tenemos que adivinar. Por ejemplo ¿es necesario que uses l paquete
>> sm o cualquier paquete que pueda hacer una regression nonparametrica
>> bastaría?
>> ¿Qué tipo de predicción quieres hacer? ¿El valor está dentro del rango
>> de tu variable x or fuera? ¿Necesitas un intervalo o solo el valor de
>> la predicción?
>>
>> Tomemos lo siguiente como ejemplo:
>> library(sm)
>> abc <- sm.regression(rnorm(100), rnorm(100), display = "none")
>> class(abc)
>> [1] "list"
>>
>> De una vez sabemos que predict no va a funcionar porque no nos dio un
>> objeto de clase sm.
>> Pero lo puede hacer usted usando los vectores abc$eval.points y
>> abc$estimate con la función approx (o si quieres crear una función
>> predict, lo puedes hacer con approxfun).
>>
>> Un saludo,
>>
>> Scott
>>
>>
>> --
>> Scott Kostyshak
>> Economics PhD Candidate
>> Princeton University
>
>
>
>
> --
> Un saludo,
> Ligia.



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