2017-07-15 5 views
0

geschrieben I diesen Code eine Prüfgröße über zwei zufällig verteilten Beobachtungen x und yR: Berechnung von p-Wert unter Verwendung von Simulationen

mean.test <- function(x, y, B=10000, 
alternative=c("two.sided","less","greater")) 
{ 
p.value <- 0 
alternative <- match.arg(alternative) 
s <- replicate(B, (mean(sample(c(x,y), B, replace=TRUE))-mean(sample(c(x,y), B, replace=TRUE)))) 
t <- mean(x) - mean(y) 
p.value <- 2*(1- pnorm(abs(quantile(T,0.01)), mean = 0, sd = 1, lower.tail = 
TRUE, log.p = FALSE)) #try to calculate p value 
data.name <- deparse(substitute(c(x,y))) 
names(t) <- "difference in means" 
zero <- 0 
names(zero) <- "difference in means" 
return(structure(list(statistic = t, p.value = p.value, 
method = "mean test", data.name = data.name, 
observed = c(x,y), alternative = alternative, 
null.value = zero), 
class = "htest")) 
} 

der Code verwendet eine Monte-Carlo-Simulationen auszuführen, um die Verteilungsfunktion der generieren Teststatistik Mittelwert (x) - Mittelwert (y) und berechnet dann den p-Wert, aber anscheinend vermisse ich diesen p-Wert definiert, weil für:

mean test 
data: c(rnorm(1000, 3, 2), rnorm(2000, 4, 3)) 
difference in means = -1.0967, p-value < 2.2e-16 
alternative hypothesis: true difference in means is not equal to 0 
:

> set.seed(0) 
> mean.test(rnorm(1000,3,2),rnorm(2000,4,3)) 

die Ausgabe sollte wie folgt aussehen

, aber ich habe diese statt:

 mean test 
data: c(rnorm(1000, 3, 2), rnorm(2000, 4, 3)) 
difference in means = -1.0967, p-value = 0.8087 
alternative hypothesis: true difference in means is not equal to 0 

kann jemand den Fehler zu mir erklären?

+0

Und es scheint seltsam, dass Sie 's' nicht in Ihrem Code verwenden. –

Antwort

2

Soweit ich das beurteilen kann, hat der Code zahlreiche Fehler und Fehler darin:

  • quantile(T, 0.01) - hier T == TRUE, so dass Sie die Quantil 1.
  • sind Berechnung Das Objekt s ist nie benutzt.
  • mean(sample(c(x,y), B, replace=TRUE)) Was möchten Sie hier tun? Die c() Funktion kombiniert x und y. Sampling macht keinen Sinn, da Sie nicht wissen, aus welcher Population sie stammen
  • Wenn Sie die Teststatistik t berechnen, sollte dies von der Varianz (und Stichprobengröße) abhängen.
Verwandte Themen