Fonctions de calcul statistique

charlie1979 Messages postés 4 Date d'inscription vendredi 27 février 2009 Statut Membre Dernière intervention 3 juin 2009 - 28 mai 2009 à 15:17
charlie1979 Messages postés 4 Date d'inscription vendredi 27 février 2009 Statut Membre Dernière intervention 3 juin 2009 - 3 juin 2009 à 12:19
bonjour tout le monde,

je travaille actuellement sur un projet (en VB.NET 2008) et j'aurai besoin d'un ensemble de fonctions de calcul statistique (ou même une dll) surtout pour le calcul de proba et calcul inverse (loi de khi2, etc.). J'ai déjà trouvé sur ce site un exemple de code mais en comparant les résultats avec Excel ou Calc c'est très différent.

Quelqu'un a quelque chose pour moi? please, help! Merci d'avance!

11 réponses

sturtrid Messages postés 133 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 13 juillet 2012 1
29 mai 2009 à 16:14
Salut !

Si tu as les formules, tu devrais pouvoir créer des fonctions qui les appliquent sans trop de soucis non ? Je me trompe ?

Si tu ne les as pas, regarde ICI.

++
0
marinmarais Messages postés 104 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 16 juillet 2010 1
2 juin 2009 à 16:10
Salut !


Vu qu'il n'y a pas 36000 codes de fonctions du Khi-deux sur ce site, je suppose que celle dont tu parles est celle que j'ai postee en 2005 et mis en lien par sturtrid.

Par contre ca m'etonne ce que tu me dis, a savoir qu'elle differe d'Excel.
J'ai maintes fois eu l'occasion de tester cet algorithme et il m'a semble OK.
Si tu veux le tester, fait le a partir de ce lien :
http://www.fourmilab.ch/rpkp/experiments/analysis/chiCalc.html
Je code javascript de la page est celui que j'ai traduit en VB6.

Je serais interesse de detecter d'eventuels bugs. Je vais devoir sous peu le passer en C++...
Si tu peux m'en dire plus, ce serait cool.

Bonne journee,
Thomas.




Marin Marais
0
marinmarais Messages postés 104 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 16 juillet 2010 1
2 juin 2009 à 16:18
Je viens de tester et je trouve bien la meme chose entre mon code, celui de la page web et excel, si ce n'est qu'au dela de 1000 degres de liberte, excel est largue.

Remarque, maintenant que j'y pense, est-ce que c'est sur la loi du chi-deux que tu as un probleme ? C'est sur celui de la loi normale centree reduite ?

A+.

Marin Marais
0
marinmarais Messages postés 104 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 16 juillet 2010 1
2 juin 2009 à 16:41
Erratum.

Pour que mon code du chi2 marche, du moins celui-ci :
http://www.vbfrance.com/codes/MODULE-FONCTIONS-STATISTIQUES-VB6_31444.aspx

il faut que la definition de PI ne soit pas en commentaire :
Public Const Pi = 3.14159265359

Ca peut etre fait d'une autre maniere, mais le code necessite la valeur de Pi.

De plus, il faut modifier un peu le code pour definir de maniere plus propre les variables, suivant la remarque de Jack dans mon code. Ca prend 2 min a faire...
Marin Marais
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
charlie1979 Messages postés 4 Date d'inscription vendredi 27 février 2009 Statut Membre Dernière intervention 3 juin 2009
2 juin 2009 à 18:28
Salut tout le monde,

UN GRAND MERCI pour vous tous d'avoir vous intéresser à mon pb.

Voici les résultats des mes tests de la fonction invchi2(p, df) / Code MarinMarais :

1er cas : proba: p=0.9 et deg_de_liberté: df=30
- Excel --> var= 20.599235
- Calc --> var= 20.599235
- Chi2Calculator (site web) --> var= 20.5992
- Code MarinMarais --> var= 20.599235 --> :-)

