r-statistics-fanの日記

統計好きの現場の臨床医の覚書のようなもの

統計推理。どう計算したのだろう。比率の信頼区間

どう計算したのだろう。比率の信頼区間

日経メディカルで、コデインの小児への処方が制限されたと言う記事を見た。

PDMA(医薬品医療機器総合機構)が運営するMID-NETというデータベースを利用した解析結果が参考にされたらしい。

http://www.jpa-web.org/dcms_media/other/%E3%82%B3%E3%83%87%E3%82%A4%E3%83%B3%20%E8%A8%98%E8%80%85%E6%87%87%E8%B3%87%E6%96%99.pdf
このpdfが元資料と思われた。

MID-NET(2009年~2015年)

対象期間中に協力医療機関を受診(976,859人)

コデイン含有製剤が処方された患者(癌の診断をもつ患者を除く)(7,267人)

12歳未満209人
12-18才未満199人
19才以上6859人

f:id:r-statistics-fan:20170814154353j:plain

コホート全体:ケース24人 対象者7267人 発生割合0.3% 95%CI:0.2-0.4

12-18才:ケース0人 対象者数199人 発生割合0 95%CI:0.0-0.0

この95%CIが気になった。どうみても2項分布ではない。どんな手法なのだろう。
手法がわかれば、個人情報保護の観点から隠されている他のグループの発生割合が分かるのではないか。
そもそも、これ個人情報なのか?????普通に公開すれば良いんじゃない?

Rで解析してみる。

binom.confint(24, 7267, conf.level = 0.95)
inom.confint(0, 199, conf.level = 0.95)

> binom.confint(24, 7267, conf.level = 0.95)
          method  x    n        mean       lower       upper
1  agresti-coull 24 7267 0.003302601 0.002195053 0.004934996
2     asymptotic 24 7267 0.003302601 0.001983493 0.004621708
3         bayes* 24 7267 0.003370941 0.002094457 0.004725895
4        cloglog 24 7267 0.003302601 0.002183660 0.004857300
5          exact 24 7267 0.003302601 0.002117150 0.004910048
6          logit 24 7267 0.003302601 0.002214581 0.004922527
7         probit 24 7267 0.003302601 0.002197326 0.004884659
8        profile 24 7267 0.003302601 0.002152623 0.004802072
9            lrt 24 7267 0.003302601 0.002162413 0.004827145
10     prop.test 24 7267 0.003302601 0.002165131 0.004991762
11        wilson 24 7267 0.003302601 0.002220409 0.004909641

0.2-0.4%になるものは無い!!!!!

> binom.confint(0, 199, conf.level = 0.95)
          method x   n   mean        lower       upper
1  agresti-coull 0 199 0.0000 -0.003858684 0.022796917
2     asymptotic 0 199 0.0000  0.000000000 0.000000000
3          bayes 0 199 0.0025  0.000000000 0.009593465
4        cloglog 0 199 0.0000  0.000000000 0.018366328
5          exact 0 199 0.0000  0.000000000 0.018366328
6          logit 0 199 0.0000  0.000000000 0.018366328
7         probit 0 199 0.0000  0.000000000 0.018366328
8        profile 0 199 0.0000  0.000000000 0.016761237
9            lrt 0 199 0.0000  0.000000000 0.009621873
10     prop.test 0 199 0.0000  0.000000000 0.023605824
11        wilson 0 199 0.0000  0.000000000 0.018938233

0.0-0.0%になるものは、asymptoticしかない。

その他、連続数として平均値でやったのかとか色々試みたが、すべて一致しない。

一体どんな手法を使ったのだろう。教えてエライ人。

一つの推理として
信頼区間の上限が0になるので、asymptotiを使用したと仮定。
90%CIと間違えた可能性(qnorm(0.975)をqnorm(0.95)にした)を考えると、

method x n mean lower upper
1 asymptotic 24 7267 0.003302601 0.002195571 0.004409631

これは、0.2-0.4%と記載できる。
これで、24人のケースを総当りする

result <- matrix(0, nrow = 23, ncol = 10)
colnames(result) <- c("x", "n", "mean", "lower", "upper", "x", "n", "mean", "lower", 
                      "upper")
for(i in 1:23){
      result[i, ] <- unlist(c(binom.confint(i, 209, methods = "asymptotic", conf.level = 0.90)[2:6],
                              binom.confint(24-i, 6859, methods = "asymptotic", conf.level = 0.90)[2:6]))
      
}
       x   n        mean         lower      upper  x    n         mean         lower        upper
 [1,]  1 209 0.004784689 -0.0030665735 0.01263595 23 6859 0.0033532585  2.205102e-03 0.0045014148
 [2,]  2 209 0.009569378 -0.0015072609 0.02064602 22 6859 0.0032074646  2.084464e-03 0.0043304657
 [3,]  3 209 0.014354067  0.0008208182 0.02788732 21 6859 0.0030616708  1.964409e-03 0.0041589326
 [4,]  4 209 0.019138756  0.0035498817 0.03472763 20 6859 0.0029158769  1.844981e-03 0.0039867731
 [5,]  5 209 0.023923445  0.0065371152 0.04130977 19 6859 0.0027700831  1.726226e-03 0.0038139399
 [6,]  6 209 0.028708134  0.0097091021 0.04770717 18 6859 0.0026242893  1.608199e-03 0.0036403791
 [7,]  7 209 0.033492823  0.0130221306 0.05396352 17 6859 0.0024784954  1.490961e-03 0.0034660294
 [8,]  8 209 0.038277512  0.0164476570 0.06010737 16 6859 0.0023327016  1.374583e-03 0.0032908203
 [9,]  9 209 0.043062201  0.0199658122 0.06615859 15 6859 0.0021869077  1.259145e-03 0.0031146699
