IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

[VBA] ACCESS - Coefficient de correlation en SQL


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Par défaut [VBA] ACCESS - Coefficient de correlation en SQL
    Bonjour

    Je ne sais pas comment réaliser une requête en VBA qui calculerait le coefficient de correlation entre 2 tables de données Access (il n'existe pas de fonction CORR )

    Merci d'avance pour vos réponses

  2. #2
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Heu, ben là, je ne comprend même pas la question...
    Qu'est-ce qu'un coefficient de corrélation entre 2 tables?

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Par défaut Qu'est ce qu'un coefficient de correlation
    Le coefficient de correlation entre 2 séries de données est égal à la covariance entre les 2 séries sur le produit de la variance des 2 séries. Si il est proche de + ou -1 , les 2 séries ont un lien de linéarité. Si il est proche de 0, les 2 séries sont linéairement indépendantes.
    En SQL access, il existe la fonction StDev pour la variance, mais il n'y a rien sur la covariance et je ne vois donc pas comment faire ma requete.

    Merci d'avance

  4. #4
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut Re: Qu'est ce qu'un coefficient de correlation
    Citation Envoyé par fredkrug
    Le coefficient de correlation entre 2 séries de données est égal à la covariance entre les 2 séries sur le produit de la variance des 2 séries. Si il est proche de + ou -1 , les 2 séries ont un lien de linéarité. Si il est proche de 0, les 2 séries sont linéairement indépendantes.
    En SQL access, il existe la fonction StDev pour la variance, mais il n'y a rien sur la covariance et je ne vois donc pas comment faire ma requete.

    Merci d'avance
    Pffff..... on a déjà de la peine à se comprendre en parlant le langage VB6, mais là, tu pousses un peu
    On est pas tous mathématicien ou statisticien

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Par défaut
    Bon alors ça sert pour savoir si 2 séries se ressemblent ou pas. Le site suivant détaille la formule :
    http://rfv.insa-lyon.fr/~jolion/STAT/node40.html

    Mais c'est sûr que tout cela est très mathématique

  6. #6
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Je peux te proposer de regarder si cette fonction existe dans Excel. Tu pourrais alors récupérer tes 2 séries de données dans Excel, puis appliquer cette formule. Sinon, ben... Tu vas devoir faire le calcul...

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    soit une table access
    avec deux champs contenant des nombres
    la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    33
    34
    35
    36
    37
     
    Function coeffcorr(champ1 As String, champ2 As String, nomtable As String) As Single
    Dim base As DAO.Database
    Dim data As Recordset
    Dim moy1 As Single
    Dim moy2 As Single
    Dim car1 As Single
    Dim car2 As Single
    Dim covar As Single
    Dim nbdata As Long
    Dim ecart1 As Single
    Dim ecart2 As Single
    Set base = CurrentDb()
    Set data = base.OpenRecordset("select " & champ1 & "," & champ2 & " from " & nomtable & ";")
    data.MoveLast
    nbdata = data.RecordCount
    data.MoveFirst
    Do Until data.EOF
    moy1 = moy1 + data(champ1)
    moy2 = moy2 + data(champ2)
    data.MoveNext
    Loop
    moy1 = moy1 / nbdata
    moy2 = moy2 / nbdata
    data.MoveFirst
    Do Until data.EOF
    ecart1 = data(champ1) - moy1
    ecart2 = data(champ2) - moy2
    car1 = car1 + (ecart1 * ecart1)
    car2 = car2 + (ecart2 * ecart2)
    covar = covar + (ecart1 * ecart2)
    data.MoveNext
    Loop
    car1 = Sqr(car1 / nbdata)
    car2 = Sqr(car2 / nbdata)
    coeffcorr = (1 / nbdata) * covar / car1 / car2
    End Function

    devrait faire ton bonheur
    pour l'utiliser
    select coeffcorr("nomduchamp1";"nomduchamp2";"nom de la table"

    nb je te laisse le soin de gèrer les erreurs valeurs nulles ou autres

  8. #8
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Par défaut Excellent
    Et bien ça m'a l'air tout bon. Je m'empresse de tester cette fonction.

    Merci beaucoup

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    on peut aussi tester en sql
    soit une table matable avec deux valeurs val1 val2
    la requête suivante donne le résultat
    SELECT Sum(([val1]-(SELECT Avg(val1) AS M1 FROM matable;))^2) AS ec1, Sum(([val2]-(SELECT Avg(val2) AS M2 FROM matable;))^2) AS ec2, Sum(([val1]-(SELECT Avg(val1) AS M1 FROM matable;))*([val2]-(SELECT Avg(val2) AS M2 FROM matable;))) AS var, (SELECT Count(val1) AS nb FROM matable;) AS nombre, [var]/[nombre]/Sqr([ec1]/[nombre])/Sqr([ec2]/[nombre]) AS coeffcorr
    FROM matable;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [vba access] Pb d'execution requête SQL (requête simple)
    Par mike2302 dans le forum VBA Access
    Réponses: 9
    Dernier message: 28/06/2007, 14h58
  2. SQL en VBA - access 2003
    Par eddyG dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 12/09/2006, 13h05
  3. SQL dans VBA access 2002
    Par kryssy dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 28/06/2006, 21h25
  4. [VBA - ACCESS 2002] Problème RecordSet/Requête SQL
    Par SamLeChiseuji dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 16/06/2006, 10h01
  5. [VBA-A]SQL Between VBA Access Need Backup :)
    Par rider57 dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/05/2006, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo