[R-es] Weighted Likelihood

Víctor Nalda Castellet victor.nalda.castellet en gmail.com
Vie Abr 17 10:17:06 CEST 2015


Hola Olivier,

Muchísimas gracias por la ayuda, todo entendido. Con tan pocos datos no
puedo pretender obtener lo que me imagino en mi cabeza.

Me has ayudado mucho a entender como funcionaba, todo solucionado!


Un abrazo, y gracias de nuevo.

El 17 de abril de 2015, 9:58, Olivier Nuñez <onunez en unex.es> escribió:

> Pero, si el modelo lineal lo cubre casi todo!
> Tu modelo es lineal pero generalizado y estás especificando que tus datos
> siguen una Gamma (family=Gamma).
> Lo cual implica por defecto que en promedio la relación entre la variable
> dependiente ("datos") y la independiente ("num") es inversa.... no es
> precisamente lineal.
> Si quieres más flexibilidad puedes utilizar splines en la regresión; un
> ejemplo:
> require(splines)
> modelo <- svyglm(formula = datos ~ ns(num,2), design = svy, family = Gamma)
>
> svyplot(formula = datos ~ num, design = svy)
> lines(svy$variables$num, fitted(modelo), col="red")
>
>
> Pero, con 10 puntos sólo ganaras inestabilidad en la predicción.
>
>
> ------------------------------
> *De: *"Víctor Nalda Castellet" <victor.nalda.castellet en gmail.com>
> *Para: *"Olivier Nuñez" <onunez en unex.es>
> *Enviados: *Jueves, 16 de Abril 2015 18:55:17
>
> *Asunto: *Re: [R-es] Weighted Likelihood
>
> Hola Olivier,
>
> No recordaba la función "fitted", muchas gracias. Lo que ocurre es que
> claro al utilizar "glm", es un modelo lineal. Me gustaría saber si se puede
> ajustar mediante otro tipo de funciones como una Gamma o una normal, ¿sabes
> cómo?
>
> install.packages("survey")
> library("survey")
>
> num <- c(1:10)
> datos <- c(1.1146265, 0.9039153, 0.8374396, 0.7089485, 1.2488793,
> 2.5789016, 2.0976523, 0.9748834, 0.2738321, 1.1842141)
> pesos <- c(0.7,0.7,1,1,0.02,0.01,1,0.01,0.05,0.2)
> df <- cbind.data.frame(num, datos, pesos)
>
> svy <- svydesign(datos, weights = pesos, data = df)
>
> modelo <- svyglm(formula = datos ~ num, design = svy, family = Gamma)
> # family: binomial, gaussian, Gamma, inverse.gaussian, poisson, quasi,
> quasibinomial, quasipoisson
>
> svyplot(formula = datos ~ num, design = svy)
> lines(svy$variables$num, fitted(modelo), col="red")
>
>
> De verdad, muchas gracias por ayudar.
>
> El 16 de abril de 2015, 18:27, Olivier Nuñez <onunez en unex.es> escribió:
>
>> Todo parece correcto (siempre que tus pesos son efectivamente "weight
>> sampling").
>> El ajuste, lo puedes obtener de manera estándar con fitted(modelo) y
>> vizualizarlo por ejemplo con
>>
>> svyplot(formula = datos ~ num, design = svy)
>> lines(svy$variables$num,fitted(modelo),col="blue")
>>
>>
>>
>> ------------------------------
>> *De: *"Víctor Nalda Castellet" <victor.nalda.castellet en gmail.com>
>> *Para: *"Olivier Nuñez" <onunez en unex.es>
>> *Enviados: *Jueves, 16 de Abril 2015 17:25:56
>>
>> *Asunto: *Re: [R-es] Weighted Likelihood
>>
>> Hola Olivier,
>>
>> Muchas gracias por la ayuda, te he entendido perfectamente.
>>
>> Tengo un vector de datos y uno de pesos, por ejemplo:
>>
>> num <- c(1:10)
>> datos <- c(1.1146265, 0.9039153, 0.8374396, 0.7089485, 1.2488793,
>> 2.5789016, 2.0976523, 0.9748834, 0.2738321, 1.1842141)
>> pesos <- c(0.7,0.7,1,1,0.02,0.01,0.02,0.01,0.05,0.2)
>> df <- cbind.data.frame(num, datos, pesos)
>>
>> Ahora creo el diseño como:
>>
>> svy <- svydesign(datos, weights = pesos, data = df)
>>
>> Y si hago su gráfica puedo ver que unos puntos tienen mayor peso que
>> otros, tal y como he especificado en los "pesos":
>>
>> svyplot(formula = datos ~ num, design = svy)
>>
>> Ahora quiero ajustar el modelo mediante una función Gamma, para ello:
>>
>> modelo <- svyglm(formula = datos ~ num, design = svy, family = Gamma)
>> # family: binomial, gaussian, Gamma, inverse.gaussian, poisson, quasi,
>> quasibinomial, quasipoisson
>> summary(modelo)
>> plot(modelo)
>>
>> ¿Esto es correcto? ¿Cómo puedo ver el ajuste?
>>
>>
>> Muchas gracias, un saludo.
>>
>> El 16 de abril de 2015, 11:40, Olivier Nuñez <onunez en unex.es> escribió:
>>
>>> No das muchos detalles sobre porque quieres ponderar los datos, pero
>>> intuyo que es por el diseño.
>>> Si es así, la función svydesign del paquete te permite especificar bien
>>> la probabilidad de selección del dato (probs) en la muestra o de manera
>>> equivalente, o el "sampling weight" que puedes interpretar como la
>>> representatividad del dato en la población. Una vez especificado el diseño
>>> mediante esta función, puedes llevar cualquier análisis estandár de tus
>>> datos. Un saludo. Olivier
>>>
>>> ------------------------------
>>> *De: *"Víctor Nalda Castellet" <victor.nalda.castellet en gmail.com>
>>> *Para: *"Olivier Nuñez" <onunez en unex.es>
>>> *CC: *"r-help-es" <r-help-es en r-project.org>
>>> *Enviados: *Jueves, 16 de Abril 2015 11:25:10
>>> *Asunto: *Re: [R-es] Weighted Likelihood
>>>
>>>
>>> Hola,
>>>
>>> He buscado por el pdf de la documentación qué función es la que me puede
>>> servir pero no encuentro ninguna.
>>> ¿Tenías alguna función especifica de ese paquete pensada?
>>>
>>>
>>> Un saludo, y muchas gracias por la ayuda.
>>>
>>> El 16 de abril de 2015, 10:45, Víctor Nalda Castellet <
>>> victor.nalda.castellet en gmail.com> escribió:
>>>
>>>> ¡Muchas gracias Olivier!
>>>>
>>>>
>>>> Un saludo.
>>>>
>>>> El 16 de abril de 2015, 10:44, Olivier Nuñez <onunez en unex.es> escribió:
>>>>
>>>>> Mira el paquete survey.
>>>>> Un saludo. Olivier
>>>>>
>>>>> ----- Mensaje original -----
>>>>> De: "Víctor Nalda Castellet" <victor.nalda.castellet en gmail.com>
>>>>> Para: "r-help-es" <r-help-es en r-project.org>
>>>>> Enviados: Miércoles, 15 de Abril 2015 14:21:33
>>>>> Asunto: [R-es] Weighted Likelihood
>>>>>
>>>>> Buenas tardes,
>>>>>
>>>>> Estoy intentando ajustar distribuciones utilizando un vector de
>>>>> ponderación
>>>>> en los datos (Weighted Likelihood). ¿Existen paquetes en R que
>>>>> resuelven
>>>>> esto? He mirado ya el paquete "wle" pero no me permite introducir los
>>>>> pesos
>>>>> mediante los cuales ponderar los datos.
>>>>>
>>>>> En un primer momento, se me ha ocurrido realizar lo siguiente:  repetir
>>>>> cada elemento del vector datos tantas veces como indique el vector
>>>>> pesos
>>>>> “modificado” (multiplicado por una potencia de 10, para que sean todos
>>>>> números enteros). Y con este vector de datos repetidos realizar el
>>>>> ajuste.
>>>>>
>>>>> Pero me gustaría conocer si existen otras formas "más elegantes" de
>>>>> hacerlo.
>>>>>
>>>>>
>>>>> Un saludo, y muchas gracias por adelantado.
>>>>>
>>>>> --
>>>>> Víctor Nalda Castellet
>>>>>
>>>>>         [[alternative HTML version deleted]]
>>>>>
>>>>> _______________________________________________
>>>>> R-help-es mailing list
>>>>> R-help-es en r-project.org
>>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Víctor Nalda Castellet
>>>>
>>>
>>>
>>>
>>> --
>>> Víctor Nalda Castellet
>>>
>>>
>>
>>
>> --
>> Víctor Nalda Castellet
>>
>>
>
>
> --
> Víctor Nalda Castellet
>
>


-- 
Víctor Nalda Castellet

	[[alternative HTML version deleted]]



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