我正在尝试创建一个线性模型,该模型包含幅度随时间减小的正弦波。
我能够使用以下代码成功地将一个简单的正弦波合并到我的模型中:
#sine curve equation resolving 12 months
xc<-cos(2*pi*stan$num/12)
xs<-sin(2*pi*stan$num/12)
#other variables
Time_bb <- as.Date(stan$C_Month_Year, format = "%m/%d/%y")
Count1_bb <- stan$stan_calls
#fitted complete model
cos.f_bb <- fitted(cos.m_bb)
cos.m_bb <- lm(Count1_bb ~ Time_bb + xc + xs)
cos.f_bb <- fitted(cos.m_bb)
stan$fit_m <- cos.f_bb
p5 <- ggplot(stan, aes(x = Time_bb, y = stan_calls) ) +
geom_line(data = stan, color = 'red', aes(y = fit_m)) +
geom_smooth(method = lm, se = FALSE) +
geom_point(size=1)
此代码产生下图:
但是,我相信如果我能够将随时间递减的幅度结合起来,我会得到更好的模型拟合。但是,我不知道如何正确编码,更重要的是控制幅度下降的幅度。
我尝试了Draw sine wave with increasing Amplitude and frequency over time中详述的一些建议。并使用以下代码:
#sine curve equation resolving 12 months
f <- 12
f_c <- 1
T <- 1/f
t <- seq(0, 12, T)
A <- t
stan$num/12
carrier <- cos(2*pi*f_c*t)
out <- A*carrier
out <- rev(out)
out<- out[0:65]
#other variables
Time_bb <- as.Date(stan$C_Month_Year, format = "%m/%d/%y")
Count1_bb <- stan$stan_calls
#complete model
cos.m_bb <- lm(Count1_bb ~ Time_bb + out)
tidy(cos.m_bb, conf.int = TRUE)
#fitted complete model
cos.f_bb <- fitted(cos.m_bb)
fit.lm_bb <- lm(Count1_bb~out)
stan$fit_bb <- fitted(fit.lm_bb)
stan$fit.res_bb <- resid(fit.lm_bb)
cos.m_bb <- lm(Count1_bb ~ Time_bb + out)
cos.f_bb <- fitted(cos.m_bb)
stan$fit_m <- cos.f_bb
p5 <- ggplot(stan, aes(x = Time_bb, y = stan_calls) ) +
geom_line(data = stan, color = 'red', aes(y = fit_m)) +
geom_point()
我能够创建以下图表:
但是,我不明白如何正确操作 f、T、f_c、t 和 A 以获得更好的模型拟合。任何帮助将不胜感激!
我正在使用的数据库负责人如下所示:
head(stan)
C_Month_Year stan_calls
1 7/1/14 0.1154295
2 8/1/14 0.2049913
3 9/1/14 0.1786142
4 10/1/14 0.1453100
5 11/1/14 0.1238671
6 12/1/14 0.1289842