VBA : Centrer et réduire des données

1ma9

XLDnaute Nouveau
Bonjour à tous,

Je vous remercie par avance de votre patience.

Je tente de faire une analyse en composante principale, pour cela je dispose d'une base de données, je dois centrer et réduire mes données, mais ce n'est pas la partie la plus importante. Je dois commencer par calculer les moyennes par colonne ce que j'ai fait.
Puis les variances, il est là le hic ! en effet, la formule de la variance consiste d'abord a tout mettre au carré puis à faire la somme des données au carré puis à soustraire la moyenne au carré

un exemple si j'ai 3 notes : 8, 3, 7 la moyenne c'est (8+3+7) / 3 = 6
La variance c'est (8²+3²+7²) - 6²

mais quand je fais le test de ma formule cela ne colle pas... et je suis vraiment dans l'embarras, si quelqu'un pouvait me dire mon erreur je serai ravi, je vous présente mon code:

Sub Moyenne()

Dim i As Integer
Dim somme As Single
For i = 2 To 31
somme = somme + Cells(i, 2).Value
Cells(32, 2).Value = CStr(somme)
Next i
'calcul du total des données d'une colonne

Dim k As Single
k = Cells(32, 2).Value / 30
Cells(33, 2).Value = CStr(k)
'calcul de la moyenne de la colonne

End Sub

Sub Variance()

Dim i As Integer
Dim var As Single
For i = 2 To 31
var = var + Cells(i, 2).Value ^ 2
Cells(34, 2).Value = CStr(var)
Next i
'faire la somme des éléments au carré

Dim x As Single
x = var - Cells(33, 2).Value ^ 2
Cells(35, 2).Value = CStr(x)
'retrancher la moyenne au carré

End Sub
 

1ma9

XLDnaute Nouveau
Re : VBA : Centrer et réduire des données

Sinon j'ai essayé ça mais ca ne marche toujours pas !

Sub variancetest()

Dim x As Integer
Dim y As Single
For x = 2 To 31
y = Cells(x, 2).Value * Cells(x, 2).Value
Cells(x, 2).Value = CStr(y)
Next x
'remplacer les cellules par les carrés des nombres

Dim z As Integer
Dim t As Single
t = 0
For z = 2 To 31
t = t + Cells(z, 2).Value
Cells(34, 2).Value = CStr(t)
Next z
'faire la somme des carrés

Dim a As Single
a = t / 30
Cells(35, 2).Value = CStr(a)

Dim var As Single
var = Cells(35, 2).Value - Cells(32, 2).Value ^ 2
Cells(36, 2).Value = CStr(var)
'calcul de la variance

End Sub
 

Grand Chaman Excel

XLDnaute Impliqué
Re : VBA : Centrer et réduire des données

Bonsoir 1ma9,

Premièrement, il me semble que ton calcul de la variance est erronée.
Je crois que la formule est plutôt : variance = [somme des écarts à la moyenne au carré] / [nombre d'échantillon].
Donc dans ton exemple, ce serait plutôt [ (8-6)^2 + (3-6)^2 + (7-6)^2 ] / 3 = 4.6666

De plus, pourquoi vouloir réinventer la roue???
Ces formules existent déjà dans Excel :
MOYENNE
VAR variance pour un échantillon
VAR.P variance pour une population
 

1ma9

XLDnaute Nouveau
Re : VBA : Centrer et réduire des données

Oui Oui j'ai vu que mon calcul était erroné, pour ta démonstration de la roue, c'est que je suis contraint de le faire, et crois moi cela ne m'amuse pas...

j'ai trouvé l'erreur, en fait, j'avais mis en Single, et cela dépassait la capacité, ça me réduisait mes calculs et je ne trouvais pas le bon résultat ! merci !!
 

1ma9

XLDnaute Nouveau
Re : VBA : Centrer et réduire des données

Dis moi tu sais pourquoi lorsque je tape :
Dim z As Integer
For z = 2 To 31
t = t + Cells(z, 2).Value
Cells(34, 2).Value = CStr(t)
Next z
'faire la somme des carrés

a = Cells(34, 2).Value / 30
Cells(35, 2).Value = CStr(a)

le résultat de la division n'est pas bon ?
 

Grand Chaman Excel

XLDnaute Impliqué
Re : VBA : Centrer et réduire des données

Si c'est pour calculer la variance, alors ta formule devrait être :

Code:
Dim z As Integer
For z = 2 To 31
t = t + (Cells(z, 2).Value - Cells(33,2))^2
Cells(34, 2).Value = CStr(t)
Next z
'faire la somme des carrés

a = Cells(34, 2).Value / 30
Cells(35, 2).Value = CStr(a)
 

Discussions similaires

Réponses
0
Affichages
176

Statistiques des forums

Discussions
312 493
Messages
2 088 952
Membres
103 989
dernier inscrit
jralonso