OVH Cloud OVH Cloud

fonctions statistiques de excel dans access

22 réponses
Avatar
Ma Dalton
Bonjour,

quelqu'un saurait-il comment utiliser la fonction loi.poisson de excel dans
access. Dans l'historique du groupe, un seul message sans réponse datant de
l'an 2000 figure.

rappel de la fonction loi.poisson: Cette fonction sert à obtenir le
coéficient de poisson afin comparer une donnée à la moyenne d'un ensemble de
données

par exemple: il survient au cours des 4 dernières années 10, 15, 12, et 14
évènements quelquonques soit 12,75 en moyenne. Cette année, 16 évènements
surviennent. Est-ce significatif? avec poisson=0.21 ça l'est !

De plus, puisque la table des données est une liste cummulative des cas,
j'ai à produire des tableaux croisés avant de calculer la valeur poisson.
Certains tableaux croisé seront donc ventillés en fonction des autres
variable de ma table (age, sexe, ...)

Finalement pour ceux qui conaissent, le logiciel gratuit EPI-INFO offert par
le CDC d'Atlanta aux USA proposent une série de DLL qu'il me semble possible
de récupérer en VBA. Qu'en pensez-vous

merci

10 réponses

1 2 3
Avatar
Ma Dalton
Finalement, ce n'était pas très long à tester. J'obtiens :
? loipoisson(12.75,16)
6,76532583700657E-02

Comment ce fait-il que ce ne soit pas le même résultat qu'excel?
=LOI.POISSON(12,75;16;VRAI)
0,193121542


et encore une fois, pourquoi mon collègue ferait-il les 2 soustractions?
=1-loi.poisson(12.75-1,16,vrai)
^^^^ ^^^^

sa méthologie serait-elle erronée?

merci
Avatar
Jinroh
prenez garde à l'utilisation des statistiques si vous
n'êtes pas statisticien. La loi de poisson est je crois
valable si les événements sont tous équiprobables. Est-ce
bien votre cas ?

-----Message d'origine-----
WOW! je suis loin d'être un spécialiste des lois
statistiques mais je pense

comprendre certains éléments. Je poursuis en intercalant
mes questions.


Bon, je connais pas ton coefficient de poisson mais la
loi oui.



Il est vrai que je n'ai pas expliqué dans les bons
termes. Ce que j'ai

appelé le coéficient est en réalité la probabilité que ma
données de la 5eme

année soit égale à la moyenne des 4 années précédente
(selon mon exemple

initial du nombre de cas annuel d'un évènement
quelconque : 10, 15, 12, 14

et 16 cas).

La fonction Loi.Poisson d'excel, quand tu mets en 3eme
argument VRAI,


c'est pour avoir Pr(X<=k) je suppose. Si c'est le cas,
il t'appartiendra


de modifier la fonction que je te passe.


Effectivement, je souhaite savoir Pr(12.75<)

Je suis parti du fait que tu dois donner en 1er
argument l'espérance


(Lambda) et en 2eme, la valeur de k.

Je calcule seulement Pr{X=k}.

Le calcul de factoriel k (k!) est fait de manière
recursive.



Je suis pas sur de devoir typer LaValeur comme Long ,
Integer me parait


suffisant mais ...

Function LoiPoisson(Lambda As Double, LaValeur As Long)
As Double


LoiPoisson = Exp(-Lambda) * Lambda ^ LaValeur /
FactRecursif


(LaValeur)
End Function

FactRecursif doit être typé as Double vu les valeurs
retournées.



Function FactRecursif(UneValeur As Long) As Double
Dim UneValeur2 As Long
If UneValeur = 0 Then
FactRecursif = 1
Else
UneValeur2 = UneValeur - 1
FactRecursif = UneValeur * FactRecursif
(UneValeur2)


End If
End Function

Espérant t'avoir mis sur le chemin ...



Je tente le tout d'ici à demain mais je ne trouve pas
dans tes explications,

la démarche qu'a utilisé mon collègue dans sa feuille
excel.

Pr(12.75<)
=1-LOI.POISSON(12.75-1;16;VRAI)
=0.21

merci


.




Avatar
Logipro
Bonjour,

Voici un fonction qui pourrait être complémentaire :

'/// Début code
Global Const e = 2.71828

Public Function Factorial(x As Integer)
Dim fexp As Integer
fexp = 0
Factorial = x
For Counter = 1 To x - 1
If Factorial > (10 ^ 300) Then Factorial = Factorial / (10 ^ 300): fexp
= fexp + 1
Factorial = Factorial * (x - Counter)
Next
If Factorial = 0 Then Factorial = 1
End Function
Public Function Poisson(l As Double, x As Integer) 'Single value poisson
Dim f As Double
Dim c As Integer
f = Factorial(x)
Poisson = (e ^ (l * -1)) * (l ^ x) / (f)
c = 0
Do Until c = fexp
Poisson = Poisson / (10 ^ 300)
c = c + 1
Loop
End Function
Public Function cPoisson(l As Double, x As Integer) 'Cumulative
Dim c As Integer
2:
tmp = 0
fexp = 0
For c = 0 To x
cPoisson = cPoisson + Poisson(l, c)
Next
End Function


'// Fin code



Salutation

Robert Simard
Logipro


"Ma Dalton" a écrit dans le message de
news:
Bonjour,

quelqu'un saurait-il comment utiliser la fonction loi.poisson de excel
dans

access. Dans l'historique du groupe, un seul message sans réponse datant
de

l'an 2000 figure.

rappel de la fonction loi.poisson: Cette fonction sert à obtenir le
coéficient de poisson afin comparer une donnée à la moyenne d'un ensemble
de

données

par exemple: il survient au cours des 4 dernières années 10, 15, 12, et
14

évènements quelquonques soit 12,75 en moyenne. Cette année, 16 évènements
surviennent. Est-ce significatif? avec poisson=0.21 ça l'est !

De plus, puisque la table des données est une liste cummulative des cas,
j'ai à produire des tableaux croisés avant de calculer la valeur poisson.
Certains tableaux croisé seront donc ventillés en fonction des autres
variable de ma table (age, sexe, ...)

Finalement pour ceux qui conaissent, le logiciel gratuit EPI-INFO offert
par

le CDC d'Atlanta aux USA proposent une série de DLL qu'il me semble
possible

de récupérer en VBA. Qu'en pensez-vous

merci






Avatar
Ma Dalton
Salut
je penserais que oui. Le véritable sujet derrière l'utilisation des
statistiques est que nous étudions les accidents du travail qui surviennent
d'une année à l'autre sur un territoire. L'objectif de notre utilisation de
la loi de poisson est de déterminer par un balayage statistique les
causes/genre d'accident qui sont en émergence. Évidemment ce n'est pas le
seul indicateur pour ce phénomène (les données financières sont une
excellente sources).

De plus, nous utilisons des logiciels de traitement statistiques tels SPSS
ou SAS qui font très bien la tâche. Cependant bien peu de collègues (moi le
premier) sont spécialistes de l'utilisation de ce type de logiciel. En
guise de solution, nous avons conçu dans access, un premier système
d'information standardisé qui sera utilisé dans tous nos bureaux régionnaux
pour traiter les fichiers de données dont les enregistrements se comptent
par dizaines de milliers chaque année. Voilà pourquoi Access s'est
naturellement démarqué face à excel ou les autres produits.

La solution proposé par Raymond semble apporter le meilleur des 2 mondes
soit la facilité de stockage et de traitement d'accèss et la facilité
d'utilisation d'excel dans son volet "tableaux statistiques"

A+

"Jinroh" a écrit dans le message news:
009901c47a5f$b70e0e50$
prenez garde à l'utilisation des statistiques si vous
n'êtes pas statisticien. La loi de poisson est je crois
valable si les événements sont tous équiprobables. Est-ce
bien votre cas ?
Avatar
Ma Dalton
merci Robert mais c'est un résultat identique (à la loingtaine décimale) à
ce qu'a donné Eric

? loipoisson(12.75,16) <---selon Eric
6,76532583700657E-02

?poisson(12.75,16) <---selon Logipro
6,76538385886924E-02

A+

"Logipro" a écrit dans le message news:

Bonjour,

Voici un fonction qui pourrait être complémentaire :

'/// Début code
Global Const e = 2.71828

Public Function Factorial(x As Integer)
Dim fexp As Integer
fexp = 0
Factorial = x
For Counter = 1 To x - 1
If Factorial > (10 ^ 300) Then Factorial = Factorial / (10 ^ 300):
fexp

= fexp + 1
Factorial = Factorial * (x - Counter)
Next
If Factorial = 0 Then Factorial = 1
End Function
Public Function Poisson(l As Double, x As Integer) 'Single value poisson
Dim f As Double
Dim c As Integer
f = Factorial(x)
Poisson = (e ^ (l * -1)) * (l ^ x) / (f)
c = 0
Do Until c = fexp
Poisson = Poisson / (10 ^ 300)
c = c + 1
Loop
End Function
Public Function cPoisson(l As Double, x As Integer) 'Cumulative
Dim c As Integer
2:
tmp = 0
fexp = 0
For c = 0 To x
cPoisson = cPoisson + Poisson(l, c)
Next
End Function


'// Fin code



Salutation

Robert Simard
Logipro


"Ma Dalton" a écrit dans le message de
news:
Bonjour,

quelqu'un saurait-il comment utiliser la fonction loi.poisson de excel
dans

access. Dans l'historique du groupe, un seul message sans réponse
datant


de
l'an 2000 figure.

rappel de la fonction loi.poisson: Cette fonction sert à obtenir le
coéficient de poisson afin comparer une donnée à la moyenne d'un
ensemble


de
données

par exemple: il survient au cours des 4 dernières années 10, 15, 12, et
14

évènements quelquonques soit 12,75 en moyenne. Cette année, 16
évènements


surviennent. Est-ce significatif? avec poisson=0.21 ça l'est !

De plus, puisque la table des données est une liste cummulative des cas,
j'ai à produire des tableaux croisés avant de calculer la valeur
poisson.


Certains tableaux croisé seront donc ventillés en fonction des autres
variable de ma table (age, sexe, ...)

Finalement pour ceux qui conaissent, le logiciel gratuit EPI-INFO offert
par

le CDC d'Atlanta aux USA proposent une série de DLL qu'il me semble
possible

de récupérer en VBA. Qu'en pensez-vous

merci










Avatar
Eric
re

Effectivement, je souhaite savoir Pr(12.75<)


Tu ne peux pas avoir Pr(12.75<) mais Pr(X<) car 12.75 est ta
moyenne c'est à dire l'espérance mathématique de ta série sur 4 années et
c'est donc ton parametre Lambda de ta loi.

De plus, si tu regardes les arguments de la fonction Loi.Poisson sous
Excel:
1er argument X : Représente le nb d'évènements, dans ton cas 16
2e argument : l'espérance, ici 12.75
3e argument: Cumulative(Vrai donne Pr(X<) Faux donne Pr(X))

Il est vrai que dans ma fonction je passe en 1er l'espérance puis le nb
d'évènements mais bon je te l'avais précisé.

si j'ajoute la proc suivante à ce que je t'ai donné, en faisant au plus
simple, tu auras Pr{X<}: le lambda est figé car j'ai voulu te répondre
rapidement.

Sub Poisson()
Dim total As Double, x As Long
For x = 0 To 16
total = total + LoiPoisson(12.75, x)
Next x
Debug.Print total, 1 - total
End Sub

les résulats sont :
total = loipoisson(12.75,16) 1-total
0,852939001681572 0,147060998318428

SOUS EXCEL:
========== =LOI.POISSON(16;12,75;VRAI) 1-LOI.POISSON(16;12,75;VRAI)
0,852939 0,147061

Donc j'obtiens bien les même résultats.

Par contre, je ne comprends pas pourquoi ton collegue passe en 1er
argument l'espérance et en plus retranche 1 dans la fonction d'Excel. Ca
demande des eclaircissements.


A+
Eric






Je suis parti du fait que tu dois donner en 1er argument l'espérance
(Lambda) et en 2eme, la valeur de k.

Je calcule seulement Pr{X=k}.

Le calcul de factoriel k (k!) est fait de manière recursive.

Je suis pas sur de devoir typer LaValeur comme Long , Integer me
parait suffisant mais ...

Function LoiPoisson(Lambda As Double, LaValeur As Long) As Double
LoiPoisson = Exp(-Lambda) * Lambda ^ LaValeur / FactRecursif
(LaValeur)
End Function

FactRecursif doit être typé as Double vu les valeurs retournées.

Function FactRecursif(UneValeur As Long) As Double
Dim UneValeur2 As Long
If UneValeur = 0 Then
FactRecursif = 1
Else
UneValeur2 = UneValeur - 1
FactRecursif = UneValeur * FactRecursif(UneValeur2)
End If
End Function

Espérant t'avoir mis sur le chemin ...



Je tente le tout d'ici à demain mais je ne trouve pas dans tes
explications, la démarche qu'a utilisé mon collègue dans sa feuille
excel. Pr(12.75<)
=1-LOI.POISSON(12.75-1;16;VRAI)
=0.21

merci






Avatar
Arnaud [lwa]
Bonjour,

0.0675 c'est pour x=k et 0.1931 pour x <= k non ?

Sinon, pour les accidents du travail, as tu lu cette page et la solution ?
http://www.sciences-en-ligne.com/momo/chronomath/exos2/exo_poisson1.html

à+
--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------


"Ma Dalton" a écrit dans le message de
news:
| Finalement, ce n'était pas très long à tester. J'obtiens :
| ? loipoisson(12.75,16)
| 6,76532583700657E-02
|
| Comment ce fait-il que ce ne soit pas le même résultat qu'excel?
| =LOI.POISSON(12,75;16;VRAI)
| 0,193121542
Avatar
Eric
re,

C'est clair mais si les évènements sont "biaisés" ben tu fais plus de
probabilité ;-)) {Je sais qu'il existe des cas ou l'équiprobabilité n'est
pas toujours assurée}

On fait confiance au demandeur ;-)

Ca me fait penser au joueur du loto qui calcule sa probabilité de gagner le
gros lot et constate avec effarement qu'il a 1 chance sur 1 milliard ou x
millions, peu importe. En fait, il ne constate pas qu'il a la certitude de
perdre, non ????

C'était le clin d'oeil du mercredi soir.

A+
Eric



"Jinroh" écrivait news:009901c47a5f
$b70e0e50$:

prenez garde à l'utilisation des statistiques si vous
n'êtes pas statisticien. La loi de poisson est je crois
valable si les événements sont tous équiprobables. Est-ce
bien votre cas ?


Avatar
Eric
Bonsoir Arnaud,

Finalement, le débat sur Poisson passionne !

;-)
A+
Eric

"Arnaud [lwa]" <http://memoaccess.free.fr/> écrivait
news::

Bonjour,

0.0675 c'est pour x=k et 0.1931 pour x <= k non ?

Sinon, pour les accidents du travail, as tu lu cette page et la
solution ?
http://www.sciences-en-ligne.com/momo/chronomath/exos2/exo_poisson1.htm
l

à+


Avatar
Arnaud [lwa]
Salut Eric

"Eric" a écrit dans le message de
news:
| Bonsoir Arnaud,
|
| Finalement, le débat sur Poisson passionne !
|
| ;-)
| A+
| Eric
|

euh .. j'ai dîné avec Paréto à midi, et il m'a dit que le Poisson, il était pas tout frais
:-))

à+
--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------
1 2 3