2ème cas : proba: p=0.9 et deg_de_liberté: df=31
- Excel --> var= 21.433565
- Calc --> var= 21.433565
- Chi2Calculator (site web) --> var= 21.4335
- Code MarinMarais --> var= 28.769048 --> :-(

Je pense qu'il ya un pb dans le cas de figure où le df est impair!

Tu peux regarder ça MarinMarais et me répondre? STP, c'est très important et urgent pour moi et mon projet! please :-(

Charlie
0
marinmarais Messages postés 104 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 16 juillet 2010 1
2 juin 2009 à 18:43
Salut !


Bien vu. Ton hypothèse me semble d'autant plus plausible que ma manière de tester la parité de df était pittoyable en 2005. Je viens de regarder et j'en ai presque honte  (je faisais mes premiers pas à l'époque...).
Je ne suis plus au bureau donc je n'ai pas VB6.
Demain je teste ça avec un vrai moyen de voir la parité de df (genre  > if df mod 2 = 0).

J'en profiterai pour regarder à fond le code voir s'il n'y a pas d'autres maladresses du même type.

C'est con, mais comme la majorité de mes systèmes d'équation sont paires, et bien je n'avais eu ce genre de pépin. C'est ptet pas ça, mais c'est une bonne piste.

Merci en tout cas, ça va me faire gagner du temps que je devrai traduire ça en C++.
Je te recontacte demain.

Bonne soirée,
Tom.




Marin Marais
0
marinmarais Messages postés 104 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 16 juillet 2010 1
3 juin 2009 à 09:09
Salut Charlie,

Desole de te le dire, mais apres ces tests (sans avoir modifie le code puis apres), ca marche.
Ca ne vient pas de mon code.
Avec un degre de liberte de 31 et une proba de 0.9, je trouve bien 21.433565.

J'ai quand meme update mon code ici :
http://files.codes-sources.com/fichier.aspx?id=31444&f=tables_fcts_stat.bas

Je pense que tu as du faire une erreur quelque part en adaptant mon code VB6 en VB.net

Bon courage pour trouver le bug.

Marin Marais
0
charlie1979 Messages postés 4 Date d'inscription vendredi 27 février 2009 Statut Membre Dernière intervention 3 juin 2009
3 juin 2009 à 10:11
Salut Marin Marais,

merci pour ton aide!

ça y est, j'ai trouvé :-) tu sait la var 'bigx', moi je l'avais mise au début de la fonction 'pochisq' vu qu'elle est utilisée dans cette fonction. Mais si on l'initialise à 20 --> ça donne les valeurs bizarres que j'ai eues. j'ai juste commenté 'bigx = 20' et du coup ça marche.

Tu peus regarder à quelle valeur exacte il faut initialiser cette var 'bigx' dans 'pochisq'? ou peut-être il faut laisser comme ça 'à zéro' mais ça m'étonne quand même (desfois il y a un cas particulier).

GRAND MERCI!

Charlie
0
marinmarais Messages postés 104 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 16 juillet 2010 1
3 juin 2009 à 10:45
En fait, j'en sais rien. C'est pas moi qui est concu l'algorithme, je n'ai fait que le traduire en VB pour etre en mesure de faire des tests du chi 2 avec plus de 10000 degres de liberte car au dela de 500, aucun PC ne peut calculer la valeur exacte de la fonction Gamma.

Quand bigx = 20 est defini a la fin de la fonction poz, comme dans le code initial javascript, ca marche.
Quand bigx = 20 est defini au debut de la fonction pochisq, alors que c'est la qu'il sert, ca ne marche plus.

Je n'ai pas le temps de rentrer plus dans le code ni de commander les bouquins en reference de cette approximation. Je serais toi, je ne modifierai pas le code qui marche, tout du moins, pas avant de l'avoir etudie a fond et compris de maniere exhaustive son fonctionnement, sans ca c'est trop risque... Mais ca me peine de ne pas piger ca.

Quand j'aurai du temps j'y jetterais un coup d'oeil, mais ca ne sera pas avant cet ete, j'en ai peur...

Je ne suis pas sur mais en general, comme c'est ecrit dans wikipedia, on a : "Lorsque k est « grand » (k > 30), la loi du ?² peut s'approximer par une loi normale d'espérance k et de variance 2k"
Dans ce cas, bigx pourrait etre le critere d'approximation... Ca ne m'etonnerait pas dans le mesure ou la fonction pochisq fait appel a poz qui approxime la loi normale.

Voili voilou.
Bon courage !

A+.




Marin Marais
0
marinmarais Messages postés 104 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 16 juillet 2010 1
3 juin 2009 à 12:01
0
charlie1979 Messages postés 4 Date d'inscription vendredi 27 février 2009 Statut Membre Dernière intervention 3 juin 2009
3 juin 2009 à 12:19
Merci Marin Marais,

je vais garder déjà cette version de code surtout pour la présentation de mon projet demain. Je regarderai après à tête reposée pour ce 'bug'.

Mille mercis,

Charlie.

@+
0
Rejoignez-nous