Ceci est pour une nouvelle fonctionnalité sur http://cssfingerprint.com (voir/à propos de l'information générale). La fonctionnalité recherche les sites que vous avez visités dans une base de données de données démographiques du site et tente de deviner quelles sont vos statistiques démographiques.mysql/stats: Pondérer une moyenne pour accentuer les différences par rapport à la moyenne
Toutes mes données démographiques sont au format de probabilité 0..1, pas des rapports ou des nombres absolus ou similaires. Essentiellement, vous avez un grand nombre de points de données qui vous tendent chacun vers leurs propres données démographiques. Cependant, il suffit de prendre la moyenne, car cela signifie qu'en ajoutant beaucoup de données génériques, le nombre diminue. Par exemple, supposons que vous ayez visité les sites S0..S50. Par exemple, supposons que vous ayez visité les sites S0..S50. Tous sauf S0 sont 48% de femmes; S0 est 100% mâle. Si je devine votre sexe, je veux avoir une valeur proche de 100%, pas seulement les 49% qu'une moyenne normale donnerait. En outre, considérons que la plupart des données démographiques (c'est-à-dire tout ce qui n'est pas le sexe) n'ont pas la moyenne de 50%. Par exemple, la probabilité moyenne d'avoir des enfants de 0 à 17 ans est d'environ 37%. Plus la démographie d'un site est différente de cette moyenne (par exemple, c'est peut-être un site pour les parents, ou pour les personnes sans enfant), plus cela devrait compter dans mon estimation de votre statut.
Quelle est la meilleure façon de le calculer?
Pour un crédit supplémentaire: quelle est la meilleure façon de calculer cela, qui est également bon marché & facile à faire dans mysql? ETA: Je pense que quelque chose qui correspond à ce que je veux est Φ(AVG(z-score^2, sign preserved))
. Mais je ne suis pas sûr que ce soit une bonne fonction de pondération.
(Φ est la fonction de distribution normale - http://en.wikipedia.org/wiki/Standard_normal_distribution#Definition)
Donc, 'prob (utilisateur est stat X) = (population problème antérieur X) * produit (problème de site X, sur tous les sites utilisateurs touchés)' (en supposant que tous les sites ont la même pondération)? Hmm. Je pense que pour le faire efficacement, je vais avoir besoin d'une transformation qui me permette d'utiliser 'SUM()' car mysql n'a pas de 'PROD()' analogue. :/ – Sai
er, s/prob/prob * (1-prob)/pour les main droite – Sai
@Sai: 'PROD (x) = EXP (SUM (LN (x)))', bien que la formule actuelle pour cette cas est beaucoup plus complexe et nécessite une récursivité. – Quassnoi