2017-10-10 4 views
0

Ok, donc je suis tout nouveau à R et j'ai du mal à implémenter une boucle for imbriquée pour une simulation. Le but de ce code est supposé être que pour deux distributions bêta, chaque résultat ayant une probabilité supérieure à 1/2, un compteur est incrémenté. Ensuite, en fonction de ce compteur, une probabilité est calculée en divisant par N (la taille de la population). Cependant, je voudrais que ceci fonctionne pour une gamme de n valeurs et crée une distribution de ces probabilités (p) qui résultent pour chaque n valeur. J'ai des difficultés à mettre en œuvre cela. Toute aide serait grandement appréciée !!For-loops imbriqués dans R

Code pour intérieur pour boucle:

n = 5000 
    counter = 0 
    x = rbeta(n,3,1) 
    y = rbeta(n,3,1) 

    for (i in 1:n) 
    { 
     if((y[i]-x[i] >= 1/2)) 
     { 
     counter = counter +1 
     } 
    } 
    p = counter/n 

Répondre

0

Si vous voulez calculer p, vous pouvez juste faire p <- mean(y - x > 1/2). Pour ce faire, pour une gamme de valeurs de n, créer un vecteur de valeurs n.range et faire

n.range <- seq(100, 5000, 100) 
p <- rep(NA, length(n.range)) 
for(n in n.range){ 
    x <- rbeta(n,3,1) 
    y <- rbeta(n,3,1) 
    p[n == n.range] <- mean(y - x > 1/2) 
} 
hist(p) 
+0

C'est exactement ce que je cherchais à faire! Merci pour l'aide! –