[10,] 10 209 0.047846890  0.0235620992 0.07213168 14 6859 0.0020411139  1.144745e-03 0.0029374828
[11,] 11 209 0.052631579  0.0272255514 0.07803761 13 6859 0.0018953200  1.031494e-03 0.0027591458
[12,] 12 209 0.057416268  0.0309476318 0.08388490 12 6859 0.0017495262  9.195286e-04 0.0025795238
[13,] 13 209 0.062200957  0.0347215384 0.08968038 11 6859 0.0016037323  8.090121e-04 0.0023984526
[14,] 14 209 0.066985646  0.0385417454 0.09542955 10 6859 0.0014579385  7.001471e-04 0.0022157298
[15,] 15 209 0.071770335  0.0424036907 0.10113698  9 6859 0.0013121446  5.931882e-04 0.0020311011
[16,] 16 209 0.076555024  0.0463035546 0.10680649  8 6859 0.0011663508  4.884626e-04 0.0018442389
[17,] 17 209 0.081339713  0.0502381007 0.11244133  7 6859 0.0010205569  3.864044e-04 0.0016547095
[18,] 18 209 0.086124402  0.0542045576 0.11804425  6 6859 0.0008747631  2.876091e-04 0.0014619171
[19,] 19 209 0.090909091  0.0582005306 0.12361765  5 6859 0.0007289692  1.929343e-04 0.0012650042
[20,] 20 209 0.095693780  0.0622239329 0.12916363  4 6859 0.0005831754  1.036962e-04 0.0010626546
[21,] 21 209 0.100478469  0.0662729329 0.13468400  3 6859 0.0004373815  2.211008e-05 0.0008526530
[22,] 22 209 0.105263158  0.0703459128 0.14018040  2 6859 0.0002915877 -4.750476e-05 0.0006306801
[23,] 23 209 0.110047847  0.0744414345 0.14565426  1 6859 0.0001457938 -9.399821e-05 0.0003855859

12歳未満が0.0-1.0%になるのは、無いが、とても近い0.0-1.3%。エクセルとかで有効桁数字の表示に失敗して1%になったものを1.0%と書いたと考えると、その時19才以上は0.2-0.5%で一致する。

ということで、小児12歳未満は1/209、19才以上は23/6859と推理するがどうでしょう。
もしそうなら、小児は1例だけって、酷すぎるデータだと思うんだけど。

また、1例なら、個人情報保護とか言うのも何となくしっくりくる。
そもそも、10例未満だから個人情報考えて非公開と書いているくせに、10/6859=0.145%なので、95%CIが0.2-0.5%
には絶対にならないんですが。
まあ引き算で特定出来るからでしょうけど、素直に読むとどちらも10例未満かと思っちゃうよね。

ちなみに90%じゃなくて、95%CIだと

      [,1] [,2]        [,3]          [,4]       [,5] [,6] [,7]         [,8]          [,9]        [,10]
 [1,]    1  209 0.004784689 -0.0045706672 0.01414005   23 6859 0.0033532585  1.985146e-03 0.0047213711
 [2,]    2  209 0.009569378 -0.0036292513 0.02276801   22 6859 0.0032074646  1.869326e-03 0.0045456030
 [3,]    3  209 0.014354067 -0.0017717935 0.03047993   21 6859 0.0030616708  1.754203e-03 0.0043691388
 [4,]    4  209 0.019138756  0.0005634666 0.03771405   20 6859 0.0029158769  1.639825e-03 0.0041919284
 [5,]    5  209 0.023923445  0.0032063552 0.04464053   19 6859 0.0027700831  1.526251e-03 0.0040139151
 [6,]    6  209 0.028708134  0.0060693911 0.05134688   18 6859 0.0026242893  1.413544e-03 0.0038350350
 [7,]    7  209 0.033492823  0.0091004885 0.05788516   17 6859 0.0024784954  1.301776e-03 0.0036552147
 [8,]    8  209 0.038277512  0.0122656354 0.06428939   16 6859 0.0023327016  1.191033e-03 0.0034743704
 [9,]    9  209 0.043062201  0.0155411563 0.07058325   15 6859 0.0021869077  1.081411e-03 0.0032924046
[10,]   10  209 0.047846890  0.0189097770 0.07678400   14 6859 0.0020411139  9.730244e-04 0.0031092033
[11,]   11  209 0.052631579  0.0223584299 0.08290473   13 6859 0.0018953200  8.660081e-04 0.0029246320
[12,]   12  209 0.057416268  0.0258769427 0.08895559   12 6859 0.0017495262  7.605230e-04 0.0027385293
[13,]   13  209 0.062200957  0.0294572101 0.09494470   11 6859 0.0016037323  6.567648e-04 0.0025506999
[14,]   14  209 0.066985646  0.0330926480 0.10087864   10 6859 0.0014579385  5.549744e-04 0.0023609025
[15,]   15  209 0.071770335  0.0367778200 0.10676285    9 6859 0.0013121446  4.554552e-04 0.0021688341
[16,]   16  209 0.076555024  0.0405081749 0.11260187    8 6859 0.0011663508  3.585973e-04 0.0019741043
[17,]   17  209 0.081339713  0.0442798561 0.11839957    7 6859 0.0010205569  2.649176e-04 0.0017761963
[18,]   18  209 0.086124402  0.0480895615 0.12415924    6 6859 0.0008747631  1.751259e-04 0.0015744003
[19,]   19  209 0.090909091  0.0519344374 0.12988374    5 6859 0.0007289692  9.024420e-05 0.0013676943
[20,]   20  209 0.095693780  0.0558119973 0.13557556    4 6859 0.0005831754  1.184068e-05 0.0011545101
[21,]   21  209 0.100478469  0.0597200589 0.14123688    3 6859 0.0004373815 -5.744492e-05 0.0009322080
[22,]   22  209 0.105263158  0.0636566941 0.14686962    2 6859 0.0002915877 -1.124659e-04 0.0006956413
[23,]   23  209 0.110047847  0.0676201896 0.15247550    1 6859 0.0001457938 -1.399360e-04 0.0004315237

