2010-05-19 6 views
0

Pour ce projet, je suis obligé d'utiliser un script R pour simuler l'efficacité du test t. Je dois utiliser une boucle sera utilisée pour effectuer les 2000 heures suivantes:Simuler test t valeurs p en utilisant une boucle

Est-ce que l'apparence de la boucle quelque chose comme ça

i <- 1 
for (i <= 2001) { 
    x <-rf(5,df1=5,df2=10) 
    b <- df2 
    p.value <-t.test(x,mu=(b/(b-2))$p.value 
    i <- i+1 
} 
+0

Ceci est une question de devoirs évidente. – csgillespie

+0

@Colin Ouais, mais ce n'est pas une mauvaise chose, aussi loin qu'ils vont. http://meta.stackexchange.com/questions/10811/how-to-ask-and-answer-homework-questions – wkmor1

+0

Eh bien, même si c'est ses devoirs au moins, il a essayé de le faire et a inclus un morceau de code ... +1 pour essayer – nico

Répondre

6

Dans la façon dont vous l'avez écrit, ce serait une boucle « while » .

Pour boucles R ont la syntaxe suivante:

for (i in 1:2000) { 
    df1 <- 5 
    df2 <- 10 
    x <-rf(5, df1=df1, df2=df2) 
    b <- df2 
    p.value <- t.test(x, mu=(b/(b-2)))$p.value 
} 

De plus, il pourrait être plus efficace d'employer un construire « appliquer », par exemple avec répliquée et comprennent les df comme arguments de la fonction:

get.p.value <- function(df1, df2) { 
     x <- rf(5, df1=df1, df2=df2) 
     p.value <- t.test(x, mu=(df2/(df2-2)))$p.value 
    } 
replicate (2000, get.p.value(df1 = 5, df2 = 10)) 

Ce n'est pas toujours vrai, mais il simplifie la récupération des p.values.

+2

Dans votre première solution, vous pourriez prendre des affectations hors de la boucle.Il n'est pas nécessaire d'attribuer 2000 fois la même valeur. comme 'df1 <-5; df2 <-b <-10; pour (i dans 1: 2000) p.value <- t.test (rf (5, df1 = df1, df2 = df2), mu = (b/(b-2))) p.value' $ – Marek

+0

tas de grâce qui aide plus que vous pouvez imangine, – Simon

+0

Et pour la version 'for' (dans ma modification aussi) les résultats ne sont pas sauver. donc, après la boucle vous restez avec une valeur +1 = – Marek

Questions connexes