1

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の場合)を循環するループを作成する方法を学ぶのにご協力いただければ幸いです。前もって感謝します!

4

1 に答える 1