Bonjour

Je me suis inscrit il y a peu et c’est donc ma première question. J’espère que tout sera clair, si non, je ferais en sorte d’apporter les informations manquantes.

Je cherche à réaliser un test de puissance afin de savoir le nombre d’échantillons nécessaires pour mon échantillonnage (Intervalle de confiance correct…)

1ère partie :

• Je possède un jeu de données sous forme de matrice de 20 lignes et 15 colonnes (noté a=read.table…)




• Je cherche à réaliser un tirage aléatoire de X valeurs dans des sous-unités (5*5, soit 12 sous-unités). Ne sachant pas comment faire pour que, dans la matrice principale, R comprennent qu’il y a 12 sous-unités, j’ai créé les sous-unités de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
#Définition des sous matrices
A1=a[1:5,1:5];A2=a[6:10,1:5];A3=a[11:15,1:5];A4=a[16:20,1:5];A5=a[1:5,6:10];A6=a[6:10,6:10];A7=a[11:15,6:10];A8=a[16:20,6:10];A9=a[1:5,11:15];A10=a[6:10,11:15];A11=a[11:15,11:15];A12=a[16:20,11:15]
• A priori, je ne peux pas utiliser la fonction sample comme ça, je dois
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
transformer ces "sous matrices" en réelles matrices :
A1 <- as.matrix(A1);A2 <- as.matrix(A2);A3 <- as.matrix(A3);A4 <- as.matrix(A4);
A5 <- as.matrix(A5);A6 <- as.matrix(A6);A7 <- as.matrix(A7);A8 <- as.matrix(A8);
A9 <- as.matrix(A9);A10 <- as.matrix(A10);A11 <- as.matrix(A11);A12 <- as.matrix(A12);
et là je peux réaliser la fonction sample, c'est bien cela ? (je bloquais avant parce que je n'utilisais pas as.matrix et il ne devait pas comprendre que c'était une matrice vu qu'il me sélectionnait toute la colonne et non une seule valeur).

2ème partie :
• Là, la fonction sample fonctionne. Je l'utilise en définissant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
samp<-list(s1=sample(A1,3,replace=F),sample(A2,3,replace=F),...,s12=sample(A12,3,replace=F))
J'ai donc une liste avec mes 12 strates composées chacune d'une valeur.
Je voudrais sélectionner uniquement celles où il y a au moins une valeur positive. J'avais pensé à utiliser la fonction if, mais je ne sais pas trop comment lui dire "si au moins une valeur est positive, je garde le lot, sinon je ne le prends pas en compte"

Ceci me permettrait par la suite de réaliser la formule suivante : (pour exemple : 3 strates sélectionnées)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
N <- 12 #Nombre de strates 
Nh <-25 #Nombre de mailles par strate
nh <- X #Nombre de mailles secondaires par strate  
v <- 3 #nombre de strates où l’espèce est observée lors de la première étape d’échantillonnage
M <- v * Nh + (N-v) * nh #nombre de mailles échantillonnées
mh <- c(7,14,14) #nombre de mailles dans le réseau (non vides dans la strate)
y <- c(15,66,73) #valeurs de la variable d’intérêt observée
pik <- 1 - choose(Nh-mh,3)/choose(Nh,nh) 
tauhat <- sum(y/pik) #estimation de la population totale (HT)
var.tauhat <- sum(((1-pik)*y^2)/(pik^2))
c(tauhat,sqrt(var.tauhat)) #Estimation du total et Ecart-type
IC95<- c(tauhat-((1.96*sqrt(var.tauhat))/sqrt(M)), tauhat+((1.96*sqrt(var.tauhat))/sqrt(M)))
IC99<- c(tauhat-((2.58 *sqrt(var.tauhat))/sqrt(M)), tauhat+((2.58 *sqrt(var.tauhat))/sqrt(M)))
Dois-je définir mh et y manuellement à chaque fois ou est-ce possible de lui indiquer que si l'unité A4 est sélectionnée (avec 1 valeur positive parmi les X sélectionnées) alors il y a mh=7 et y=66 ? (et donc définir chaque mh et y pour chaque strate)
Pareil pour v, puis-je lui indiquer que si une strate est sélectionnée, il me compte comme 1 et donc que v soit la somme des 1 ?


A terme je voudrais lancer la simulation un certain nombre de fois pour avoir différents intervalles de confiance pour différents nombres de sous-unités tirées aléatoirement (si je prends 3 valeurs dans la sous-unité ou 6 valeurs pour 100 simulations, je n’aurais pas le même intervalle de confiance et donc quel est le nombre adéquat à réaliser). Autrement dit faire 100 tirages aléatoires et calculer les IC pour chacun des tirages.


Voilà, j’espère avoir été assez clair, c’est un peu flou pour moi au final, surtout si je dois réaliser une boucle pour la simulation.

Je vous prie de m’excuser pour la non clarté si c’est le cas.

Merci d'avance,
Cordialement.