Analizar proporciones


13

Tengo un conjunto de datos que contiene múltiples proporciones que suman 1. Estoy interesado en el cambio de estas proporciones a lo largo de un gradiente (ver a continuación los datos de ejemplo).

gradient <- 1:99
A1 <- gradient * 0.005
A2 <- gradient * 0.004
A3 <- 1 - (A1 + A2)

df <- data.frame(gradient = gradient,
                 A1 = A1,
                 A2 = A2,
                 A3 = A3)

require(ggplot2)
require(reshape2)
dfm <- melt(df, id = "gradient")
ggplot(dfm, aes(x = gradient, y = value, fill = variable)) +
  geom_area()

ingrese la descripción de la imagen aquí

Información adicional: No es necesario que sea necesariamente lineal, lo hice solo para facilitar el ejemplo. Los recuentos originales a partir de los cuales se calculan estas proporciones también están disponibles. El conjunto de datos real contiene más variables que suman 1 (por ejemplo, B1, B2 y B3, C1 a C4, etc.), por lo que también sería útil una sugerencia para una solución multivariante ... Pero por ahora me quedaré con el univariante lado de las estadísticas.

Pregunta: ¿Cómo se puede analizar este tipo de datos? ¿He leído un poco, y quizás un modelo multinomial o un glm es adecuado? - Si ejecuto 3 (o 2) glms, ¿cómo puedo incorporar la restricción de que los valores pronosticados suman 1? No solo quiero trazar ese tipo de datos, también quiero hacer una regresión más profunda como el análisis. Preferiblemente quiero usar R, ¿cómo puedo hacer esto en R?


El comando proprcsplineen Stata podría ser lo que estás buscando (sé que quieres usar R, pero tal vez esto podría ser un punto de partida): proprcspline calcula una spline cúbica restringida de proporciones de observaciones en cada categoría de yvar dado xvar, y los grafica como un diagrama de área apilada. Opcionalmente, estas proporciones suavizadas se pueden ajustar para un conjunto de variables de control (cvars).
boscovich

¿Podría explicar qué significa "interesado en"? ¿Simplemente quieres trazar las proporciones contra el gradiente? ¿O tienes un análisis más profundo en mente? Si es así, ¿cuál es su naturaleza? ¿Qué es exactamente lo que espera aprender de estos datos? Además, ¿tiene los recuentos originales disponibles (lo que sería bueno) o solo las proporciones? ¿Podría decirnos un poco más sobre en qué consisten estos datos y cómo se recopilan?
whuber

1
@whuber: Quiero hacer un análisis más profundo con estos datos. Mi hipótesis es que las proporciones cambiarán con el gradiente. Los recuentos también están disponibles.
EDi

1
Parece que tienes datos de composición. No sé mucho al respecto, pero el trabajo de Aitchison es el lugar para comenzar. Hay un paquete, composiciones, en CRAN.
Aaron dejó Stack Overflow el

Respuestas:


13

En una dimensión, esto suena como un trabajo para la regresión beta (con o sin dispersión variable). Este es un modelo de regresión con una variable dependiente distribuida en beta, naturalmente con restricción 0-1. Un paquete R es betareg y un documento que describe su uso está aquí .
Para más de dos proporciones, la extensión habitual de la distribución Beta conduce a la regresión de Dirichlet. Está disponible un paquete R DirichletReg , descrito, por ejemplo, aquí .

Hay algunas razones para no usar enlaces logit y regresión logística multinomial para datos de composición verdaderos, principalmente por qué supuestos fuertes implican para la varianza. Sin embargo, si sus datos son todos recuentos realmente normalizados (¿abundancias?), Esas suposiciones pueden ser correctas y la sugerencia de Peter probablemente sería el camino a seguir.


Gracias por los enlaces, los echaré un vistazo. ¡DirichletReg parece prometedor! Por ejemplo, la Diapositiva 3 de su enlace: "Si la 'probabilidad' de responder en una determinada categoría se extiende a través de las opciones, un enfoque Dirichlet es más informativo". . Porque no sabía cómo hacer esto con mlogit, porque las opciones no tienen por qué ser únicas. También es una buena forma de representación gráfica: no he pensado en eso ...
EDi

Para los gráficos, puede encontrar útiles las funciones R splineplot y cdplot . De hecho, si solo deseaba las líneas ajustadas y no necesitaba una gran cantidad de maquinaria de regresión, entonces probablemente podría convencer a cdplot para que le diera las curvas relevantes (es solo densidad debajo)
conjugateprior

Lo siento, tenía la intención de escribir spineplot arriba, obviamente.
conjugateprior

Tenga en cuenta que el paquete DirichletReg ahora está disponible en CRAN , y se ha publicado una viñeta .
jbaums

4

No estoy seguro exactamente de lo que está tratando de descubrir, pero ¿qué pasa con una regresión logística multinomial con gradiente como la variable independiente?

En R, una forma de hacer esto es la función mlogit en la biblioteca mlogit. Ver esta viñeta

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.