2017-12-10 17 views
3

연속적인 결과 변수와 두 개의 요소 예측자를 포함하는 시계열 데이터 집합이 있습니다 (하나는 6 단계와 하나는 2 단계).일반화 된 가산 모델에서 두 요소 변수의 비선형 상호 작용을 지정하는 방법 [R]

연속 변수의 두 요소 변수의 비선형 상호 작용을 모델링하고 싶습니다. 나는의 비선형 상호 작용을 추가하고 싶습니다 이제

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 

:

이 모델은 내가 지금까지 가지고있다 (때문에 데이터에 대한 저작권 제한에, 나는 데이터 집합의 부분 집합을 사용하고 있습니다) factor_1factor_2time과 함께 사용하여 모든 조합에서 매끄러운 효과를 낼 수 있습니다 (예 : factor_2은 일부 레벨이 factor_1 인 경우 더 강한 비선형 효과를 나타냄). s(time, factor_1, factor_2) 또는 s(time, factor_1, by = factor_2)과 같은 문자가 작동하지 않습니다.

+0

비선형 상호 작용의 존재를 어떻게 확인 했습니까? 모델에 어떻게 통합 할 수 있습니까? –

+0

질문에 샘플 데이터를 추가하십시오. –

+0

비선형 상호 작용의 존재 여부를 확인하는 것은 가설 테스트를위한 모델 비교의 일부입니다. 우리는 요인들 간의 상호 작용을 추가하는 것이 모델을 향상시키는 지 여부를 알고 싶습니다. – Stefano

답변

0

interaction()을 사용하는 두 가지 요소의 상호 작용을 포함하면 작업을 수행하는 것처럼 보입니다.

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 
)