Moyenne et ecartype + combinaison [résolu]

jeanore

XLDnaute Nouveau
Bonjour,

Actuellement confronté à un petit souci sous Excel, et étant (très) débutant concernant les macros, je sollicite votre aide. J'ai une variable mesurée pour 20 individus (lignes). Je souhaiterais faire une macro qui fournit les moyennes et les écart-types des valeurs prises par cette variable pour toutes les combinaisons de 3 individus, 4 puis 5 jusqu'à 20 individus. L'objectif est de visualiser la variation de la moyenne et de l'écart-type à chaque individu supplémentaire.

Merci par avance !

Cordialement,

J.T.
 
Dernière édition:

jeanore

XLDnaute Nouveau
Re : Moyenne et ecartype + combinaison

Bonjour KenDev,

En fait, je voudrais faire dans un second temps la moyenne des moyennes et des écart-types pour chaque combinaisons, puis tester statistiquement les différences. Donc, en fait au départ, ce qui m'intéresse c'est de faire une macro qui me fournit seulement les 20 moyennes et (surtout) écart-types afin de visualiser l'évolution de ces deux paramètres à chaque individu supplémentaire. Mais, après je me suis dit que si je n'ai pas la liste, je ne pourrais pas tester statistiquement les différences à l'aide de test univarié type ANOVA. Je me trompe peut être...

Cordialement

J.T.
 

Misange

XLDnaute Barbatruc
Re : Moyenne et ecartype + combinaison

Bonjour

Si c'est pour voir la moyenne à chaque NOUVELLE donnée ajoutée, voire PJ, sinon le nb de combinaisons est effectivement bien trop grand.
 

Pièces jointes

  • moyenne-et.xlsx
    9.8 KB · Affichages: 42

jeanore

XLDnaute Nouveau
Re : Moyenne et ecartype + combinaison

Bonjour Misange,

Merci pour le fichier excel. Oui en effet, j'aimerais la moyenne des moyennes et des écart-types calculées pour toutes les combinaisons de 3 parmi 20 puis 4, etc. et non la moyenne et l'ET pour une nouvelle donnée ajoutée. C'est peut être effectivement trop lourd et donc impossible. dommage...

Merci encore,

Cordialement,
J.T.
 

KenDev

XLDnaute Impliqué
Re : Moyenne et ecartype + combinaison

Bonjour jeanore, Misange,

Pas impossible non, juste très long. Bon courage. Cordialement

KD

VB:
Option Explicit

Sub MoyJ()
'mettre les données en colonne 1, sans ligne de titre et sans données parasites sous cette colonne
' la sub écrira en colonne 2 & 3
    Dim i%, a&, v%, Ta%(), n&, Tb#(), Tc#(), h%, j&, k&
    h = Cells(Rows.Count, 1).End(xlUp).Row: v = 3
    If h < v Then Exit Sub
    ReDim Tc(1 To 2, v To h)
    For i = v To h
        a = WorksheetFunction.Combin(h, i): Erase Tb
        For j = 1 To a
            ReDim Preserve Tb(1 To 2, 1 To j): Ta = NCmb(h, i, j)
            For k = 1 To UBound(Ta)
                Tb(1, j) = Tb(1, j) + Cells(Ta(k), 1)
            Next k
            Tb(1, j) = Tb(1, j) / UBound(Ta)
            For k = 1 To UBound(Ta)
                Tb(2, j) = Tb(2, j) + (Tb(1, j) - Cells(Ta(k), 1)) ^ 2
            Next k
        Next j
        n = j - 1
        For j = 1 To n: For k = 1 To 2
            Tc(k, i) = Tc(k, i) + Tb(k, j)
        Next k, j
        For k = 1 To 2
            Tc(k, i) = Tc(k, i) / n
        Next k
        Tc(2, i) = Sqr(Tc(2, i))
        For j = 1 To 2
            Cells(i, j + 1) = Tc(j, i)
        Next j
    Next i
End Sub

Private Function NCmb(ByVal a%, ByVal b%, ByVal c&) As Integer()
Dim Tb%(), i&, bS As Boolean, x&, n&, Cb&
    n = WorksheetFunction.Combin(a, b)
    If n > 2147483647 Or b > a Or b < 1 Or c < 1 Or c > n Then
        ReDim Tb(0 To 0)
    Else
        ReDim Tb(0 To b)
        Do
            Cb = Cb + 1: x = 0: bS = False
            For i = a - 1 - Tb(Cb - 1) To b - Cb Step -1
                x = x + WorksheetFunction.Combin(i, b - Cb)
                If c <= x Then bS = True: Exit For
            Next i
            Tb(Cb) = a - i: c = c - (x - WorksheetFunction.Combin(i, b - Cb))
        Loop Until Cb = b
    End If
    NCmb = Tb
End Function
 

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat