Test del coefficiente del modello (pendenza di regressione) rispetto a un valore


20

In R, quando ho un (generalizzato) modello lineare ( lm, glm, gls, glmm, ...), come posso testare il coefficiente (pendenza di regressione) contro un valore diverso da 0? Nel riassunto del modello, i risultati del test t del coefficiente vengono automaticamente riportati, ma solo per il confronto con 0. Voglio confrontarlo con un altro valore.

So di poter usare un trucco con la riparametrizzazione y ~ xcome y - T*x ~ x, dov'è Til valore testato, ed eseguire questo modello riparato, ma cerco una soluzione più semplice, che potrebbe funzionare sul modello originale.


Risposte:


17

Ecco una soluzione più ampia che funzionerà con qualsiasi pacchetto, o anche se hai solo l'output di regressione (come da un documento).

Prendi il coefficiente e il suo errore standard.

Calcola . I df per la sono gli stessi che sarebbero per un test con H_0: \ beta = 0 . tH0:β=0t=β^βH0s.e.(β^)tH0:β=0


1
Grazie Glen, lo so da [questa grande risposta]. Ma come otterrò il valore p dal valore t?
Curioso,

2
@Curiouspt()
Affine

@Curious: Come dice Affine, la funzione R pt - o qualsiasi altra cosa che ti dia il valore di t cdfs. Molti pacchetti hanno questi e ci sono t-table ampiamente disponibili.
Glen_b -Restate Monica

Sarebbe bello se lm, lmer e gli altri accettassero direttamente un parametro di test diverso da zero.
skan

@skan è letteralmente una singola riga di codice R per ottenere un valore p; sarebbe una cosa semplice scrivere una piccola funzione per prendere l'output di summary.lm e produrre una nuova tabella secondo le specifiche esatte.
Glen_b -Restate Monica

10

È possibile utilizzare un semplice test t come proposto da Glen_b o un test Wald più generale.

Il test Wald consente di testare più ipotesi su più parametri. È formulato come: dove R seleziona (una combinazione di) coefficienti e q indica il valore da testare, essendo i coefficienti di regressione standard.βRβ=qβ

Nel tuo esempio, dove hai solo un'ipotesi su un parametro, R è un vettore di riga, con un valore di uno per il parametro in questione e zero altrove, e q è uno scalare con la restrizione da testare.

In R, è possibile eseguire un test di Wald con la funzione linearHypothesis () dal pacchetto di auto . Diciamo che si desidera verificare se il secondo coefficiente (indicato dall'argomento hypothesis.matrix ) è diverso da 0.1 (argomento rhs ):

reg <- lm(freeny)
coef(reg)

# wald test for lag.quarterly.revenue =0.1
>library(car)
>linearHypothesis(reg, hypothesis.matrix = c(0, 1, rep(0,3)), rhs=0.1)
#skip some result, look at last value on last row, of Pr(>F) 
  Res.Df       RSS Df  Sum of Sq      F Pr(>F)
1     35 0.0073811                            
2     34 0.0073750  1 6.0936e-06 0.0281 0.8679

Per il test t, questa funzione implementa il test t mostrato da Glen_b:

ttest <- function(reg, coefnum, val){
  co <- coef(summary(reg))
  tstat <- (co[coefnum,1]-val)/co[coefnum,2]
  2 * pt(abs(tstat), reg$df.residual, lower.tail = FALSE)
}

> ttest(reg, 2,0.1)
[1] 0.8678848

Assicuriamoci di aver ottenuto la procedura corretta confrontando Wald, il nostro test t e il test t predefinito R, per l'ipotesi standard che il secondo coefficiente sia zero:

> linearHypothesis(reg, hypothesis.matrix = c(0, 1, rep(0,3)), rhs=0)[["Pr(>F)"]][2]
[1] 0.3904361
> ttest(reg, 2,0)
[1] 0.3904361
## The 'right' answer from R:
> coef(summary(reg))[2,4]
[1] 0.3904361

Dovresti ottenere lo stesso risultato con le tre procedure.


sembra buono! Potete per favore spiegare il hypothesis.matrixparametro?
Curioso,

Non sono sicuro che lo faccia il test Wald. Intendevo usare il normale test t che è riportato di norma insieme ai parametri, ma non con 0 ma con qualche altro valore.
Curioso

@Curious Spero sia più chiaro ora?
Matifou,

3

Alla fine, di gran lunga la soluzione più semplice era fare la riparametrizzazione:

gls(I(y - T*x) ~ x, ...)

Produrrà gli stessi risultati?
skan

Ma stai sottraendo qualcosa di non indipendente. Non sarebbe un problema con le ipotesi per i minimi quadrati o per la collinearità? In che cosa differisce da lm (y ~ x + + offset (T * x))?
skan

1
@skan la regressione è condizionata a x, non c'è dipendenza lì; dovrebbe essere lo stesso dell'uso dell'offset.
Glen_b
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.