|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : avril 2003 Messages : 123 ![]() |
J'utilise IB6 open source, donc pas grand chose au niveau opérateurs statistiques : MIN, MAX, AVG, COUNT, SUM
Je souhaite calculer la variance d'élément "value" d'une table "Tbl". Il me faut donc faire la somme des carrés des différences entre les "value" et moyenne, le tout divisé par le nombre d'éléments. Je travaille donc autour de la requête suivante : Select SUM( (tbl.value - AVG(tbl.value) * (tbl.value - AVG(tbl.value)) / MOY(tbl.value) AS Variance From tbl mais j'ai une erreur d'aggregat ("invalide aggregate reference"); certainement au niveau de l'insertion de AVG dans SUM. Une idée ? Merci
__________________
Température de l'eau : 28 ° Température extérieure : 32° Température au fond du verre : 50° ~ 55° ------ Mangez des bananes ---------- |
|
|
00
|
|
|
#2 |
|
Membre à l'essai
![]() Inscription : avril 2003 Messages : 123 ![]() |
Il faut lire :
Select SUM( (tbl.value - AVG(tbl.value)) * (tbl.value - AVG(tbl.value)) / MOY(tbl.value) AS Variance From tbl Il manquait une parenthèse ! Mais le problème deumerre ! Merci
__________________
Température de l'eau : 28 ° Température extérieure : 32° Température au fond du verre : 50° ~ 55° ------ Mangez des bananes ---------- |
|
|
00
|
|
|
#3 |
|
Membre expérimenté
![]() Développeur Java Inscription : mars 2006 Messages : 463 ![]() |
Je ne sais pas si ça va arranger le problème mais il manque toujours une parenthèse.
Select SUM ( ==> où est la parenthèse qui ferme celle ci ? (tbl.value - AVG(tbl.value)) * (tbl.value - AVG(tbl.value)) / MOY(tbl.value) AS Variance From tbl |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Développeur informatique Inscription : octobre 2006 Messages : 435 ![]() |
En fait les fonctions d'agrégation imbriquées ne sont pas supportées par IB6, ni d'ailleurs par FB 2.0.1 que j'utilise.
Utilise plutôt une procédure stockée.
__________________
Si vous êtes libre, choisissez le Logiciel Libre. |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
Variance = carré de l'écart type = (Sx² - (Sx)² /n) /(n-1)))
SELECT (SUM(x*x) -((SUM(x)*SUM(x)/COUNT(*))/COUNT(*)-1))) cf Joe Celko
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Développeur informatique Inscription : octobre 2006 Messages : 435 ![]() |
En enlevant la derniére parenthèse, ça marche mais le résultat que j'ai eu sur un test n'est apparament pas un écart type même au carré, puisque c'est un énorme chiffre.
__________________
Si vous êtes libre, choisissez le Logiciel Libre. |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
bah, faute dans le bouquin alors
c'est plutot ça en fait : (SUM(x*x)/COUNT(*)) -((SUM(x)/COUNT(*))*(SUM(x)/COUNT(*))) enfin tu as l'idée, vérifie la formule
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
00
|
|
|
#8 |
|
Membre à l'essai
![]() Inscription : avril 2003 Messages : 123 ![]() |
bravo et merci !
la formule est bien : Variance = carré de l'écart type = (Sx² - (Sx)² /n) / n i.e : ( SUM(x * x) - ( (SUM(x) * SUM(x)) / COUNT(x) )) / COUNT(x) ou Variance = carré de l'écart type = Sx² / n - (Sx / n)² i.e : (SUM(x*x)/COUNT(*)) -((SUM(x)/COUNT(*))*(SUM(x)/COUNT(*)))
__________________
Température de l'eau : 28 ° Température extérieure : 32° Température au fond du verre : 50° ~ 55° ------ Mangez des bananes ---------- |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com