Stat : paramètres d'équation logarithimique

Le
Blaise Cacramp
Bonjour

Je ne suis pas statiticien et j'ai donc des difficultés pour résoudre en VBA
le problème suivant.
Soit (par exemple) ces valeurs :
Format (X) Norme (Y)
12 7.500
16 6.200
20 5.740
24 5.300
28 4.930
30 4.600
32 4.275
36 3.890

Quand j'en fait un graphique et demande une courbe de tendance (log) avec
affichage de la formule,( y = -3069,6*Ln(x) + 14979 )
et cela fonctionne suffisament pour des prévisions X.
Malheureusement ce sont des manipulations que les utilisateurs ne maitrisent
pas spécialement. Je voudrais donc plus de souplesse et acquérir via VBA
les deux paramètres a et b pour y = a.Ln(x) + b

À vous lire et avec mes meilleures salutations, Blaise.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Blaise Cacramp
Le #21398131
"Blaise Cacramp"
Bonjour

Je ne suis pas statiticien et j'ai donc des difficultés pour résoudre en
VBA le problème suivant.
Soit (par exemple) ces valeurs :
Format (X) Norme (Y)
12 7.500
16 6.200
20 5.740
24 5.300
28 4.930
30 4.600
32 4.275
36 3.890

Quand j'en fait un graphique et demande une courbe de tendance (log) avec
affichage de la formule,( y = -3069,6*Ln(x) + 14979 )
et cela fonctionne suffisament pour des prévisions X.
Malheureusement ce sont des manipulations que les utilisateurs ne
maitrisent pas spécialement. Je voudrais donc plus de souplesse et
acquérir via VBA les deux paramètres a et b pour y = a.Ln(x) + b

À vous lire et avec mes meilleures salutations, Blaise.



Bien entendu, le données peuvent être dans une feuille ou une bdr comme
Access
Tatanka
Le #21398191
Salut Blaise,

Pas besoin de VBA pour obtenir a et b.
En supposant tes X en A2:A9 et tes Y en B2:B9,
1) Sélectionne deux cellules adjacentes sur une même ligne,
2) Entre la formule =INDEX(DROITEREG(B2:B9;LN(A2:A9));{1.2})
et valide par Ctrl+Maj+Entrée.
La cellule de gauche contiendra la valeur de a et celle de droite la valeur de b.

Serge

"Blaise Cacramp"
Bonjour

Je ne suis pas statiticien et j'ai donc des difficultés pour résoudre en VBA le problème suivant.
Soit (par exemple) ces valeurs :
Format (X) Norme (Y)
12 7.500
16 6.200
20 5.740
24 5.300
28 4.930
30 4.600
32 4.275
36 3.890

Quand j'en fait un graphique et demande une courbe de tendance (log) avec affichage de la formule,( y = -3069,6*Ln(x) + 14979 )
et cela fonctionne suffisament pour des prévisions X.
Malheureusement ce sont des manipulations que les utilisateurs ne maitrisent pas spécialement. Je voudrais donc plus de souplesse
et acquérir via VBA les deux paramètres a et b pour y = a.Ln(x) + b

À vous lire et avec mes meilleures salutations, Blaise.

Tatanka
Le #21398381
Et pour les obtenir séparément :
Pour a : =INDEX(DROITEREG(B2:B9;LN(A2:A9));1)
Pour b : =INDEX(DROITEREG(B2:B9;LN(A2:A9));2)
Les deux formules validées par Entrée.

Serge

"Tatanka"
Salut Blaise,

Pas besoin de VBA pour obtenir a et b.
En supposant tes X en A2:A9 et tes Y en B2:B9,
1) Sélectionne deux cellules adjacentes sur une même ligne,
2) Entre la formule =INDEX(DROITEREG(B2:B9;LN(A2:A9));{1.2})
et valide par Ctrl+Maj+Entrée.
La cellule de gauche contiendra la valeur de a et celle de droite la valeur de b.

Serge

"Blaise Cacramp"
Bonjour

Je ne suis pas statiticien et j'ai donc des difficultés pour résoudre en VBA le problème suivant.
Soit (par exemple) ces valeurs :
Format (X) Norme (Y)
12 7.500
16 6.200
20 5.740
24 5.300
28 4.930
30 4.600
32 4.275
36 3.890

Quand j'en fait un graphique et demande une courbe de tendance (log) avec affichage de la formule,( y = -3069,6*Ln(x) + 14979 )
et cela fonctionne suffisament pour des prévisions X.
Malheureusement ce sont des manipulations que les utilisateurs ne maitrisent pas spécialement. Je voudrais donc plus de
souplesse et acquérir via VBA les deux paramètres a et b pour y = a.Ln(x) + b

À vous lire et avec mes meilleures salutations, Blaise.





Blaise Cacramp
Le #21403871
Merci beaucoup, Tatanka, cela fonctionne super bien !
Je suis quand même preneur d'une solution en VBA dans le cas de datas dans
une table Access.

