1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| 'On suppose un modèle du type:
' y = A*x^B. Les paramètres à estimer sont A et B
' <=> ln(y)=ln(A)+B*ln(x) : modèle linéaire, solvable par LinEst
' <=> y = A*C^X avec C=exp(B) et X=ln(x): modèle "exponentiel" solvable par LogEst
Sub test_Regression2()
Dim estim As Variant
Dim x() As Variant, y() As Variant, z() As Variant
Dim epsilon As Double
Dim i As Integer
Randomize
'On remplit les vecteurs des observables
ReDim x(1 To 20)
ReDim y(1 To 20)
ReDim z(1 To 20)
For i = 1 To 20
epsilon = 0.2 * i * Rnd 'on définit une erreur proportionnelle à x
x(i) = Log(i)
y(i) = 3 * i ^ 2 + epsilon
z(i) = Log(y(i))
Next i
'Estimation par la méthode de regression LogEst
estim = WorksheetFunction.LogEst(y, x, True, True)
Debug.Print Log(estim(1, 1)), estim(1, 2), estim(3, 1) 'affiche les coefficients B, A et le R2
'Estimation par la méthode de regression LinEst
estim = WorksheetFunction.LinEst(z, x, True, True)
Debug.Print estim(1, 1), Exp(estim(1, 2)), estim(3, 1) 'affiche les coefficients B, A et le R2
End Sub |
Partager