Régression bêta des données de proportion, y compris 1 et 0

19

J'essaie de produire un modèle pour lequel j'ai une variable de réponse qui est une proportion entre 0 et 1, cela inclut pas mal de 0 et de 1 mais aussi de nombreuses valeurs entre les deux. Je pense à tenter une régression bêta. Le package que j'ai trouvé pour R (betareg) n'autorise que des valeurs comprises entre 0 et 1 mais sans inclure 0 ou 1 eux-mêmes. J'ai lu ailleurs que théoriquement la distribution bêta devrait être capable de gérer des valeurs de 0 ou 1 mais je ne sais pas comment gérer cela dans RI ont vu certaines personnes ajouter 0,001 aux zéros et prendre 0,001 à ceux, mais je ne sûr que c'est une bonne idée?

Alternativement, je pourrais logit transformer la variable de réponse et utiliser la régression linéaire. Dans ce cas, j'ai le même problème avec les 0 et les 1 qui ne peuvent pas être transformés en journal.

Jonathan Bone
la source
Connaître les chiffres - pas seulement les proportions - est crucial, peu importe ce que vous faites. Mais une fois que vous avez les chiffres, le premier modèle à considérer, même s'il ne s'agit que d'un point de départ, est la régression logistique.
whuber
Eh bien, une bêta se situe entre 0 et 1 ( presque sûrement ). Si vous les observez, vous devez utiliser un modèle qui donne une chance d'observer votre échantillon. Quelques réponses semblent couvrir ce type d'approche; Je commencerais par eux.
Glen_b -Reinstate Monica

Réponses:

18

Vous pouvez utiliser des modèles de régression bêta gonflés zéro et / ou un qui combinent la distribution bêta avec une distribution dégénérée pour attribuer une certaine probabilité à 0 et 1 respectivement. Pour plus de détails, voir les références suivantes:

Ospina, R. et Ferrari, SLP (2010). Distributions bêta gonflées. Documents statistiques, 51 (1), 111-126. Ospina, R. et Ferrari, SLP (2012). Une classe générale de modèles de régression bêta gonflés à zéro ou un. Statistiques computationnelles et analyse des données, 56 (6), 1609-1623.

Ces modèles sont faciles à implémenter avec le package gamlss pour R.

Matze O
la source
Avez-vous un exemple de la façon de les implémenter sur R?
Ouistiti
2
@Ouistiti le zoibpackage le fait facilement.
Mark White
11

La documentation du betaregpackage R mentionne que

si y suppose également les extrêmes 0 et 1, une transformation utile est en pratique (y * (n − 1) + 0,5) / n où n est la taille de l'échantillon.

http://cran.r-project.org/web/packages/betareg/vignettes/betareg.pdf

Ils donnent la référence Smithson M, Verkuilen J (2006). "Un meilleur presseur de citron? Régression à probabilité maximale avec des variables dépendantes distribuées bêta." Psychological Methods, 11 (1), 54–71.

eac2222
la source
1

Ne faites-vous pas une transformation logit pour rendre la variable allant de moins l'infini à plus l'infini? Je ne sais pas si les données ayant 0 et 1 devraient poser problème. Est-ce que cela affiche un message d'erreur? Soit dit en passant, si vous n'avez que des proportions, votre analyse sera toujours fausse. Vous devez utiliser weight=argumentpour glmle nombre de cas.

Si rien ne fonctionne, vous pouvez utiliser un partage médian ou un quartile ou tout autre point de coupure que vous jugez approprié pour diviser le DV en plusieurs catégories, puis exécuter une régression logistique ordinale à la place. Cela peut fonctionner. Essayez ces choses.

Personnellement, je ne pense pas que l'ajout de 0,001 aux zéros et le retrait de 0,001 de ceux-ci soit une trop mauvaise idée, mais cela a quelques problèmes qui seront discutés plus tard. Pensez-vous, pourquoi n'ajoutez-vous pas et ne soustrayez-vous pas 0.000000001 (ou même plus de décimales)? Cela représentera mieux 0 et 1 !! Il peut vous sembler que cela ne fait pas beaucoup de différence. Mais c'est effectivement le cas.

Voyons ce qui suit:

> #odds when 0 is replaced by 0.00000001

> 0.00000001/(1-0.00000001)
[1] 1e-08
> log(0.00000001/(1-0.00000001))
[1] -18.42068

> #odds when 1 is replaced by (1-0.00000001):

> (1-0.00000001)/(1-(1-0.00000001))
[1] 1e+08
> log((1-0.00000001)/(1-(1-0.00000001)))
[1] 18.42068

> #odds when 0 is replaced by 0.001

> 0.001/(1-0.001)
[1] 0.001001001
> log(0.001/(1-0.001))
[1] -6.906755

> #odds when 1 is replaced by (1-0.001):

> (1-0.001)/(1-(1-0.001))
[1] 999
> log((1-0.001)/(1-(1-0.001)))
[1] 6.906755

Donc, vous voyez, vous devez garder les cotes aussi proches que (0/1) et (1/0). Vous vous attendez à la cote du journal allant de moins l'infini à plus l'infini. Donc, pour ajouter ou soustraire, vous devez choisir jusqu'à une décimale vraiment très longue, de sorte que la cote du journal devienne proche de l'infini (ou très grande) !! La mesure que vous jugerez assez grande dépend uniquement de vous.

Blain Waan
la source
1

Consultez ce qui suit, où une transformation ad hoc est mentionnée maartenbuis.nl/presentations/berlin10.pdf sur la diapositive 17. Vous pouvez également modéliser 0 et 1 avec deux régressions logistiques distinctes, puis utiliser la régression bêta pour ceux qui ne sont pas à la frontière.

B_Miner
la source
1
(y(n-1)+0,5)/nn
0

pp

une,bune,b

X1,,Xnnj[ψ(jeXje)-ψ(Xj)]j[ψ(je1-Xje)-ψ(1-Xj)]

Neil G
la source
1
Vous souhaiterez peut-être participer à ce fil Meta. stats.meta.stackexchange.com/questions/5814/…
Sycorax dit de rétablir Monica