Processing math: 100%

8 votos

El argumento de los pesos en lm y lme es muy diferente en R, ¿lo estoy usando correctamente?

Así, me parece que la función de pesos en lm da más peso a las observaciones cuanto mayor es el valor de "peso" de la observación asociada, mientras que la función lme en lme hace precisamente lo contrario. Esto se puede comprobar con una simple simulación.

#make 3 vectors- c is used as an uninformative random effect for the lme model
a<-c(1:10)
b<-c(2,4,6,8,10,100,14,16,18,20)
c<-c(1,1,1,1,1,1,1,1,1,1)

Si ahora se ejecuta un modelo en el que se ponderan las observaciones en base a la inversa de la variable dependiente en lm, sólo se puede generar el mismo resultado exacto en nlme si se pondera sólo por la variable dependiente, sin tomar la inversa.

summary(lm(b~a,weights=1/b))
summary(lme(b~a,random=~1|c,weights=~b))

Se puede dar la vuelta a esto y ver que lo contrario es cierto - especificar pesos=b en lm requiere pesos=1/b para obtener un resultado lme que coincida.

Por lo tanto, entiendo esto mucho, sólo quiero la validación en una cosa y hacer una pregunta sobre otro.

  1. Si quiero ponderar mis datos basándome en la inversa de la variable dependiente, ¿está bien codificar weights=~(dependent variable) dentro de lme?
  2. ¿Por qué lme está escrito para manejar los pesos de manera completamente diferente a lm? ¿Cuál es el propósito de esto, además de generar confusión?

Se agradece cualquier idea al respecto.

12voto

David J. Sokol Puntos 1730

Q1

En lme la notación weights = ~ b resultaría en la varFixed función de varianza que se utiliza con el único argumento b . Esta función añadiría al modelo una función de varianza s2(v) que tiene la forma s2(v)=|v| , donde v toma los valores del argumento vectorial b .

Por lo tanto, debe utilizar weights = ~ I(1/b) en lme() para tener la desviación de εi=1/bi .

En lm lo que pasa weights parece ser todo lo contrario; weights es A la inversa proporcional a la varianza.

No estoy 100% seguro de lo que quiere decir con ponderar mis datos pero si te refieres a proporcionar la varianza heterogénea de las observaciones, entonces creo que quieres weights = ~ I(1/b) .

Q2

Mi intuición (habría que preguntar a los respectivos autores de las dos funciones) es que esto se debe a que lm() y lme() fueron escritos por personas muy diferentes para hacer cosas muy diferentes. lm() necesitaba (se deseaba) ser compatible con S y varios libros, nlme no lo hacía, y pretendía ser más flexible, permitiendo modelar la heterogeneidad de forma más flexible que lm permite mediante el uso de la varianza funciones a través de la varFunc infraestructura.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X