Bonjour à tous,
Je suis à la recherche de conseils ou d'avis pour rendre le plus efficace possible le script R qui consiste à réaliser les différentes étapes décrites ci-dessous.
1) Sélection aléatoire de N de relevés écologiques voisins dans un cercle de diamètre Dmax (méthode near neighbour search , fonction nn2, paquet RANN)
2) Calcul d'un indice écologique moyen à partir de ces N relevés
a) création d'un tableau croisé espèces-relevés (fonction xtabs)
b) calcul de l'indice écologique pour chacune des paires de N relevés (fonction designdist, paquet vegan)
c) calcul de statistiques résumées des N! indices (moyenne, écart type, quantiles, min, max)
3) Calcul des distances géographiques euclidiennes entre relevés
a) calcul des distances entre les N relevés pris deux à deux (fonction spDists, paquet sp)
b) calcul des statistiques résumées sur les N! distances (moyenne, écart-type, maximum)
J'exécute ce script pour un nombre X d'unités qui ont chacune un nombre de relevés N et une étendue Dmax différents. Puis je répète le tout R fois dans un bootstrap pour évaluer la variabilité de mes résultats. Ce qui fait en tout RxX exécutions du script.
Le tout bien sûr prend pas mal de temps et nécessite de la mémoire vive sachant que le nombre de relevés N peut varier de 10 à 6000 (ce qui me génère des matrices de très grande taille aux étapes 2b et 3a).
J'essaye donc d'optimiser le script en utilisant au mieux des fonctions comme lapply et mclapply (version multi-core de lapply). Auriez-vous une expérience ou des conseils pour positionner au mieux lapply et mclapply dans ce type de calcul emboité ? Je suis contrainte, pour des raisons de mémoire vive, de réaliser, a minima les étapes 2b et 3a dans une boucle séquentielle et éviter ainsi des listes de taille ingérable (X*N!).
Statistiquement vôtre,
SoL