Errore standard delle pendenze nella regressione lineare a tratti con punti di interruzione noti


9

La situazione

Ho un set di dati con una dipendente e una variabile indipendente . Voglio adattare una regressione lineare a tratti continua con breakpoint noti / fissi che si verificano in . I breakpoin sono noti senza incertezza, quindi non voglio stimarli. Quindi inserisco una regressione (OLS) del modulo Ecco un esempio inyk ( a 1 , a 2 , , a k ) y i = β 0 + β 1 x i + β 2 max ( x i - a 1 , 0 ) + β 3 max ( x i - a 2 , 0 ) + + Β k + 1 max ( x ixk(a1,a2,,ak)

yi=β0+β1xi+β2max(xia1,0)+β3max(xia2,0)++βk+1max(xiak,0)+ϵi
R
set.seed(123)
x <- c(1:10, 13:22)
y <- numeric(20)
y[1:10] <- 20:11 + rnorm(10, 0, 1.5)
y[11:20] <- seq(11, 15, len=10) + rnorm(10, 0, 2)

Supponiamo che il punto di interruzione si presenti a : 9.6k19.6

mod <- lm(y~x+I(pmax(x-9.6, 0)))
summary(mod)

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)          21.7057     1.1726  18.511 1.06e-12 ***
x                    -1.1003     0.1788  -6.155 1.06e-05 ***
I(pmax(x - 9.6, 0))   1.3760     0.2688   5.120 8.54e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

L'intercetta e la pendenza dei due segmenti sono: e per il primo e e per il secondo, rispettivamente.- 1,1 8,5 0,2721.71.18.50.27

Punto di rottura


Domande

  1. Come calcolare facilmente l'intercettazione e la pendenza di ciascun segmento? Il modello può essere riparemetrato per fare questo in un calcolo?
  2. Come calcolare l'errore standard di ogni pendenza di ciascun segmento?
  3. Come verificare se due pendenze adiacenti hanno le stesse pendenze (ovvero se il punto di interruzione può essere omesso)?

Risposte:


7
  1. Come calcolare facilmente l'intercettazione e la pendenza di ciascun segmento?

La pendenza di ciascun segmento viene calcolata semplicemente aggiungendo tutti i coefficienti fino alla posizione corrente. Quindi la stima pendenza è .- 1.1003 + 1.3760 = 0.2757x=151.1003+1.3760=0.2757

L'intercettazione è un po 'più difficile, ma è una combinazione lineare di coefficienti (che coinvolge i nodi).

Nel tuo esempio, la seconda riga incontra la prima in , quindi il punto rosso si trova sulla prima riga in . Poiché la seconda linea attraversa il punto con pendenza , la sua intercettazione è . Ovviamente, puoi mettere insieme questi passaggi e questo semplifica fino all'intercettazione per il secondo segmento = .21.7057 - 1.1003 × 9.6 = 11.1428 ( 9.6 , 11.428 ) 0.2757 11.1428 - 0.2757 × 9.6 = 8.496 β 0 - β 2 k 1 = 21.7057 - 1.3760 × 9.6x=9.621.70571.1003×9.6=11.1428(9.6,11.428)0.275711.14280.2757×9.6=8.496β0β2k1=21.70571.3760×9.6

Il modello può essere riparato nuovamente per fare questo in un calcolo?

Bene, sì, ma probabilmente è più facile in generale semplicemente calcolarlo dal modello.

2. Come calcolare l'errore standard di ciascuna pendenza di ciascun segmento?

Poiché la stima è una combinazione lineare di coefficienti di regressione , dove costituito da 1 e 0s, la varianza è . L'errore standard è la radice quadrata di quella somma di varianza e termini di covarianza. un un Var ( β ) unaβ^aaVar(β^)a

ad esempio nel tuo esempio, l'errore standard della pendenza del secondo segmento è:

Sb <- vcov(mod)[2:3,2:3]
sqrt(sum(Sb))

in alternativa in forma di matrice:

Sb <- vcov(mod)
a <- matrix(c(0,1,1),nr=3)
sqrt(t(a) %*% Sb %*% a)

3. Come verificare se due pendenze adiacenti hanno le stesse pendenze (ovvero se il punto di interruzione può essere omesso)?

Questo viene testato osservando il coefficiente nella tabella di quel segmento. Vedi questa linea:

I(pmax(x - 9.6, 0))   1.3760     0.2688   5.120 8.54e-05 ***

Questo è il cambiamento di pendenza a 9.6. Se la modifica è diversa da 0, le due pendenze non sono uguali. Quindi il valore p per una prova che il secondo segmento ha la stessa pendenza del primo è proprio alla fine di quella linea.


(+1) Grazie Glen per la risposta. Solo una piccola domanda riguardo al n. 2: Nel mio esempio, avrei bisogno della matrice varianza-covarianza di xe I(pmax(x-9.6,0)), è corretto?
COOLSerdash,

No. Ho modificato un esempio esplicito basato sul tuo esempio. Se desideri maggiori dettagli, chiedi.
Glen_b

Grazie mille per la modifica, che mi chiarisce un po 'per me. Quindi lo capisco correttamente: l'errore standard è lo stesso per ogni pendenza?
COOLSerdash,

1
No. La procedura è la stessa ma il valore non lo è. L'errore standard della pendenza del primo segmento è nella tabella di regressione (0.1788). L'errore standard della pendenza del secondo segmento è 0,1160. Se avessimo un terzo segmento, implicherebbe più termini varianza-covarianza nella sua somma (prima che venga presa la radice quadrata).
Glen_b

6

Il mio approccio ingenuo, che risponde alla domanda 1:

mod2 <- lm(y~I((x<9.6)*x)+as.numeric((x<9.6))+
             I((x>=9.6)*x)+as.numeric((x>=9.6))-1)
summary(mod2)

#                        Estimate Std. Error t value Pr(>|t|)    
# I((x < 9.6) * x)        -1.1040     0.2328  -4.743 0.000221 ***
# as.numeric((x < 9.6))   21.7188     1.3099  16.580 1.69e-11 ***
# I((x >= 9.6) * x)        0.2731     0.1560   1.751 0.099144 .  
# as.numeric((x >= 9.6))   8.5442     2.6790   3.189 0.005704 ** 

Ma non sono sicuro che le statistiche (in particolare i gradi di libertà) siano eseguite correttamente, se lo fai in questo modo.


(+1) Grazie mille per la tua risposta. Fornisce un modo molto conveniente per calcolare direttamente le intercettazioni e le pendenze, grazie!
COOLSerdash,
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.