Нелинейные модели с двудольным воздействием на подмножество параметров
Я работаю в R
с нелинейными моделями таких нас:
Y = Alpha1*time + Alpha2*sin(2*pi*time/Alpha3) + Alpha4*(-1)^time
И я хотел бы указать, влияет ли переменная Бернулли на Alpha1*time
и перехватить или нет. Такая переменная Бернулли может быть:
varia<-rep("BEFORE","AFTER"),each=30)
имеющий
Y<- -2.5+rnorm(60)+2*sin(2*pi*time/8)+2.5*(-1)^time
time<-seq(1,60)
я нашел это nls
может соответствовать этой модели, но без влияния этой категориальной переменной, я также обнаружил, что nlme
пакет может оценивать эффекты по переменным, а не по нелинейной модели. Мой вопрос: какой из этих пакетов может мне помочь? и как я могу добавить эту переменную Бернулли в коде? С уважением и благодарностью.
1 ответ
Ниже .lin4
будет сумма, которая AFTER
добавляет к Y
:
# test data
set.seed(123)
time<-seq(1,60)
Y<- -2.5+rnorm(60)+2*sin(2*pi*time/8)+2.5*(-1)^time
varia <- rep(c('BEFORE', 'AFTER'), each = 30)
fm <- nls(Y ~ cbind(1, sin(2 * pi * time/Alpha3), (-1)^time, varia == "AFTER"),
start = list(Alpha3 = 8), alg = "plinear")
summary(fm)
давая:
Formula: Y ~ cbind(1, sin(2 * pi * time/Alpha3), (-1)^time, (varia ==
"AFTER"))
Parameters:
Estimate Std. Error t value Pr(>|t|)
Alpha3 8.03367 0.02583 310.984 < 2e-16 ***
.lin1 -2.55242 0.16740 -15.247 < 2e-16 ***
.lin2 1.88528 0.16726 11.272 6.45e-16 ***
.lin3 2.53734 0.11828 21.453 < 2e-16 ***
.lin4 0.23992 0.23673 1.013 0.315
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.9159 on 55 degrees of freedom
Number of iterations to convergence: 3
Achieved convergence tolerance: 6.226e-07
так что в этом случае все параметры значимы, кроме последнего, как и ожидалось.
ПЕРЕСМОТРЕНО Пересмотрено после перечитывания вопроса.