やはり12歳未満のケースが1例なのが一番近い。

もし1例だけのデータだけで制限となるともやっとするなあ。元の1例が別の病気だったらアウト。
でもまあ、子供にコデインなんか処方しないでよろし。

エライ人のもっとしっくりくる推理希望~。何か他の手法が有るのだろうか。

当初は元データを再現してデータ伏せても意味ないじゃ~んとなるはずが、しっくりこない記事になってしまった。

100人を部屋に集めてお金をランダムな相手に渡し続けるとだんだんと貧富の差が生まれる~条件により印象通りの結果に:第2弾

GIGAZINEでの興味深い記事の検証第2弾。
http://gigazine.net/news/20170711-random-people-give-money-to-random-other-people/
100人を部屋に集めてお金をランダムな相手に渡し続ける」とだんだんと貧富の差が生まれる
というもの。記事の中では「45ドルを持った45人が、1カウントごとに誰かに1ドル渡す」というシミュレーション」
をしていたのだが、条件を変えてみると正規分布に近くなった。

条件:1000人で、初期所持1000ドル、100000ターン施行
f:id:r-statistics-fan:20170714143539j:plain
こうすると当初の直感に近く、1000ドル前後の層が手厚くなる
f:id:r-statistics-fan:20170714143644j:plain
densityも正規分布っぽくなり
Shapiro-Wilk normality test
W = 0.99927, p-value = 0.973
であり、有意に正規分布からズレているとはいえない。
Nが大きいため、極めて正規分布に近いと言って良いだろう

条件:1000人で、初期所持45ドル、10000ターン施行
f:id:r-statistics-fan:20170714143725j:plain
これだと、45人45ドルと同じ感じのようだ。

条件:45人で1000ドルスタート
f:id:r-statistics-fan:20170714143745j:plain

これだと1000中心の正規分布に近くなる。

初期ドルが45ドルとか10ドルとか少ない場合、GIGAZINE記載のパターン。
初期ドルが1000ドルなど十分大きいと正規分布に近くなるようだ。

GIZAZINEの記事をなぞってみる:「100人を部屋に集めてお金をランダムな相手に渡し続ける」とだんだんと貧富の差が生まれる

gigazine.net

#7/12追記 普通にソートした順でboxplotをすれば分かりやすかったので最下部に図を追加

GIGAZINEで興味深い記事が。
「100人を部屋に集めてお金をランダムな相手に渡し続ける」とだんだんと貧富の差が生まれる
というもの。

記事の中では「45ドルを持った45人が、1カウントごとに誰かに1ドル渡す」というシミュレーション」
をしているので、同じようにRでやってみる。

N <-  45  #人数
st <- 45  #初期所持ドル
turn <- 5000  #何回施行するか
SN <- 100  #シミュレーション回数

result <- matrix(0, ncol = N, nrow = SN)

for(j in seq_len(SN)){
phase <- matrix(0, ncol = N, nrow = turn+1)
phase[1,] <- 45

give <- function(x){
      non0num <- (x != 0)
      non0 <- sum(non0num)
      x <- (x - non0num)
      add <- sample(seq_len(N), non0, replace = TRUE)
      x <- x + as.numeric(table(factor(add, levels = seq_len(N))))
}

for(i in seq_len(turn)){
      phase[i + 1,] <- give(phase[i,])
}

result[j,] <- phase[turn+1, ]
cat(j, "; ")
}

hist(apply(result, 1, median))
(apply(result, 1, mean)) ##must 45
hist(apply(result, 1, max))
hist(apply(result, 1, min))

plot(0, xlim = c(0, 300), ylim = c(0, 0.03), type = "n",
     main = "density of $", ylab = "density", xlab = "$")
plot1 <- function(x) lines(density(x), xlim = c(0, 300), add = T)

apply(result, 1, plot1)

以下5000回目の状況(中央値など)を100回シミュレーションしたグラフ

中央値所持$、、、多くの場合45ドル無いんだねぇ
f:id:r-statistics-fan:20170711203732j:plain
平均所持$(省略。当然全部45$)
最大所持$、、、150$オーバー当たり前なのね。3倍以上だね
f:id:r-statistics-fan:20170711203727j:plain
最小所持$、、、0$の人が出て当たり前なのなー
f:id:r-statistics-fan:20170711205708j:plain
5000回目のざっくりした密度100施行分
f:id:r-statistics-fan:20170711212631j:plain

追記:普通にboxpotしたら分かりやすかった
f:id:r-statistics-fan:20170712211250j:plain

#OsakaStan5参加 献本争奪じゃんけんで2回で決着した事象は珍しいものだったのか?

はじめて統計の勉強会に参加した。

#7/2一部バージョン違いのコードだったので修正

いわゆるアヒル本の勉強会である。
www.amazon.co.jp

なんと著者の松浦先生もいらっしゃると聞いて駆けつけた次第である。

