野球

2/28 MIKUセミナー 2010年度最終回

2010年度のMIKUセミナーもついに最終回を迎えました。 2011年度はどうなるかは実はわかりません(98%はわかっているけど)。 学年が上がってさらに知識が増えてくるだろうから、「あ、これこういう風に記述できるんじゃね?」的思考を増やせるように努力して…

2/21 MIKUセミナー

そんななぁなぁではなく、きちんと原因追求(バグ取り)していかないと、なんか知らないけど治っちゃた〜あはは、になっちゃうよというお話。(その1)(その2)(その3)(その4) 先生はそういうところは厳しいけど、厳しく指摘してくださるのはありがたい…

さあ、準備はととのった

バグ取りはたぶんうまくできたと思う。 少ないアウト、少ないイニングで確かめたら、(1)〜(5)はうまくできている。 (5)以降はうまくできているので、(おそらく)大丈夫だろうと。 ただ、確率で(1)〜(5)を計算すると時間がかかるが、(5)以降は確率計算のほう…

打席に立ちうる人数を1イニングから1試合に拡張して考えたらPC終了のお知らせ

前回セミナーでの、シミュレーションと確率計算でバグを取りたい話の続き。 今までは ・1イニングあたりに打席に立つ打者の人数 ・あるkイニングで先頭打者になる確率 を出して、それらの積的なもので重みをつけて1イニングあたりの得点確率を出していた。 …

2/7 MIKUセミナー

シミュレーションと確率計算でバグを取りたい話。 という流れが両者にはあるのだが、どこでおかしいか ということで、まずは(0.8,0.05,0.05,0.05,0.05)という打撃確率を持つ1人で構成されるチームを(無駄だけど9つ4番を入れ替えて)闘わせると、まあ二者間…

1/31 MIKUセミナー

