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の初期値は、時間t = 00での各グループ(A、B、C)の関連するサイズを表します。行全体で合計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の場合)を循環するループを作成する方法を学ぶのにご協力いただければ幸いです。前もって感謝します!