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.