2017-12-10 3 views
3

Ich habe einen Zeitreihendatensatz, der eine Ergebnisvariable enthält, die kontinuierlich ist, und zwei Faktorprädiktoren (einen mit 6 Ebenen und einen mit 2 Ebenen).Wie man die nichtlineare Interaktion zweier Faktorvariablen in verallgemeinerten additiven Modellen spezifiziert [R]

Ich möchte die nichtlineare Wechselwirkung der beiden Faktorvariablen auf die kontinuierliche Variable modellieren.

Dies ist das Modell, das ich habe bisher (aufgrund von urheberrechtlichen Beschränkungen auf den Daten, verwende ich eine Teilmenge des Datensatzes):

library(mgcv) 
load(url("http://ftp.stefanocoretta.altervista.org/documents/df.RData")) 

model <- bam(
    outcome ~ 
     factor_1 + factor_2 + 
     s(time, k = 9) + 
     s(time, by = factor_1, k = 9) + 
     s(time, by = factor_2, k = 9), 
    data = df 
) 

summary(model) 
Family: gaussian 
Link function: identity 

Formula: 
outcome ~ factor_1 + factor_2 + s(time, k = 9) + s(time, by = factor_1, 
    k = 9) + s(time, by = factor_2, k = 9) 

Parametric coefficients: 
      Estimate Std. Error t value Pr(>|t|)  
(Intercept) 2612.72  23.03 113.465 <2e-16 *** 
factor_1b  33.19  27.00 1.229  0.22  
factor_2z -488.52  27.00 -18.093 <2e-16 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Approximate significance of smooth terms: 
        edf Ref.df  F p-value  
s(time)   2.564 3.184 6.408 0.000274 *** 
s(time):factor_1b 1.000 1.001 0.295 0.587839  
s(time):factor_2z 2.246 2.792 34.281 < 2e-16 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

R-sq.(adj) = 0.679 Deviance explained = 69.1% 
fREML = 1359.6 Scale est. = 37580  n = 207 

Nun würde Ich mag eine nichtlineare Wechselwirkung von hinzufügen factor_1 und factor_2 mit time für den Effekt auf outcome, so dass sich die Glättungsfaktoren in jeder Kombination unterscheiden könnten (zum Beispiel: factor_2 hat einen stärkeren nichtlinearen Effekt für einige Stufen von factor_1). So etwas wie s(time, factor_1, factor_2) oder s(time, factor_1, by = factor_2) funktioniert nicht.

+0

Wie haben Sie die Existenz einer nichtlinearen Interaktion überprüft? und wie integrieren Sie es in Ihr Modell? –

+0

Bitte fügen Sie Ihre Beispieldaten in Ihre Frage ein. –

+0

Die Überprüfung der Existenz einer nichtlinearen Interaktion wird Teil des Modellvergleichs für Hypothesentests sein. Wir möchten wissen, ob das Hinzufügen einer Interaktion zwischen den Faktoren das Modell verbessert oder nicht. – Stefano

Antwort

0

Eine Interaktion von zwei Faktoren mit interaction() scheint die Arbeit zu tun.

library(mgcv) 
load(url("http://ftp.stefanocoretta.altervista.org/documents/df.RData")) 

model <- bam(
    outcome ~ 
     factor_1 + factor_2 + 
     s(time, k = 9) + 
     s(time, by = factor_1, k = 9) + 
     s(time, by = factor_2, k = 9) + 
     s(time, by = interaction(factor_1, factor_2), k = 9), 
    data = df 
) 
Verwandte Themen