何故アヒル本と呼ばれるのか?

f:id:r-statistics-fan:20170702105930j:plain
それは、この表紙のブロックがアヒルだからである。
えっ!?アヒルと思ったけれど、娘の作品と聞いて超納得。(私も娘ラブな父親ですので)
これは間違いなくアヒルですね。むしろもうアヒルにしか見えない。

あとMCMCをミックミクと読む流儀もあると知りました。
もうミックミクにしか見えないですね。
ミックミクハアハア(ん?混ざってる)なるワードも
知ってしまいました。

大変刺激的で勉強になる会でした。
ガチ勢に囲まれて震えて参加するイメージでしたが、皆さん
和やかな雰囲気でユーモアもあり、すぐに緊張は解けました。
また参加したいですね。
東京だとこういった会がたくさんあるらしく羨ましい限りです。

前置きはここまで。
その懇親会で献本争奪じゃんけんバトルが発生した

30~40人程度の参加者で代表者とじゃんけんする。
負けと引き分けは退場。勝ちの人だけ勝ち残る。
最後の一人が献本ゲットというもの。

そこで、たった2回で勝負が決まった。(酔ってたので”たぶん”2回というのが正しい)
これは相当稀なことなのではないか?

早速Rで計算してみる

N_range <- 30:40 #30から40人の間だった
ans <- numeric(length(N_range))
ct <- 1
for(N in N_range){  
      P <- 1/3  #じゃんけんで生き残る確率
##1回で決着の場合
      get_1 <- dbinom(1, N, P, FALSE)

##2回で決着の場合
      temp <- 0
      temp <- temp + get_1
      temp <- temp +  dbinom(0, N, P, FALSE) * dbinom(1, N, P , FALSE) #1回め0人になり無効。2回めで1人に。
      for(i in 2:N){
            temp <- temp + dbinom(i, N, P, FALSE) * dbinom(1, i, P , FALSE)
      }
      ans[ct] <- temp
      ct <- ct + 1
}
ans 

結果

> ans
            30        31         32         33         34         35         36         37         38         39         40
[1,] 0.1095626 0.1006233 0.09231996 0.08462096 0.07749409 0.07090696 0.06482739 0.05922376 0.05406528 0.04932212 0.04496564

30人では11%程度起こる。40人でも4.5%程度起こる。
思ったよりは良く起こりうることだった。
個人的な直感では200回に一回くらいの珍しい事象かとおもってたよ、、、

計算間違いが怖いのでシミュレーションでも確かめる
とりあえずN=35の場合。確率は0.07090696である。

Nsim <- 1000000
P <- 1/3
N <- 35
get <- 3
res <- numeric(Nsim)

for(i in seq_len(Nsim)){
ct <- 0
temp <- N
while(temp != 1){
temp2 <- rbinom(1, temp, P)
if (temp2 == 0){
      ct <- ct + 1 #0人になっちゃっても1回にカウント
}else{
ct <- ct + 1
temp <- temp2
}
}
res[i] <- ct
}

table(res)

1000万回のシミュレーション結果

> table(res)
res
      1       2       3       4       5       6       7       8       9      10      11      12      13      14      15      16      17 
    119  709559 3380330 2521582 1490322  841063  469192  260440  145661   80534   44986   24854   13931    7701    4203    2387    1403 
     18      19      20      21      22      23      24      25      26      27      28      30      33 
    779     419     246     113      92      37      20      15       4       4       2       1       1 

2回まで勝負がつくのは119+709559=709559回/1000万回なので、7.095%。
0.07090696と大きくはズレていないようだ。
二項分布の95%CIは
0.07080873 から0.07112712なので0.07090696を含む。
きっと大きな間違いはないであろう。たぶん

f:id:r-statistics-fan:20170702140334j:plain

レイド戦後捕獲時のバンギラスCP/固体値と最大強化時CP/レア度順位の表

統計ブログ()だが、わりとポケモン記事へのアクセスが多い。
というわけで追加記事。

レイド戦が始まり、バンギラスが身近になった。
前回の記事
http://r-statistics-fan.hatenablog.com/entry/2017/05/22/174305
卵を49個孵化させないと、90%以上の確率で最大CP3600超えの個体を
ゲットできないとわかった。
どうやら、レイドで入手できる個体も卵と同じく固体値10/10/10以上らしい。
そして卵と同じくレベルも20で固定らしい。
卵49個よりも、レイド戦で49体バンギラスをゲットする方が
はるかに簡単である。

f:id:r-statistics-fan:20170630102551j:plain

レイド戦後のバンギラス捕獲画面でのCP値と、最大強化時のCPとレア度(上位何%のレア度か)を知っておけば捕獲時のCPを見た時にテンションがあがるかも。
ということで、レイド戦用に新たに表を作成した。
良いCPなら金のズリのみ(左にスワイプすると選択できる。筆者は数日間レイドでも
金ズリ投げられるとは気が付かなかった)を使うと良いかも。

なお、固体値(%)順と最大CP順が異なるのは、ATの固体値が最大CPに大きく影響するから。
同じ固体値91%でも、

    AT DF HP   固体値(%) レイド捕獲時CP    最大強化時cp 順位  上位(%) 80%捕獲数 90%捕獲数
18  15 13 13     91.11111         2078            3585   18   9.259259     17     24

59  11 15 15     91.11111         2065            3563   57  27.314815      6      8

なので、同じ固体値(%)でもAT15とAT11で順位は18位(上位9.3%)、57位(上位27.3%)とぜんぜん違う。

