Um zu sehen, welche p-Werte korrekt sind (falls vorhanden), wiederholen wir die Berechnung für simulierte Daten, in denen die Nullhypothese wahr ist. In der vorliegenden Einstellung ist die Berechnung eine Anpassung der kleinsten Quadrate an (x, y) -Daten und die Nullhypothese lautet, dass die Steigung Null ist. In der Frage gibt es vier x-Werte 1,2,3,4 und der geschätzte Fehler liegt bei 0,7. Nehmen wir dies also in die Simulation auf.
Hier ist das Setup, das so geschrieben wurde, dass es für alle verständlich ist, auch für diejenigen, die es nicht kennen R
.
beta <- c(intercept=0, slope=0)
sigma <- 0.7
x <- 1:4
y.expected <- beta["intercept"] + beta["slope"] * x
Die Simulation generiert unabhängige Fehler, fügt sie hinzu y.expected
, ruft lm
auf, um die Anpassung vorzunehmen und summary
die p-Werte zu berechnen. Obwohl dies ineffizient ist, wird der tatsächlich verwendete Code getestet. Wir können immer noch Tausende von Iterationen in einer Sekunde durchführen:
n.sim <- 1e3
set.seed(17)
data.simulated <- matrix(rnorm(n.sim*length(y.expected), y.expected, sigma), ncol=n.sim)
slope.p.value <- function(e) coef(summary(lm(y.expected + e ~ x)))["x", "Pr(>|t|)"]
p.values <- apply(data.simulated, 2, slope.p.value)
01
h <- hist(p.values, breaks=seq(0, 1, length.out=20))
und für diejenigen, die sich vorstellen könnten, dass dies nicht einheitlich genug ist, hier der Chi-Quadrat-Test:
chisq.test(h$counts)
X-Quadrat = 13,042, df = 18, p-Wert = 0,7891
Der große p-Wert in diesem Test zeigt, dass diese Ergebnisse mit der erwarteten Gleichmäßigkeit übereinstimmen. Mit anderen Worten, lm
ist richtig.
Woher kommen dann die Unterschiede in den p-Werten? Lassen Sie uns die wahrscheinlichen Formeln überprüfen, die aufgerufen werden könnten, um einen p-Wert zu berechnen. In jedem Fall wird die Teststatistik sein
| t | = ∣∣∣∣β^- 0se( β^)∣∣∣∣,
β^β= 0
| t | = ∣∣∣3.050,87378∣∣∣= 3,491
für die Intercept-Schätzung und
| t | = ∣∣∣- 1,380,31906∣∣∣= 4,321
t42
pt(-abs(3.05/0.87378), 4-2) * 2
[1] 0.0732
t2H.0: β= 0H.EIN: β≠ 0lm
t
pnorm(-abs(3.05/0.87378)) * 2
[1] 0.000482
biglm
tbiglm
lm
0,05
Einige Lehren, die wir aus dieser kleinen Untersuchung ziehen können, sind:
Verwenden Sie keine Näherungswerte, die aus asymptotischen Analysen (wie der Standardnormalverteilung) mit kleinen Datensätzen abgeleitet wurden.
Kennen Sie Ihre Software.
pt(-3.491, 2)*2
zumpnorm(-3.491)*2
Beispiel mit.