打順最適化をして確率計算で出した得点分布と、対戦シミュレーションの結果がおかしい話。 (リンクでは総当たり戦しか書いていない。通りの対戦もすぐできる。) チーム1とチーム2が、1イニングである得点k点()を取る確率がだとすると (実際にはまで得点…

打順最適化でどのチームが勝ちやすいかシミュレーション

こちらで打順をいじくって、1試合の得点分布がどうなるかを調べた。 結果、パワーヒッターの打順が(1,9)、(2,5,8)、(3,7)、(4,6)では同一の結果になることがわかった。 (1,9)はおそらく、1番打者が第1イニングで打席に立った後は9番打者の後ろに並ぶことにな…

避難所

Tigars<- rbind(c(0,0,0,0,1), c(0.6508972,0.2593801,0.05709625,0.004893964,0.027732463), c(0.6504065,0.2926829,0.04471545,0.010162602,0.002032520), c(0.6991304,0.2034783,0.05391304,0.010434783,0.033043478), c(0.7039007,0.1861702,0.02659574,…

パワーヒッターをチーム内で打順最適化

打順を変える続き。 パワーヒッターの打順をチーム内でいろいろ変えたときの得点分布を作成する。 プログラムの概要。 パワーヒッターの効果が出やすいように、パワーヒッターは必ずHRを打つように設定する。 2010年の阪神のデータから、パワーヒッターが1番…

打順を変えたときの得点

避難所 # パラメータ library(MCMCpack) library(gtools) library(expm) Nbase<- 4 Nout<- 3 Ninning<- 9 people<- 9 hitp<- 1-colMeans(team)[1] Vnum<- 100 cut<- 0.95 # 比較してみたいチーム Tigars<- rbind(c(0,0,0,0,1), c(0.6508972,0.2593801,0.0570…

チームの人数を増やしたときの得点

誰が先頭打者になるかによって、1イニングで取る得点が変わりそうなのでその準備。 1,2,3,…,9という順列をひたすら 2,3,4,…,9,1 2,3,4,…,9,1,2 9,1,2,…,8 とベタに並び変えた仮想打順チームをarray関数を用いて作っておこうか。 よさげな関数がなかったので…

どのイニングに誰が先頭打者になりやすいかを確率計算で求める

どのイニングに誰が先頭打者になりやすいかの続き。 :nイニング目で打者その1、その2、…がそれぞれ、そのイニングの先頭打者になる確率ベクトル :1イニングで打席に立ちうる打者人数の確率推移行列 として、 の形にしたい。 打者9人なら、1イニング目で1番…

どのイニングに誰が先頭打者になりやすいか

野球の続き。チームの人数を複数にしたとき、誰が先頭打者になって、そこから何人が打席に立つかで、1イニングに取る得点が変わるだろう、ということを考えた。 この日は、全イニングの平均を出したので、1番バッターが多いのは当たり前だね。 シミュレーシ…

1/17 MIKUセミナー

自分のテーマとして、野球の続き。 ・シミュレーションと確率過程での計算が、ずれているのか、同じ傾向(状況?経過?)を示しているのかどうか。 ・異なる打撃確率を持つpeople人で1チームが構成されている場合に、どう確率過程を計算するか。 ・次のテーマ …

シミュレーションによる二チーム間の勝負

野球の続き。 今まで推移行列や漸化式を使って、打者にある打撃確率を与えたらk点を確率的に何点取る、というのをやってきた。 ただ、これでは1チーム中に複数の打者がいるときの得点が出せない。いまのところいいやり方が思いついていないし。 例えば9人チ…

12/13 プログラミングセミナー

前の記事と先生の漸化式からの続き。 あるイニングの得点と、1イニングあたりに取る得点の確率から、次のイニングでの得点が帰納的に求められる的な話題。 ここで、推移行列というものについて。 あるイニングtで得点kを取る確率が収まっている行ベクトルと…

漸化式っぽいものでNinning回の得点に拡張

1イニングあたりの得点確率から、Ninning回に増やしたときの得点確率。 前の記事で、Resultというのが1イニングあたりの得点確率。 n項目にはn-1点を取る確率が収まっている。 1イニングで取ることのできる最高得点は決まっているので、Ninning回で取れる得…

野球1イニングあたりの得点確率

避難所 Nout<- 3 Nbase<- 4 Nbatter<- 13 Bprob<- c(0.7,0.1,0.1,0.05,0.05) #Ninning<- 9 #Bprob<- c(0.85,0.05,0.08,0.02) #To count each batting pattern from 1 to Nbase. num.count<- function(vec){ counter<- rep(0,Nbase) for(result in 1:Nbase){ …

11/29 MIKUセミナー

重複の話。 例えば 3アウト シングルヒットとツーベースのみ 打者4人(つまり、最後は必ずアウトで、考えるのは3人の打撃パターン) として a<- 0:2 expand.grid(list(a,a,a)) Var1 Var2 Var3 1 0 0 0 2 1 0 0 3 2 0 0 4 0 1 0 5 1 1 0 6 2 1 0 7 0 2 0 8 1 …

何点取るかを確率でバシッと出す その1

11/22 プログラミングセミナー その2からの続き。 バグ取りはまだしていない。 # とりあえず変数を置いとく。 Nbase<- 2 Nbatter<- 5 # ここの値は11/22の表から選ぶ。 Nout<- 2 #Bprob<- c(0.7,0.1,0.1,0.05,0.05) Bprob<- c(0.8,0.05,0.05,0.05,0.05) # …

11/22 プログラミングセミナー

シミュレーションをやって得られた度数分布の形を評価しよう。 前回は峰の数について考え、先生やNKの試行によると、峰は分離されるっぽい。 さあ、何が与えられたら分布を描いたり、評価したりできるか、ということで ・平均 均した値のこと。 ・中央値 and…

11/22 プログラミングセミナー その2

今まではシミュレーションにより、何万回も試行して得点を出して、度数分布図を描いていた。 今度は、バッターに打率を与えたらx点はpの確率で取ります、とバシッと出しにかかりたい。 ヒットが永遠に続く(ことはまあ無いだろうけど)ことを考えて、とりあ…

arrayと野球確率

ヒットを打つ(1種類)確率がpのとき、Nout.num回アウトになるまでに打席に立つバッターの加算確率的な何か。 Vnumは打者人数。 Nout.numは1イニング変わるためのアウトの数。 hitpは0.1、0.2、...0.9とヒットを打つ確率が変わる。ここではシングルヒットの…

11/10 プログラミングセミナー

峰は一峰性か? こちらでは一峰性っぽいが、アウトカウント4つのとき、微妙に峰が分離されているっぽい。 峰を定義しよう。 ある得点を取った試合数、がある。 その得点+1の得点を取った試合数、もある。 後者から前者を引き、これを増分とする。 増分が、あ…

得点分布の多峰性

野球で得点分布の山がどうなるのかをちょっと考えよう。 俺の嫁にどれだけ歌わせても嫌と言わないように、コンピュータもどれだけ計算させても嫌と言わないので、とりあえず、シミュレーションするに当たってこちら側で振っているパラメータをいじくってみま…

2チームで試合するのだが大丈夫か?

これを使って9イニングのスコア分布を描いた。 10万回試合したとき、得点は u #0点、1点、…最高で22点でした [1] 15620 17983 17440 14927 11344 8155 5529 3526 2300 1382 783 431 278 [14] 153 77 35 23 7 4 1 0 1 1となる。 今、打撃確率が同じチーム同士…

10/27 プログラミングセミナー

走者ベクトルを付け加えるやり方で進めることにした。 ここで問題となるのが、超低い確率だが3アウトまで行きつかねぇってときにうわ〜。 ということで制限設けて強制終了することで、終了しない事態、を防ぎましょう。 p<- seq(from=0,to=1,by=0.01) #アウ…

野球ルールの構築

とりあえずこちらの3つめのやり方でかいてみた。 library(MCMCpack) batter <- rbind(c(0.71,0.20,0.06,0.01,0.02), # これをいろいろ振ってみる c(0.71,0.20,0.06,0.01,0.02), c(0.71,0.20,0.06,0.01,0.02), c(0.71,0.20,0.06,0.01,0.02), c(0.71,0.20,0.06…

複雑な分岐に使えそうなswitch関数

g<- function(x){ # xは条件分岐の信号的なもの pattern<- 0 # 走者パターンとか score<- 0 # 得点 switch(x, # switch関数内のxは1以上の整数しか扱ってくれないらしい (pattern<- 1) && (score<- 0), # x=1なら、こうなる (pattern<- 2) && (score<- 1), #…

10/21 プログラミングセミナー

プログラムを動かすために、必要な定義。 イニング アウト 打者 打席 塁 打撃パターン 得点 ふたつチームを作って勝負させようと思っていたが、ひとつのチームで9イニング勝手にやったら何点取れるかをヒストグラムにして分布を考えるのも手だ。 やり方ひと…