また、レイドで捕獲時のCPが同じでもバンギラス最大CPは違ううことも多い。
たとえばレイド捕獲時にバンギラスCP2068の場合

    AT DF HP   固体値(%) レイド捕獲時CP    最大強化時cp 順位  上位(%) 80%捕獲数 90%捕獲数
45  15 11 13     86.66667         2068            3569   44  21.296296      7     10
46  12 14 15     91.11111         2068            3569   44  21.296296      7     10
47  15 13 11     86.66667         2068            3568   47  22.685185      7      9
48  15 12 12     86.66667         2068            3568   47  22.685185      7      9
49  12 15 14     91.11111         2068            3568   47  22.685185      7      9
50  15 14 10     86.66667         2068            3567   50  23.148148      7      9

なので捕獲時CP=2068の場合、最大CPは3567から3569まで有り得る

以下表である

##横に長いので環境によりスクロールして表示してください
##レイド戦ゲット時のバンギラスCP/固体値と最大強化時CPの表
##上位(%)=レイド戦で上位何%のレアな個体か(最大強化時CP順)
##80%捕獲数=80%以上の確率でその最大CP以上の個体を手に入れるために必要な捕獲数
    AT DF HP   固体値(%) レイド捕獲時CP    最大強化時cp 順位  上位(%) 80%捕獲数 90%捕獲数
