Moyenne sur un echantillon aleatoire

Résolu
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008 - 8 sept. 2008 à 18:34
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008 - 11 sept. 2008 à 13:45
Navre si la question a déjà ete posée auparavant, mais je n'ai rien réussi a trouver, étant donne la spécificité de ma demande ...
Navre également pour les accents manquants, je suis sur un clavier qwerty, et le correcteur orthographique ne peut pas tout corriger ...

J'aimerais calculer un moyenne et un ecart type d'un nombre i de valeurs selectionnees aleatoirement dans une seule et meme colonne. Pour la selection aleatoire, j'ai deja mon idee, de ce cote la pas de probleme.

J'aurais bien une idee, mais il me faudrait pouvoir soit manipuler des vecteurs de donnes, ou pouvoir creer un nombre i de variables (X1, X2, X3 ...).

J'espere etre assez clair

11 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
9 sept. 2008 à 14:05
Pourquoi faire compliqué quand on peut faire plus simple ?


La moyenne n' est-ce pas la somme / nombre ?
Alors :
SumDR = 0 'initialisation de la somme des DR


Do Until i < NombreFilets
   
    Loto = Rnd * 18
    Loto = Fix(Loto) + 1 'Fix tronque, et on ajoute 1 pour le numero de l'echantillon
    Loto = Loto + 1 'Pour le numero de la ligne (Attention a l'entete du tableau)
   
    VecSumDR(i) = Worksheet("Base").Range("B" & Loto).Value
    SumDR=SumDR+ VecSumDR(i)
    i = i + 1
 Loop


Dim Moy as Double
Moy=CDbl(SumDR/NombreFilets)

Worksheet("Processing").Range("B" & NombreFilets).Value = Moy

Maintenant l' ecart type :

Tu parcours tout les éléments de ton tableau, et pour chacun d' eux élever au carré sa difference avec la moyenne.
Dim sE As Double
sE=0
For i=0 To NombreFilets-1
  sE=sE+CDbl(((VecSumDR(i)-Moy)*(VecSumDR(i)-Moy)))
Next

Ensuite on divise sE par NombreFilets pour avoir la variance .
l' ecart type= la racine carré de la variance.

C' est le peu qui me resté après avoir tout oublié des statistique





<hr />




[] Ce qui va sans dire. va mieux en le disant.


<hr />
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
9 sept. 2008 à 16:11
salut,

ta fonction ne retourne rien? ^^




<hr size="2" width="100%" />
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp

 
3
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008
11 sept. 2008 à 13:45
J'ai fini par faire un macro, qui marche tres bien.
Ceci dit, j'avais fait une erreur de signe, c'etait <= et non > dans le Do Until ;)

Merci pour votre aide, en tout cas.
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
8 sept. 2008 à 22:17
Salut,
Apparement c' est pas que les accents qui manquent.
Un court petit salut aussi !
Je sais que tu en es déjà navré.
Pour ta question, un vecteur serait bien plus pratique.
Reviens nous avec du code pour plus ample discussion.

<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
0

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

Posez votre question
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008
9 sept. 2008 à 12:49
Comme tu dis, je suis désolé d'avoir manque de politesse, alors je me rattrape : Bonjour a tous !

Bon, pour ce qui est du code, le voila. Je suis plutôt rouille en VBA, et pas très performant, mais c'est en faisant qu'on apprenant, pas vrai ?

Function ProcessDriftData(NombreFilets As Integer) As Double

'On définie toutes les variables
Dim i As Integer 'variable compteur 1
Dim Loto As Double 'variable qui va piocher en aleatoire
Dim ValeurDR As Double
Dim VecSumDR(NombreFilets) As Double 'Vecteur de dimension

i = 0 'initialisation du compteur 1
j = 0 'initialisation du compteur 1
SumDR = 0 'initialisation de la somme des DR

Do Until i < NombreFilets
   
    Loto = Rnd * 18
    Loto = Fix(Loto) + 1 'Fix tronque, et on ajoute 1 pour le numero de l'echantillon
    Loto = Loto + 1 'Pour le numero de la ligne (Attention a l'entete du tableau)
   
    ValeurDR = Worksheet("Base").Range("B" & Loto).Value
   
    VecSumDR(i) = ValeurDR
   
    i = i + 1
   
Loop

Worksheet("Processing").Range("B" & NombreFilets).Value = Mean(VecSumDR)

End Function

Je me doute que c'est loin d'être optimise.
Ma question concerne la ligne rouge. Je n'arrive pas a savoir si la syntaxe de la fonction Mean est correcte, et si elle est utilisable sur un vecteur. Suis je oblige de refaire une boucle qui va parcourir mon vecteur, ou est ce qu'il y a un syntaxe qui pourrait me permettre de faire une moyenne sur les elements du vecteur ? Meme question pour l'ecart type.
0
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008
9 sept. 2008 à 13:35
Ok, je vais essayer avec Average, ca marchera peut etre mieux ...
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
9 sept. 2008 à 14:09
j' ai même oublié le "s" des statistiques

<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
0
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008
9 sept. 2008 à 14:25
Joli, merci beaucoup ! Je teste ça et je valide des que c'est vérifié.
0
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008
9 sept. 2008 à 14:40
J'ai essaye dans une cellule de taper =ProcessDriftData(2) et il me renvoie l'erreur #NAME? ... C'est certainement quelque chose de stupide, mais j'ai beau me retourner les méninges ... Rien n'y fait (Je n'ai pas ajoute le script pour l'ecart type). Une idée ? Et si je le faisais en Macro ?
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
9 sept. 2008 à 14:47
Je travaille très rarement avec Excel, mais l'idéal serait que tu places ta procédure dans un module et tu l' appelles après Click sur un ButtonCommand.
<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
0
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008
9 sept. 2008 à 14:50
Ok merci bien, je fais ca des demain !
0
Rejoignez-nous