1

私はかなり長い間この問題に苦しんでおり、どんな助けも大歓迎です。

マルコフ モデルの観測データから遷移行列を計算する関数を作成しようとしています。

関数を構築するために使用している初期データは次のようになります。

 Season                 Team State
1        1    Manchester United     1
2        1              Chelsea     1
3        1      Manchester City     1
.
.
.
99       5    Charlton Athletic     4
100      5              Watford     4

5 つの季節と 4 つの州があります。

遷移行列を計算する方法はわかっていますが、これを行うには、シーズンごとに州 i から州 j に移動するチームの数を数える必要があります。

このようなことをするコードが必要です。

a<-function(x,i,j){
if("team x is in state i in season 1 and state j in season 2") 1 else 0
}
sum(a)

そして、チームと州のペアごとにこれを行い、5 シーズンすべてで繰り返すことができます。しかし、引用符で囲まれたものを R に伝える方法を理解するのに苦労しています。本当に明白な答えがある場合は申し訳ありませんが、私はごみのプログラマーです。

読んでくれてありがとう!

4

1 に答える 1

1

この関数は、チームがシーズン 1 からシーズン 2 への状態 1 から状態 2 への移行を行ったかどうかを示します。

a <- function(team, state1, state2, data, season1, season2) {  
  team.rows = data[team == data["Team",],]   
  in.season1.in.state1 = ifelse(team.rows["Season",]==season1 && team.rows["State",state1],1,0)
  in.season2.in.state2 = ifelse(team.rows["Season",]==season2 && team.rows["State",state2],1,0)   
  return(sum(in.season1.in.stat1) * sum(in.season2.in.state2)) 
}
  • 最初の行では、特定のチームのすべての行を選択します。
  • 2 行目は、チームがシーズン 1 に状態 1 にあったかどうかを各エントリに対して決定しています。
  • 3 行目は、チームがシーズン 2 で状態 2 になるかどうかを各エントリに対して決定します。
  • return ステートメントは、チームがそれぞれのシーズンでそれぞれの状態になかった場合は 0 を返し、それ以外の場合は 1 を返します (重複がない場合にのみ機能し、その場合は 1 より大きい値を返す可能性があります)。
于 2012-06-26T01:05:36.850 に答える