1   15 15 15    100.00000         2097            3617    1   0.462963    347    497
2   15 15 14     97.77778         2092            3609    2   1.388889    116    165
3   15 14 15     97.77778         2092            3609    2   1.388889    116    165
4   14 15 15     97.77778         2089            3604    4   1.851852     87    124
5   15 14 14     95.55556         2087            3601    5   2.777778     58     82
6   15 13 15     95.55556         2087            3601    5   2.777778     58     82
7   15 15 13     95.55556         2087            3600    7   3.240741     49     70
8   14 14 15     95.55556         2084            3596    8   3.703704     43     62
9   14 15 14     95.55556         2084            3595    9   4.166667     38     55
10  15 13 14     93.33333         2083            3593   10   5.555556     29     41
11  15 12 15     93.33333         2083            3593   10   5.555556     29     41
12  15 14 13     93.33333         2082            3593   10   5.555556     29     41
13  15 15 12     93.33333         2082            3592   13   6.018519     26     38
14  13 15 15     95.55556         2081            3590   14   6.481481     25     35
15  14 13 15     93.33333         2080            3588   15   6.944444     23     32
16  14 15 13     93.33333         2079            3587   16   7.870370     20     29
17  14 14 14     93.33333         2079            3587   16   7.870370     20     29
18  15 13 13     91.11111         2078            3585   18   9.259259     17     24
19  15 12 14     91.11111         2078            3585   18   9.259259     17     24
20  15 11 15     91.11111         2078            3585   18   9.259259     17     24
21  15 15 11     91.11111         2077            3584   21  10.185185     15     22
22  15 14 12     91.11111         2077            3584   21  10.185185     15     22
23  13 15 14     93.33333         2076            3582   23  11.111111     14     20
24  13 14 15     93.33333         2076            3582   23  11.111111     14     20
25  14 12 15     91.11111         2075            3580   25  11.574074     14     19
26  14 14 13     91.11111         2075            3579   26  12.962963     12     17
27  14 13 14     91.11111         2075            3579   26  12.962963     12     17
28  14 15 12     91.11111         2074            3579   26  12.962963     12     17
29  15 12 13     88.88889         2073            3577   29  14.814815     11     15
30  15 11 14     88.88889         2073            3577   29  14.814815     11     15
31  15 10 15     88.88889         2073            3577   29  14.814815     11     15
32  12 15 15     93.33333         2073            3577   29  14.814815     11     15
33  15 14 11     88.88889         2073            3576   33  15.740741     10     14
34  15 13 12     88.88889         2073            3576   33  15.740741     10     14
35  15 15 10     88.88889         2072            3575   35  16.203704     10     14
36  13 14 14     91.11111         2072            3574   36  17.129630      9     13
37  13 13 15     91.11111         2072            3574   36  17.129630      9     13
38  13 15 13     91.11111         2071            3573   38  17.592593      9     12
39  14 12 14     88.88889         2070            3572   39  18.518519      8     12
40  14 11 15     88.88889         2070            3572   39  18.518519      8     12
41  14 14 12     88.88889         2070            3571   41  19.444444      8     11
42  14 13 13     88.88889         2070            3571   41  19.444444      8     11
43  14 15 11     88.88889         2069            3570   43  19.907407      8     11
44  15 10 14     86.66667         2069            3569   44  21.296296      7     10
45  15 11 13     86.66667         2068            3569   44  21.296296      7     10
46  12 14 15     91.11111         2068            3569   44  21.296296      7     10
47  15 13 11     86.66667         2068            3568   47  22.685185      7      9
48  15 12 12     86.66667         2068            3568   47  22.685185      7      9
49  12 15 14     91.11111         2068            3568   47  22.685185      7      9
50  15 14 10     86.66667         2068            3567   50  23.148148      7      9
51  13 14 13     88.88889         2067            3566   51  24.537037      6      9
52  13 13 14     88.88889         2067            3566   51  24.537037      6      9
53  13 12 15     88.88889         2067            3566   51  24.537037      6      9
54  13 15 12     88.88889         2066            3565   54  25.000000      6      9
55  14 11 14     86.66667         2066            3564   55  25.925926      6      8
56  14 10 15     86.66667         2066            3564   55  25.925926      6      8
57  14 13 12     86.66667         2065            3563   57  27.314815      6      8
58  14 12 13     86.66667         2065            3563   57  27.314815      6      8
59  11 15 15     91.11111         2065            3563   57  27.314815      6      8
60  14 14 11     86.66667         2065            3562   60  28.240741      5      7
61  14 15 10     86.66667         2064            3562   60  28.240741      5      7
62  15 10 13     84.44444         2064            3561   62  29.166667      5      7
63  12 13 15     88.88889         2064            3561   62  29.166667      5      7
64  15 11 12     84.44444         2064            3560   64  31.018519      5      7
65  12 14 14     88.88889         2064            3560   64  31.018519      5      7
66  15 12 11     84.44444         2063            3560   64  31.018519      5      7
67  12 15 13     88.88889         2063            3560   64  31.018519      5      7
68  15 13 10     84.44444         2063            3559   68  31.481481      5      7
69  13 11 15     86.66667         2063            3558   69  32.870370      5      6
70  13 13 13     86.66667         2062            3558   69  32.870370      5      6
71  13 12 14     86.66667         2062            3558   69  32.870370      5      6
72  13 14 12     86.66667         2062            3557   72  33.796296      4      6
73  13 15 11     86.66667         2061            3557   72  33.796296      4      6
74  14 10 14     84.44444         2061            3556   74  34.259259      4      6
75  14 11 13     84.44444         2061            3555   75  36.111111      4      6
76  11 14 15     88.88889         2061            3555   75  36.111111      4      6
77  14 12 12     84.44444         2060            3555   75  36.111111      4      6
78  11 15 14     88.88889         2060            3555   75  36.111111      4      6
79  14 14 10     84.44444         2060            3554   79  37.037037      4      5
80  14 13 11     84.44444         2060            3554   79  37.037037      4      5
81  12 12 15     86.66667         2059            3553   81  37.500000      4      5
82  15 11 11     82.22222         2059            3552   82  39.814815      4      5
83  15 10 12     82.22222         2059            3552   82  39.814815      4      5
84  12 15 12     86.66667         2059            3552   82  39.814815      4      5
85  12 14 13     86.66667         2059            3552   82  39.814815      4      5
86  12 13 14     86.66667         2059            3552   82  39.814815      4      5
87  15 12 10     82.22222         2058            3551   87  40.277778      4      5
88  13 12 13     84.44444         2058            3550   88  41.666667      3      5
89  13 11 14     84.44444         2058            3550   88  41.666667      3      5
90  13 10 15     84.44444         2058            3550   88  41.666667      3      5
91  13 14 11     84.44444         2057            3549   91  43.055556      3      5
92  13 13 12     84.44444         2057            3549   91  43.055556      3      5
93  10 15 15     88.88889         2057            3549   91  43.055556      3      5
94  13 15 10     84.44444         2057            3548   94  43.518519      3      5
95  14 11 12     82.22222         2056            3547   95  45.370370      3      4
96  14 10 13     82.22222         2056            3547   95  45.370370      3      4
97  11 14 14     86.66667         2056            3547   95  45.370370      3      4
98  11 13 15     86.66667         2056            3547   95  45.370370      3      4
99  14 12 11     82.22222         2056            3546   99  46.759259      3      4
100 11 15 13     86.66667         2056            3546   99  46.759259      3      4
101 14 13 10     82.22222         2055            3546   99  46.759259      3      4
102 12 12 14     84.44444         2055            3545  102  47.685185      3      4
103 12 11 15     84.44444         2055            3545  102  47.685185      3      4
104 15 10 11     80.00000         2054            3544  104  49.074074      3      4
105 12 14 12     84.44444         2054            3544  104  49.074074      3      4
106 12 13 13     84.44444         2054            3544  104  49.074074      3      4
107 15 11 10     80.00000         2054            3543  107  50.000000      3      4
108 12 15 11     84.44444         2054            3543  107  50.000000      3      4
109 13 11 13     82.22222         2053            3542  109  51.388889      3      4
110 13 10 14     82.22222         2053            3542  109  51.388889      3      4
111 10 14 15     86.66667         2053            3542  109  51.388889      3      4
112 13 12 12     82.22222         2053            3541  112  52.777778      3      4
113 10 15 14     86.66667         2053            3541  112  52.777778      3      4
114 13 13 11     82.22222         2052            3541  112  52.777778      3      4
115 13 14 10     82.22222         2052            3540  115  53.240741      3      4
116 14 10 12     80.00000         2051            3539  116  55.092593      3      3
117 11 14 13     84.44444         2051            3539  116  55.092593      3      3
118 11 13 14     84.44444         2051            3539  116  55.092593      3      3
119 11 12 15     84.44444         2051            3539  116  55.092593      3      3
120 14 12 10     80.00000         2051            3538  120  56.481481      2      3
121 14 11 11     80.00000         2051            3538  120  56.481481      2      3
122 11 15 12     84.44444         2051            3538  120  56.481481      2      3
123 12 11 14     82.22222         2050            3537  123  57.407407      2      3
124 12 10 15     82.22222         2050            3537  123  57.407407      2      3
125 12 12 13     82.22222         2050            3536  125  58.333333      2      3
126 12 13 12     82.22222         2049            3536  125  58.333333      2      3
127 15 10 10     77.77778         2049            3535  127  59.722222      2      3
128 12 15 10     82.22222         2049            3535  127  59.722222      2      3
129 12 14 11     82.22222         2049            3535  127  59.722222      2      3
130 13 10 13     80.00000         2048            3534  130  60.648148      2      3
131 10 13 15     84.44444         2048            3534  130  60.648148      2      3
132 13 12 11     80.00000         2048            3533  132  62.500000      2      3
133 13 11 12     80.00000         2048            3533  132  62.500000      2      3
134 10 15 13     84.44444         2048            3533  132  62.500000      2      3
135 10 14 14     84.44444         2048            3533  132  62.500000      2      3
136 13 13 10     80.00000         2048            3532  136  62.962963      2      3
137 11 12 14     82.22222         2047            3531  137  64.814815      2      3
138 11 11 15     82.22222         2047            3531  137  64.814815      2      3
139 14 10 11     77.77778         2046            3531  137  64.814815      2      3
140 11 13 13     82.22222         2046            3531  137  64.814815      2      3
141 14 11 10     77.77778         2046            3530  141  66.203704      2      3
142 11 15 11     82.22222         2046            3530  141  66.203704      2      3
143 11 14 12     82.22222         2046            3530  141  66.203704      2      3
144 12 10 14     80.00000         2045            3529  144  66.666667      2      3
145 12 12 12     80.00000         2045            3528  145  67.592593      2      3
146 12 11 13     80.00000         2045            3528  145  67.592593      2      3
147 12 13 11     80.00000         2045            3527  147  68.518519      2      2
148 12 14 10     80.00000         2044            3527  147  68.518519      2      2
149 10 12 15     82.22222         2044            3526  149  69.444444      2      2
150 13 10 12     77.77778         2043            3526  149  69.444444      2      2
151 13 12 10     77.77778         2043            3525  151  71.296296      2      2
152 13 11 11     77.77778         2043            3525  151  71.296296      2      2
153 10 14 13     82.22222         2043            3525  151  71.296296      2      2
154 10 13 14     82.22222         2043            3525  151  71.296296      2      2
155 10 15 12     82.22222         2043            3524  155  71.759259      2      2
156 11 12 13     80.00000         2042            3523  156  73.148148      2      2
157 11 11 14     80.00000         2042            3523  156  73.148148      2      2
158 11 10 15     80.00000         2042            3523  156  73.148148      2      2
159 14 10 10     75.55556         2042            3522  159  74.537037      2      2
160 11 13 12     80.00000         2042            3522  159  74.537037      2      2
161 11 14 11     80.00000         2041            3522  159  74.537037      2      2
162 11 15 10     80.00000         2041            3521  162  75.000000      2      2
163 12 10 13     77.77778         2041            3520  163  76.388889      2      2
164 12 12 11     77.77778         2040            3520  163  76.388889      2      2
165 12 11 12     77.77778         2040            3520  163  76.388889      2      2
166 12 13 10     77.77778         2040            3519  166  76.851852      2      2
167 10 12 14     80.00000         2039            3518  167  77.777778      2      2
168 10 11 15     80.00000         2039            3518  167  77.777778      2      2
169 13 10 11     75.55556         2039            3517  169  79.629630      2      2
170 10 13 13     80.00000         2039            3517  169  79.629630      2      2
171 13 11 10     75.55556         2038            3517  169  79.629630      2      2
172 10 14 12     80.00000         2038            3517  169  79.629630      2      2
173 10 15 11     80.00000         2038            3516  173  80.092593      1      2
174 11 10 14     77.77778         2038            3515  174  81.481481      1      2
175 11 12 12     77.77778         2037            3515  174  81.481481      1      2
176 11 11 13     77.77778         2037            3515  174  81.481481      1      2
177 11 14 10     77.77778         2037            3514  177  82.407407      1      2
178 11 13 11     77.77778         2037            3514  177  82.407407      1      2
179 12 11 11     75.55556         2036            3512  179  83.333333      1      2
180 12 10 12     75.55556         2036            3512  179  83.333333      1      2
181 12 12 10     75.55556         2035            3511  181  83.796296      1      2
182 10 10 15     77.77778         2035            3510  182  84.722222      1      2
183 10 11 14     77.77778         2034            3510  182  84.722222      1      2
184 13 10 10     73.33333         2034            3509  184  86.111111      1      2
185 10 13 12     77.77778         2034            3509  184  86.111111      1      2
186 10 12 13     77.77778         2034            3509  184  86.111111      1      2
187 10 14 11     77.77778         2034            3508  187  87.037037      1      2
188 10 15 10     77.77778         2033            3508  187  87.037037      1      2
189 11 11 12     75.55556         2033            3507  189  87.962963      1      2
190 11 10 13     75.55556         2033            3507  189  87.962963      1      2
191 11 13 10     75.55556         2032            3506  191  88.888889      1      2
192 11 12 11     75.55556         2032            3506  191  88.888889      1      2
193 12 10 11     73.33333         2031            3504  193  89.351852      1      2
194 12 11 10     73.33333         2031            3503  194  89.814815      1      2
195 10 11 13     75.55556         2030            3502  195  90.740741      1      1
196 10 10 14     75.55556         2030            3502  195  90.740741      1      1
197 10 13 11     75.55556         2029            3501  197  91.666667      1      1
198 10 12 12     75.55556         2029            3501  197  91.666667      1      1
199 10 14 10     75.55556         2029            3500  199  92.129630      1      1
200 11 10 12     73.33333         2028            3499  200  92.592593      1      1
201 11 11 11     73.33333         2028            3498  201  93.518519      1      1
202 11 12 10     73.33333         2027            3498  201  93.518519      1      1
203 12 10 10     71.11111         2026            3496  203  93.981481      1      1
204 10 10 13     73.33333         2025            3494  204  94.444444      1      1
205 10 12 11     73.33333         2025            3493  205  95.370370      1      1
206 10 11 12     73.33333         2025            3493  205  95.370370      1      1
207 10 13 10     73.33333         2024            3492  207  95.833333      1      1
208 11 10 11     71.11111         2023            3491  208  96.296296      1      1
209 11 11 10     71.11111         2023            3490  209  96.759259      1      1
210 10 12 10     71.11111         2020            3485  210  98.148148      1      1
211 10 11 11     71.11111         2020            3485  210  98.148148      1      1
212 10 10 12     71.11111         2020            3485  210  98.148148      1      1
213 11 10 10     68.88889         2018            3482  213  98.611111      1      1
214 10 11 10     68.88889         2015            3477  214  99.537037      1      1
215 10 10 11     68.88889         2015            3477  214  99.537037      1      1
216 10 10 10     66.66667         2011            3469  216 100.000000      0      0

