Le véritable objectif ici est de trouver les moyennes quantiles (ou sommes, ou médiane, etc.) en Python. Comme je ne suis pas un utilisateur expérimenté de Python mais que j'ai utilisé R pendant un certain temps, mon itinéraire choisi est via Rpy. Cependant, j'ai rencontré le problème que la liste des moyens retournés ne correspond pas à l'ordre des quantiles. En particulier, j'ai ce qui suit dans R:Moyenne quantile triée via Rpy
> a = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
> b = c(2, 4, 20, 40, 200, 400, 2000, 4000, 20000, 40000)
> prob = seq(0,5)/5
> br = quantile(a,prob)
> rcut = cut(a, br, include.lowest = TRUE)
> quintile_means = tapply(b, rcut, mean)
> quintile_means
[1,2.8] (2.8,4.6] (4.6,6.4] (6.4,8.2] (8.2,10]
3 30 300 3000 30000
qui est très bon. Cependant, si je traduis le code dans Rpy, je suis
>>> import rpy
>>> from rpy import r
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> b = [2, 4, 20, 40, 200, 400, 2000, 4000, 20000, 40000]
>>> prob = [ x/5.0 for x in range(6)]
>>> br = r.quantile(a, prob)
>>> rcut = r.cut(a, br, include_lowest=r.TRUE)
>>> quintile_means = r.tapply(b, rcut, r.mean)
>>> print quintile_means
[30.0, 300.0, 3000.0, 30000.0, 3.0]
Notez la liste finale est mal ordonnée (nous le savons parce que a
et b
sont tous deux commandés dans ce cas). En général, je n'ai aucun moyen de récupérer l'ordre correct du plus petit au plus haut quantile dans Rpy. Aucune suggestion? En outre (pas en remplacement, comme j'aimerais connaître la réponse à la question ci-dessus), si vous pouvez suggérer un moyen d'effectuer directement l'analyse en python, ce sera également très bien. (Je n'ai pas numpy ou scipy installé.) Thx!
EDIT: Pour clarifier, a
et b
sont apparié mais pas nécessairement ordonné. Par exemple, a
est la taille des yeux et b
est la taille du nez. J'essaie de découvrir que dans les différents quantiles de a
, quels sont les moyens du correspondant b
s. Merci.
Fonctionne comme un charme. THX. – Zhang18