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

R Discussion :

Matrice de variance-covariance


Sujet :

R

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 14
    Par défaut Matrice de variance-covariance
    Bonjour à tous,

    Alors voilà, je vous explique mon problème.
    J'ai 5 vecteurs (que l'on va appeler le vecteur A, B, C, D et E) composé chacun de 1024 valeurs (chaque vecteur correspond à un patient).
    J'ai ensuite un vecteur moyen (que l'on va appeler le vecteur X) composé de lui aussi 1024 valeurs (celui-ci est le vecteur moyen de tous les patients).
    J'aimerais donc faire une matrice de variance-covariance à partir de ces vecteurs. Par exemple, à l'endroit [1,1] de ma matrice, j'aurai ceci: ((A[1] - X[1])² + (B[1] - X[1])² + ... + (E[1] - X[1])²); à l'endroit [1,2] de ma matrice, j'aurai ceci: ((A[1] - X[1])(A[2] - X[2])) + ((B[1] - X[1])(B[2] - X[2])) + ... + ((E[1] - X[1])(E[2] - X[2])); etc.
    Cependant, je ne vois pas du tout comment faire ça de manière automatisée (avec un for?)

    Si vous avez une idée, n'hésitez pas!

    Merci!

  2. #2
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    259
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 259
    Par défaut
    J'essaye de comprendre ce que tu veux...
    Soit la matrice suivante avec en vertical chaque individu sauf la dernière colonne qui représente la moyenne de chaque ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    A1 B1 C1 X1
    A2 B2 C2 X2
    A3 B3 C3 X3
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    5 8 2 5
    10 13 6 9.666
    12 18 10 13.333
    donc pour [1,2] on aurait :
    (A1 - X1)(A2 - X2) + (B1 - X1)(B2 - X2) + (C1 - X1)(C2 - X2)
    soit (5-5)(10-9.666)+(8-5)(13-9.666)+(2-5)(6-9.666)
    soit 21 ?
    Il sera possible d'avoir des valeurs négatives ?

    euh je comprends pas très bien le mélange entre les valeurs de la ligne 1 et de la ligne 2 à moins que j'ai mal retranscris ta question...

  3. #3
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    259
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 259
    Par défaut
    Je fais comme si on partait de 0, création de la matrice de départ.
    On crée 3 vecteurs ( 3 individus) avec 6 valeurs chacun :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    > A<-c(5,10,12,14,18,20)
    > B<-c(8, 13, 18, 19,22,23)
    > C<-c(2,  6, 10, 12,13,18)
    On créé une matrice avec ces 3 vecteurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    matrice<-NULL
    > matrice<-cbind(matrice,A)
    > matrice<-cbind(matrice,B)
    > matrice<-cbind(matrice,C)
    > matrice
          A  B  C
    [1,]  5  8  2
    [2,] 10 13  6
    [3,] 12 18 10
    [4,] 14 19 12
    [5,] 18 22 13
    [6,] 20 23 18
    On calcule la moyenne sur chaque ligne et on l'ajoute en dernière colonne de la matrice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    > matrice<-cbind(matrice,apply(matrice,1,mean))
    > matrice
          A  B  C          
    [1,]  5  8  2  5.000000
    [2,] 10 13  6  9.666667
    [3,] 12 18 10 13.333333
    [4,] 14 19 12 15.000000
    [5,] 18 22 13 17.666667
    [6,] 20 23 18 20.333333
    On initialise quelques variables, nombre de colonnes (colonnes-1 car la dernière colonne est la moyenne de chaque ligne), nombre de lignes et une matrice resultat de bonne dimension :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    > ligne=dim(matrice)[1]
    > colonne=dim(matrice)[2]-1
    > ligne
    [1] 6
    > colonne
    [1] 3
    > res<-matrix(nrow=ligne,ncol=colonne)
    On boucle sur chaque ligne/colonne pour accèder à chaque élément de la matrice (boucle i et j)
    On boucle sur chaque colonne pour l'incrémentation de la somme (boucle k)
    On met la somme résultante dans la matrice resultat
    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
     
    > for ( i in 1:ligne) {
    + for ( j in 1:colonne) {
    + somme<-0
    + for ( k in 1:colonne ) {
    + somme<-somme+(matrice[i,k]-matrice[i,colonne+1])*(matrice[j,k]-matrice[j,colonne+1])
    + }
    + res[i,j]<-somme
    + }
    + }
    > res
         [,1]     [,2]     [,3]
    [1,]   18 21.00000 24.00000
    [2,]   21 24.66667 27.33333
    [3,]   24 27.33333 34.66667
    [4,]   21 24.00000 30.00000
    [5,]   27 31.66667 35.33333
    [6,]   15 17.33333 20.66667
    A vérifier avec une matrice témoin pour valider...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 14
    Par défaut
    Wahou, j'ai essayé de mon côté avec les bons vecteurs et ça marche NIQUEL!
    Franchement, chapeau, j'pensais pas que c'était possible de faire une matrice comme celle-ci!

    Merci beaucoup!

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

Discussions similaires

  1. Matrice de variance covariance spérique
    Par takout dans le forum Mathématiques
    Réponses: 0
    Dernier message: 25/07/2013, 14h19
  2. Calcul d'une matrice de Variance Covariance
    Par ANOVA dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/05/2010, 17h22
  3. Newmat matrice de variance covariance, Cholesky.
    Par tikam75007 dans le forum C++/CLI
    Réponses: 0
    Dernier message: 28/04/2009, 16h01
  4. Calcul matrice variance-covariance
    Par Alucard9800XT dans le forum MATLAB
    Réponses: 2
    Dernier message: 10/05/2007, 12h18
  5. Remplir une matrice de variance/covariance
    Par ToTo13 dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 31/07/2006, 17h55

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