データの出力時にrownamesを出したくない/ポケモンGO,ラッキーCP777になる固体値全部

ふつうに行列をコンソールに出力すると

> lucky777
AT DF HP Lv
[1,] 0 2 14 24
[2,] 0 3 11 24
[3,] 0 3 12 24
[4,] 0 4 8 24
[5,] 0 4 9 24

のようにrownamesがNULLであっても、[1,] のように何行目か
分かるようにコンソールに出力される。
これを消したい。

write.table(lucky777, "", quote=F, sep="\t", row.names=F, col.names=T)

のようにwrite.tableで出力ファイルを""にすれば、コンソールにcolnamesのみ
出力される。

以下ラッキーがCP777になるすべての固体値組み合わせ

ans <- list()
ct <- 1
for(i in 0:15){
      for(j in 0:15){
            for(k in 0:15){
                  for(l in 1:39){
if(cp.cal(i, j, k, 60, 176, 500, l) == 777){
      ans[[ct]] <- c(i,j,k,l)
      ct <- ct + 1
}
                  }}}}

lucky777 <- matrix(unlist(ans), ncol = 4, byrow = TRUE)
colnames(lucky777) <- c("AT", "DF", "HP", "Lv")

write.table(lucky777, "", quote=F, sep="\t", row.names=F, col.names=T)

ラッキーがCP777になる固体値/レベルの組み合わせは110も有るようだ。
ラッキー777が2体になってほくそ笑んでいたけど、それほどレアでは
ないようだ。

AT	DF	HP	Lv
0	2	14	24
0	3	11	24
0	3	12	24
0	4	8	24
0	4	9	24
0	5	6	24
0	6	3	24
0	7	0	24
1	0	3	24
1	1	0	24
1	1	1	24
1	12	13	23
1	13	10	23
1	14	7	23
1	14	8	23
1	15	5	23
2	6	13	23
2	7	10	23
2	8	7	23
2	8	8	23
2	9	4	23
2	9	5	23
2	10	2	23
3	0	14	23
3	1	11	23
3	2	8	23
3	3	5	23
3	4	2	23
3	5	0	23
4	10	15	22
4	11	12	22
4	12	9	22
4	12	10	22
4	13	6	22
4	13	7	22
4	14	4	22
4	15	1	22
5	5	13	22
5	6	10	22
5	7	7	22
5	8	4	22
5	8	5	22
5	9	2	22
6	0	11	22
6	0	12	22
6	1	9	22
6	2	6	22
6	3	3	22
6	4	0	22
7	10	15	21
7	11	13	21
7	12	10	21
7	13	7	21
7	13	8	21
7	14	5	21
7	15	2	21
8	5	14	21
8	5	15	21
8	6	11	21
8	6	12	21
8	7	9	21
8	8	6	21
8	9	3	21
8	10	0	21
8	10	1	21
9	0	14	21
9	1	11	21
9	2	8	21
9	3	5	21
9	4	2	21
9	5	0	21
10	12	15	20
10	13	12	20
10	13	13	20
10	14	10	20
10	15	7	20
11	7	14	20
11	7	15	20
11	8	12	20
11	9	9	20
11	10	6	20
11	11	3	20
11	11	4	20
11	12	1	20
12	2	14	20
12	2	15	20
12	3	11	20
12	3	12	20
12	4	8	20
12	4	9	20
12	5	6	20
12	6	3	20
12	7	0	20
13	0	6	20
13	1	3	20
13	2	0	20
14	11	13	19
14	11	14	19
14	12	11	19
14	13	8	19
14	14	5	19
14	14	6	19
14	15	3	19
15	6	14	19
15	7	11	19
15	8	8	19
15	9	5	19
15	10	2	19
15	10	3	19
15	11	0	19

超ムカつくtibbleクラス:バージョンアップでエラー頻発

Rのバージョンアップで、エラーが出ることが多くなった。

その多くはどうもtibbleクラスが関わっている!
色んなパッケージがtibbleではエラーを吐きまくる。

読み込んだ段階でdeta.frameがtibbleになっていることがしばしばである。

たとえばこんな感じ
> str(dat)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 1930 obs. of 233 variables:

このtbl_dfとかtblってやつが問題。
色んなパッケージでこいつが絡むとエラーを吐ききまくる。
便利だかなんだか知らないが、まさに余計なお世話のクラスである。
まじムカつく。

例えばむかしは
dat[, "x"]
とするとdat$xのベクトルが得られていたが、
tibbleだとvectorじゃなく縦長のtibbleになるので転置して
as.vector(t(dat[, "x"]))
などとしないとvectorとして使えない。

おかげで困っていたが、

単純に
dat <- data.frame(dat)
と強制変換すれば良いことがわかった。
これでまた捗るわ。