Grand merci,

Blaise


"Tatanka" %

Et pour les obtenir séparément :
Pour a : =INDEX(DROITEREG(B2:B9;LN(A2:A9));1)
Pour b : =INDEX(DROITEREG(B2:B9;LN(A2:A9));2)
Les deux formules validées par Entrée.

Serge

"Tatanka"
Salut Blaise,

Pas besoin de VBA pour obtenir a et b.
En supposant tes X en A2:A9 et tes Y en B2:B9,
1) Sélectionne deux cellules adjacentes sur une même ligne,
2) Entre la formule =INDEX(DROITEREG(B2:B9;LN(A2:A9));{1.2})
et valide par Ctrl+Maj+Entrée.
La cellule de gauche contiendra la valeur de a et celle de droite la
valeur de b.

Serge

"Blaise Cacramp"
Bonjour

Je ne suis pas statiticien et j'ai donc des difficultés pour résoudre en
VBA le problème suivant.
Soit (par exemple) ces valeurs :
Format (X) Norme (Y)
12 7.500
16 6.200
20 5.740
24 5.300
28 4.930
30 4.600
32 4.275
36 3.890

Quand j'en fait un graphique et demande une courbe de tendance (log)
avec affichage de la formule,( y = -3069,6*Ln(x) + 14979 )
et cela fonctionne suffisament pour des prévisions X.
Malheureusement ce sont des manipulations que les utilisateurs ne
maitrisent pas spécialement. Je voudrais donc plus de souplesse et
acquérir via VBA les deux paramètres a et b pour y = a.Ln(x) + b

À vous lire et avec mes meilleures salutations, Blaise.









FdeCourt
Le #21404181
Salut,

En VBA:

Sub DROITEREG()
v = Application.LinEst(Range("B2:B9"), LN(Range("A2:A9")), True,
True)
a = v(1, 1)
b = v(1, 2)
End Sub
Function LN(monRange As Range)
x = monRange
tmp = Application.Transpose(x)
For i = LBound(x) To UBound(x)
x(i, 1) = Log(tmp(i))
Next i
LN = x
End Function

Par contre, question aux experts, sous Excel 2003 comment faire un
Application.Ln avec un range ?, ca me renvoit à chaque fois une erreur
(2015)

Cordialement,

F.
fdecourt
Le #21404391
Salut,

Avec ce code :

Sub DROITEREG()
v = Application.LinEst(Range("B2:B9"), LN(Range("A2:A9")), True, True)
a = v(1, 1)
b = v(1, 2)
End Sub
Function LN(monRange As Range)
x = monRange
tmp = Application.Transpose(x)
For i = LBound(x) To UBound(x)
x(i, 1) = Log(tmp(i))
Next i
LN = x
End Function

Cordialement,

F.
Blaise Cacramp
Le #21410541
Ouais ! super ! merci !

Mais je voudrais faire la même chose dans Access sans passer par XL :
soit lire un recordset et calculer a et b pour pour une équation LOG du type
y = -3069,6*Ln(x) + 14979

Merci à tous

Blaise


"fdecourt" news:
Salut,

Avec ce code :

Sub DROITEREG()
v = Application.LinEst(Range("B2:B9"), LN(Range("A2:A9")), True, True)
a = v(1, 1)
b = v(1, 2)
End Sub
Function LN(monRange As Range)
x = monRange
tmp = Application.Transpose(x)
For i = LBound(x) To UBound(x)
x(i, 1) = Log(tmp(i))
Next i
LN = x
End Function

Cordialement,

F.
FdeCourt
Le #21412921
Salut,

Dans ce cas, tu mets le contenu de ton recordset dans un (ou deux)
tableau à 2 dimensions.

Cordialement,

F.
Blaise Cacramp
Le #21416511
Au temps pour moi, j'avais lu le code en diagonale.

Je n'ai pas testé (ce sera pour demain), mais je suppose que
«Application.Transpose» transpose le Range en tableau.
Mais néanmoins «Application.LinEst» reste de l'Excel qui, il me semble a
besoin d'un Range pour son 1er parametre ?

Un grand merci à toi, F., de m'accompagner sur ce sujet "statistique" que je
maîtrise pas.

Blaise

"FdeCourt"
Salut,

Dans ce cas, tu mets le contenu de ton recordset dans un (ou deux)
tableau à 2 dimensions.

Cordialement,

F.
FdeCourt
Le #21417251
Salut,

Nop Application.transpose transformepar exemple un tableau de 2 lignes
x 10 colonnes, en tableau de 10 lignes x 2 colonnes.
Sinon LinEst fonctionne avec un range qui n'est rien d'autre qu'un
tableau à x dimension dans la formule, et qui fonctionne donc avec un
Array.
Je regarderai demain pour Access.

Cordialement,

F.
Publicité
Poster une réponse
Anonyme