【发布时间】:2013-03-12 03:24:49
【问题描述】:
在 R 中工作。我想使用初始值和一组转换参数来预测患病率的时间序列。对于如下结构的数据
cohort <- c(1980,1981,1982)
A00 <- c(.15, .2,.4)
B00 <- c(.25, .3, .4)
C00 <-c(.6, .5,.2)
Tab<-c(.6,.5,.4)
Tac<-c(.2,.25,.35)
ds <- data.frame(cohort,A00,B00,C00,Tab,Tac)
print (ds)
cohort A00 B00 C00 Tab Tac
1 1980 0.15 0.25 0.6 0.6 0.20
2 1981 0.20 0.30 0.5 0.5 0.25
3 1982 0.40 0.40 0.2 0.4 0.35
A00、B00 和 C00 列中的初始值表示每个组 (A,B,C) 在时间 t=00 的相关大小。它们在整行中加起来为 1 (A00+B00+C00=1)。参数 Tab 和 Tac 用于使用一些数学模型预测时间 t+1 的患病率,例如
A01 = df$A00 -df$Tab +df$Tac.
计算t+1时刻预测值的函数是
forecast<- function( df ) {
dsResult <- data.frame(
cohort= df$cohort,
A01 = df$A00 -df$Tab +df$Tac ,
B01 = df$B00 -df$Tab +df$Tac,
C01 = df$C00 -df$Tab +df$Tac
)
dsResult<- merge(df,dsResult,by="cohort")
return( dsResult)
}
new<-forecast(ds)
并产生以下结果
cohort A00 B00 C00 Tab Tac A01 B01 C01
1 1980 0.15 0.25 0.6 0.6 0.20 -0.25 -0.15 0.20
2 1981 0.20 0.30 0.5 0.5 0.25 -0.05 0.05 0.25
3 1982 0.40 0.40 0.2 0.4 0.35 0.35 0.35 0.15
非常感谢您帮助我学习如何编写一个循环来循环预测所需的年数(例如,对于 1:7 中的 t)。提前致谢!
【问题讨论】:
标签: r function loops time-series modeling