Analyser les proportions

13

J'ai un jeu de données contenant plusieurs proportions qui s'additionnent à 1. Je suis intéressé par le changement de ces proportions le long d'un gradient (voir ci-dessous pour des exemples de données).

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()

entrez la description de l'image ici

Informations supplémentaires: il ne doit pas nécessairement être linéaire, je l'ai fait juste pour la facilité de l'exemple. Les dénombrements originaux à partir desquels ces proportions sont calculées sont également disponibles. Le jeu de données réel contient plus de variables totalisant jusqu'à 1 (par exemple B1, B2 et B3, C1 à C4, etc.) - donc un indice pour une solution multivariée serait également utile ... Mais pour l'instant, je m'en tiendrai à l'univarié côté des statistiques.

Question: Comment analyser ce type de données? J'ai lu un peu et peut-être qu'un modèle multinomial ou un glm convient? - Si je lance 3 (ou 2) glms, comment puis-je incorporer la contrainte que les valeurs prédites totalisent 1? Je ne veux pas seulement tracer ce type de données, je veux aussi faire une régression plus profonde comme une analyse. Je veux de préférence utiliser R - comment puis-je faire cela dans R?

EDi
la source
La commande proprcsplinedans Stata pourrait être ce que vous cherchez (je sais que vous voulez utiliser R, mais cela pourrait être un point de départ): proprcspline calcule une spline cubique restreinte lisse des proportions d'observations dans chaque catégorie de yvar donnée xvar, et les représente sous forme de graphique de zone empilée. Facultativement, ces proportions lissées peuvent être ajustées pour un ensemble de variables de contrôle (cvars).
Boscovich
Pourriez-vous nous expliquer ce que signifie «intéressé»? Voulez-vous simplement tracer les proportions par rapport au gradient? Ou avez-vous une analyse plus approfondie en tête? Si oui, quelle est sa nature - qu'espérez-vous précisément apprendre de ces données? De plus, avez-vous les décomptes originaux disponibles (ce qui serait bien) ou seulement les proportions? Pourriez-vous nous en dire un peu plus sur la composition de ces données et la manière dont elles sont collectées?
whuber
1
@whuber: Je veux faire une analyse plus approfondie avec ces données. Mon hypothèse est que les proportions changeront avec le gradient. Les comptes sont également disponibles.
EDi
1
On dirait que vous avez des données de composition. Je ne sais pas grand-chose à ce sujet, mais le travail d'Aitchison est le point de départ. Il y a un package, des compositions sur CRAN.
Aaron a quitté Stack Overflow

Réponses:

13

Dans une dimension, cela ressemble à un travail de régression bêta (avec ou sans dispersion variable). Il s'agit d'un modèle de régression avec variable dépendante bêta-distribuée, naturellement 0-1 contraint. Un package R est betareg et un document décrivant son utilisation est ici .
Pour plus de deux proportions, l'extension habituelle de la distribution bêta conduit à une régression de Dirichlet. Un package R DirichletReg est disponible, décrit par exemple ici .

Il y a quelques raisons de ne pas utiliser les liens logit et la régression logistique multinomiale pour les vraies données de composition, principalement en raison des hypothèses fortes qu'elles impliquent pour la variance. Cependant, si vos données sont toutes des dénombrements normalisés (abondances?), Ces hypothèses peuvent être correctes et la suggestion de Peter serait probablement la voie à suivre.

conjugateprior
la source
Merci pour les liens, je vais les consulter. DirichletReg s'annonce prometteur! Par exemple, la diapositive 3 de votre lien: "Si la" probabilité "de répondre dans une certaine catégorie est répartie entre les choix, une approche Dirichlet est plus informative." . Parce que je ne savais pas comment faire cela avec mlogit, car les choix n'ont pas besoin d'être uniques. Aussi un bon moyen de représentation graphique - n'y ai pas pensé ...
EDi
Pour les graphiques, les fonctions R splineplot et cdplot peuvent être utiles. En effet, si vous vouliez juste les lignes ajustées et que vous n'aviez pas besoin de beaucoup de machinerie de régression, vous pourriez probablement amener cdplot à vous donner les courbes pertinentes (c'est seulement la densité en dessous)
conjugateprior
Désolé, je voulais taper spineplot ci-dessus, évidemment.
conjugateprior
Notez que le package DirichletReg est désormais disponible sur CRAN et qu'une vignette a été publiée.
jbaums
4

Je ne sais pas exactement ce que vous essayez de découvrir, mais qu'en est-il d'une régression logistique multinomiale avec gradient comme variable indépendante?

Dans R, une façon de procéder est la fonction mlogit dans la bibliothèque mlogit. Voir cette vignette

Peter Flom - Réintégrer Monica
la source