Bigmemory et fonctions de ade4

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Stéphane Rapelli
Messages : 25
Enregistré le : 16 Juil 2009, 09:24
Contact :

Bigmemory et fonctions de ade4

Messagepar Stéphane Rapelli » 21 Mai 2010, 13:40

Bonjour.

Je souhaite obtenir la matrice des distances suite à une AFC réalisée par le biais du paquetage ade4. J'utilise donc les commandes suivantes à partir d'une dataframe nommée observations :

Code : Tout sélectionner

# Création du tableau disjonctif complet :
disjon<-acm.disjonctif(observations)
#
# Réalisation de l'AFC :
acf_obs<-dudi.coa(disjon, scann = FALSE)
#
# Calcul des distances :
distchi <- dist.dudi(acf_obs)
disstchi2<-distchi^2


Les deux premières étapes ne posent aucun problèmes. En revanche, la quatrième commande renvoie le message : Erreur dans dist.dudi(acf_obs) : allocMatrix : trop d'éléments fournis.

J'en déduis un manque de mémoire face à un objet trop important. J'essaie donc d'utiliser le paquetage bigmemory, mais j'ai vraiment du mal à l'appliquer à mon problème. Auriez-vous quelques suggestions ?

Merci par avance de vos réponses.

Jean Thioulouse
Messages : 10
Enregistré le : 02 Juin 2009, 13:40

Messagepar Jean Thioulouse » 27 Mai 2010, 14:42

Pourquoi faites vous l'AFC du tableau disjonctif complet ?

Quelles sont les dimensions de observations ?

Vous cherchez les distances entre quoi ?

Stéphane Rapelli
Messages : 25
Enregistré le : 16 Juil 2009, 09:24
Contact :

Messagepar Stéphane Rapelli » 27 Mai 2010, 15:14

Bonjour.

Pourquoi faites vous l'AFC du tableau disjonctif complet ?

Je souhaite obtenir la matrice des distances du chi2 entre les observations (lignes) prises deux à deux.

Le calcul proposé par la commande dist(donnees, method="chi-squared") du paquetage proxy ne correspond pas à la distance classiquement utilisée. En outre, les résultats produits sont partiellement aberrants.

La solution couramment utilisée consiste donc à réaliser une AFC par le biais d'ade4, la distance retenue pour les calculs étant celle que je souhaite obtenir (voir
https://stat.ethz.ch/pipermail/r-help/2005-January/063976.html ou http://forums.cirad.fr/logiciel-R/viewtopic.php?t=287&highlight=distance+chideux)


Quelles sont les dimensions de observations ?

Les calculs doivent être effectués sur 54 250 observations intégrant 5 variables de 3 modalités chacunes, soit un tableau disjonctif de taille 54 250 x 15.

Vous cherchez les distances entre quoi ?

Entre les observations (lignes).

En vous remerciant de vous pencher sur mon problème.

Jean Thioulouse
Messages : 10
Enregistré le : 02 Juin 2009, 13:40

Messagepar Jean Thioulouse » 27 Mai 2010, 15:59

L'AFC d'un tableau disjonctif complet réalise en fait l'ACM du tableau qualitatif correspondant, et il vaut mieux faire l'ACM directement (avec dudi.acm).

Si vous avez 54250 lignes, la taille de la matrice de distances sera de l'ordre de 54250^2. Il faudra donc environ 20 Go de mémoire pour la stocker, et beaucoup de temps pour la manipuler.

Il faut donc que le jeu en vaille vraiment la chandelle...

Stéphane Rapelli
Messages : 25
Enregistré le : 16 Juil 2009, 09:24
Contact :

Messagepar Stéphane Rapelli » 27 Mai 2010, 18:19

L'AFC d'un tableau disjonctif complet réalise en fait l'ACM du tableau qualitatif correspondant, et il vaut mieux faire l'ACM directement (avec dudi.acm).


Absolument, formellement les calculs sont équivalents, au moins pour ce qui concerne les axes obtenus. J'avais pris l'option de l'AFC afin de limiter les développements dans la présentation des outils utilisés.

Il faut donc que le jeu en vaille vraiment la chandelle

Il le vaut. Pour l'instant j'ai opté pour une solution fondée sur la construction d'échantillons issus de tirages alétoires avec remise.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité