Per vedere quali valori p sono corretti (se uno dei due), ripetiamo il calcolo per i dati simulati in cui l'ipotesi nulla è vera. Nella presente impostazione, il calcolo è un minimo quadrato adatto ai dati (x, y) e l'ipotesi nulla è che la pendenza sia zero. Nella domanda ci sono quattro valori x 1,2,3,4 e l'errore stimato è di circa 0,7, quindi includiamolo nella simulazione.
Ecco la configurazione, scritta per essere comprensibile a tutti, anche a chi non ha familiarità R.
beta <- c(intercept=0, slope=0)
sigma <- 0.7
x <- 1:4
y.expected <- beta["intercept"] + beta["slope"] * x
La simulazione genera errori indipendenti, li aggiunge a y.expected, invoca lmper adattarsi e summaryper calcolare i valori p. Sebbene ciò sia inefficiente, sta testando il codice effettivo utilizzato. Possiamo ancora fare migliaia di iterazioni in un secondo:
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)
I valori p calcolati correttamente agiranno come numeri casuali uniformi tra e101 quando l'ipotesi nulla è vera. Un istogramma di questi valori p ci consentirà di verificarlo visivamente - sembra approssimativamente orizzontale - e un test chi-quadrato di uniformità consentirà una valutazione più formale. Ecco l'istogramma:
h <- hist(p.values, breaks=seq(0, 1, length.out=20))

e, per coloro che potrebbero immaginare che questo non sia sufficientemente uniforme, ecco il test chi-quadrato:
chisq.test(h$counts)
Quadrato X = 13,042, df = 18, valore p = 0,7891
Il grande valore p in questo test mostra che questi risultati sono coerenti con l'uniformità attesa. In altre parole, lmè corretto.
Da dove vengono quindi le differenze nei valori p? Controlliamo le formule probabili che potrebbero essere invocate per calcolare un valore p. In ogni caso la statistica del test sarà
| t | = ∣|||β^- 0SE( β^)||||,
uguale alla discrepanza tra il coefficiente stimato e l'ipotizzato (e valore corretto) , espresso come multiplo dell'errore standard della stima del coefficiente. Nella domanda questi valori sono ß=0β^β= 0
| t | = ∣||3.050,87,378 mila|||= 3.491
per la stima dell'intercettazione e
| t | = ∣||- 1,380,31,906 mila|||= 4.321
per la stima della pendenza. Normalmente questi sarebbero confrontati con la distribuzione Student il cui parametro gradi di libertà è (la quantità di dati) meno (il numero di coefficienti stimati). Calcoliamolo per l'intercettazione:t42
pt(-abs(3.05/0.87378), 4-2) * 2
[1] 0.0732
(Questo calcolo moltiplica la probabilità Studente della coda sinistra per perché si tratta di un test di rispetto all'alternativa bilaterale ) Concorda con l' output.tH 0 : β = 0 H A : β ≠ 02H0: β= 0HUN: β≠ 0lm
Un calcolo alternativo userebbe la distribuzione normale standard per approssimare la distribuzione Student . Vediamo cosa produce:t
pnorm(-abs(3.05/0.87378)) * 2
[1] 0.000482
Abbastanza sicuro: biglmpresuppone che la distribuzione nulla della statistica sia normale. Quanto di un errore è questo? Rieseguire la simulazione precedente usando al posto di fornisce questo istogramma di valori p:tbiglmlm

Quasi il 18% di questi valori p è inferiore a , una soglia standard di "significatività". Questo è un errore enorme.0.05
Alcune lezioni che possiamo imparare da questa piccola indagine sono:
Non utilizzare approssimazioni derivate da analisi asintotiche (come la distribuzione normale standard) con piccoli set di dati.
Conosci il tuo software.
pt(-3.491, 2)*2adpnorm(-3.491)*2esempio.