TuringModels

Multilevel Reedfrogs

  1. Data
  2. Model
  3. Output
  4. Original output

Data

import CSV
import Random

using DataFrames
using TuringModels: project_root

Random.seed!(1)

path = joinpath(project_root, "data", "reedfrogs.csv")
df = CSV.read(path, DataFrame; delim=';')
df.tank = 1:nrow(df)
df
48×6 DataFrame
 Row │ density  pred     size     surv   propsurv  tank
     │ Int64    String7  String7  Int64  Float64   Int64
─────┼───────────────────────────────────────────────────
   1 │      10  no       big          9  0.9           1
   2 │      10  no       big         10  1.0           2
   3 │      10  no       big          7  0.7           3
   4 │      10  no       big         10  1.0           4
   5 │      10  no       small        9  0.9           5
   6 │      10  no       small        9  0.9           6
   7 │      10  no       small       10  1.0           7
   8 │      10  no       small        9  0.9           8
   9 │      10  pred     big          4  0.4           9
  10 │      10  pred     big          9  0.9          10
  11 │      10  pred     big          7  0.7          11
  12 │      10  pred     big          6  0.6          12
  13 │      10  pred     small        7  0.7          13
  14 │      10  pred     small        5  0.5          14
  15 │      10  pred     small        9  0.9          15
  16 │      10  pred     small        9  0.9          16
  17 │      25  no       big         24  0.96         17
  18 │      25  no       big         23  0.92         18
  19 │      25  no       big         22  0.88         19
  20 │      25  no       big         25  1.0          20
  21 │      25  no       small       23  0.92         21
  22 │      25  no       small       23  0.92         22
  23 │      25  no       small       23  0.92         23
  24 │      25  no       small       21  0.84         24
  25 │      25  pred     big          6  0.24         25
  26 │      25  pred     big         13  0.52         26
  27 │      25  pred     big          4  0.16         27
  28 │      25  pred     big          9  0.36         28
  29 │      25  pred     small       13  0.52         29
  30 │      25  pred     small       20  0.8          30
  31 │      25  pred     small        8  0.32         31
  32 │      25  pred     small       10  0.4          32
  33 │      35  no       big         34  0.971429     33
  34 │      35  no       big         33  0.942857     34
  35 │      35  no       big         33  0.942857     35
  36 │      35  no       big         31  0.885714     36
  37 │      35  no       small       31  0.885714     37
  38 │      35  no       small       35  1.0          38
  39 │      35  no       small       33  0.942857     39
  40 │      35  no       small       32  0.914286     40
  41 │      35  pred     big          4  0.114286     41
  42 │      35  pred     big         12  0.342857     42
  43 │      35  pred     big         13  0.371429     43
  44 │      35  pred     big         14  0.4          44
  45 │      35  pred     small       22  0.628571     45
  46 │      35  pred     small       12  0.342857     46
  47 │      35  pred     small       31  0.885714     47
  48 │      35  pred     small       17  0.485714     48

Model

using Turing

# Thanks to Kai Xu!

@model function m12_2(density, tank, surv)
    σ ~ truncated(Cauchy(0, 1), 0, Inf)
    α ~ Normal(0, 1)

    N_tank = length(tank)
    α_tank ~ filldist(Normal(α, σ), N_tank)

    logitp = α_tank[tank]
    surv .~ BinomialLogit.(density, logitp)
end;

Output

chns = sample(
    m12_2(df.density, df.tank, df.surv),
    NUTS(),
    1000
)
Chains MCMC chain (1000×62×1 Array{Float64, 3}):

Iterations        = 501:1:1500
Number of chains  = 1
Samples per chain = 1000
Wall duration     = 12.85 seconds
Compute duration  = 12.85 seconds
parameters        = σ, α, α_tank[1], α_tank[2], α_tank[3], α_tank[4], α_tank[5], α_tank[6], α_tank[7], α_tank[8], α_tank[9], α_tank[10], α_tank[11], α_tank[12], α_tank[13], α_tank[14], α_tank[15], α_tank[16], α_tank[17], α_tank[18], α_tank[19], α_tank[20], α_tank[21], α_tank[22], α_tank[23], α_tank[24], α_tank[25], α_tank[26], α_tank[27], α_tank[28], α_tank[29], α_tank[30], α_tank[31], α_tank[32], α_tank[33], α_tank[34], α_tank[35], α_tank[36], α_tank[37], α_tank[38], α_tank[39], α_tank[40], α_tank[41], α_tank[42], α_tank[43], α_tank[44], α_tank[45], α_tank[46], α_tank[47], α_tank[48]
internals         = lp, n_steps, is_accept, acceptance_rate, log_density, hamiltonian_energy, hamiltonian_energy_error, max_hamiltonian_energy_error, tree_depth, numerical_error, step_size, nom_step_size

Summary Statistics
  parameters      mean       std   naive_se      mcse         ess      rhat   ess_per_sec
      Symbol   Float64   Float64    Float64   Float64     Float64   Float64       Float64

           σ    1.6122    0.2198     0.0069    0.0080    760.6539    1.0043       59.1995
           α    1.2890    0.2449     0.0077    0.0090    820.5486    1.0013       63.8609
   α_tank[1]    2.1374    0.9389     0.0297    0.0205   1378.4423    0.9993      107.2801
   α_tank[2]    3.0100    1.0832     0.0343    0.0356   1180.7350    1.0024       91.8931
   α_tank[3]    0.9687    0.6331     0.0200    0.0126   2346.4011    0.9990      182.6135
   α_tank[4]    3.0852    1.1295     0.0357    0.0357   1012.3046    1.0014       78.7847
   α_tank[5]    2.1267    0.9077     0.0287    0.0219   1727.1441    0.9997      134.4186
   α_tank[6]    2.0958    0.8283     0.0262    0.0203   1813.2894    0.9990      141.1230
   α_tank[7]    3.0384    1.0697     0.0338    0.0310   1094.9079    0.9993       85.2135
   α_tank[8]    2.1301    0.9136     0.0289    0.0251   1545.7918    1.0006      120.3044
   α_tank[9]   -0.1926    0.6081     0.0192    0.0212    871.7524    0.9991       67.8459
  α_tank[10]    2.1004    0.8153     0.0258    0.0225   1839.2644    0.9991      143.1446
  α_tank[11]    0.9863    0.6973     0.0221    0.0213   1577.5891    1.0001      122.7791
  α_tank[12]    0.5829    0.6679     0.0211    0.0150   2273.6036    1.0000      176.9479
  α_tank[13]    0.9690    0.6507     0.0206    0.0175   1714.3621    1.0012      133.4238
  α_tank[14]    0.1927    0.6280     0.0199    0.0119   2112.1485    0.9990      164.3823
  α_tank[15]    2.1279    0.8835     0.0279    0.0214   1688.0641    0.9999      131.3771
  α_tank[16]    2.1133    0.8390     0.0265    0.0204   1282.8151    0.9991       99.8377
  α_tank[17]    2.8845    0.7727     0.0244    0.0163   1758.7494    0.9990      136.8783
  α_tank[18]    2.3677    0.6768     0.0214    0.0181   1219.9761    0.9992       94.9472
  α_tank[19]    1.9789    0.5726     0.0181    0.0139   2006.3134    0.9993      156.1455
  α_tank[20]    3.6485    1.0348     0.0327    0.0299   1414.4293    1.0017      110.0809
  α_tank[21]    2.3915    0.6787     0.0215    0.0199   1499.0173    0.9996      116.6641
  α_tank[22]    2.3652    0.6218     0.0197    0.0168   1497.3989    0.9992      116.5382
  α_tank[23]    2.3783    0.6646     0.0210    0.0161   1757.3910    1.0002      136.7726
  α_tank[24]    1.6842    0.5271     0.0167    0.0103   2530.7961    0.9997      196.9644
  α_tank[25]   -0.9978    0.4650     0.0147    0.0094   1702.3765    0.9999      132.4910
  α_tank[26]    0.1576    0.4060     0.0128    0.0077   1864.6188    0.9991      145.1178
  α_tank[27]   -1.4448    0.4930     0.0156    0.0119   1287.7446    0.9997      100.2214
  α_tank[28]   -0.4783    0.3928     0.0124    0.0109   1690.5976    0.9990      131.5743
  α_tank[29]    0.1558    0.3858     0.0122    0.0082   1758.7905    0.9996      136.8815
  α_tank[30]    1.4399    0.4855     0.0154    0.0142   1447.7423    0.9993      112.6735
  α_tank[31]   -0.6438    0.3961     0.0125    0.0089   1986.9955    1.0004      154.6420
  α_tank[32]   -0.3030    0.3904     0.0123    0.0087   2404.2467    0.9990      187.1155
  α_tank[33]    3.1665    0.7435     0.0235    0.0191   2469.8098    0.9990      192.2181
  α_tank[34]    2.6877    0.6237     0.0197    0.0159   1845.9603    1.0025      143.6657
  α_tank[35]    2.6908    0.6171     0.0195    0.0130   1505.5490    0.9997      117.1725
  α_tank[36]    2.0563    0.5311     0.0168    0.0106   2478.8011    0.9990      192.9178
  α_tank[37]    2.0732    0.5022     0.0159    0.0121   1810.3625    0.9990      140.8952
  α_tank[38]    3.8654    0.9712     0.0307    0.0267   1478.5528    1.0048      115.0714
  α_tank[39]    2.7100    0.6089     0.0193    0.0171   1498.3252    1.0016      116.6103
  α_tank[40]    2.3138    0.5041     0.0159    0.0088   2623.4033    0.9990      204.1718
  α_tank[41]   -1.8144    0.4683     0.0148    0.0119   2102.8820    1.0008      163.6611
  α_tank[42]   -0.5827    0.3288     0.0104    0.0072   2200.8701    1.0008      171.2873
  α_tank[43]   -0.4574    0.3464     0.0110    0.0075   2108.7538    1.0007      164.1181
  α_tank[44]   -0.3386    0.3565     0.0113    0.0084   1567.3859    0.9990      121.9850
  α_tank[45]    0.5821    0.3525     0.0111    0.0067   2762.9992    0.9990      215.0361
  α_tank[46]   -0.5720    0.3342     0.0106    0.0060   2353.1916    0.9990      183.1420
  α_tank[47]    2.0400    0.5069     0.0160    0.0098   2448.9585    0.9990      190.5953
  α_tank[48]    0.0005    0.3217     0.0102    0.0086   2234.2914    0.9991      173.8883

Quantiles
  parameters      2.5%     25.0%     50.0%     75.0%     97.5%
      Symbol   Float64   Float64   Float64   Float64   Float64

           σ    1.2406    1.4578    1.5905    1.7425    2.1165
           α    0.8200    1.1291    1.2895    1.4499    1.7819
   α_tank[1]    0.5523    1.4632    2.0607    2.6956    4.1606
   α_tank[2]    1.1175    2.2856    2.9054    3.5978    5.4404
   α_tank[3]   -0.2197    0.5122    0.9481    1.3899    2.2986
   α_tank[4]    1.2100    2.2787    2.9453    3.8028    5.5958
   α_tank[5]    0.6082    1.4827    2.0319    2.6388    4.2060
   α_tank[6]    0.6248    1.5010    2.0382    2.6051    3.9449
   α_tank[7]    1.1976    2.2528    2.9491    3.7046    5.3124
   α_tank[8]    0.5727    1.4707    2.0567    2.6895    4.1193
   α_tank[9]   -1.4907   -0.5618   -0.1760    0.2022    0.9445
  α_tank[10]    0.6549    1.5446    2.0091    2.6149    3.8604
  α_tank[11]   -0.3294    0.5114    0.9596    1.4190    2.4334
  α_tank[12]   -0.6942    0.1728    0.5588    1.0142    1.9200
  α_tank[13]   -0.1841    0.5314    0.9396    1.3947    2.4027
  α_tank[14]   -1.0156   -0.2437    0.1660    0.6097    1.5269
  α_tank[15]    0.5590    1.4669    2.0768    2.7023    3.9519
  α_tank[16]    0.6655    1.5537    2.0207    2.6575    3.9569
  α_tank[17]    1.5438    2.3333    2.8411    3.3784    4.5548
  α_tank[18]    1.2400    1.8657    2.3136    2.8092    3.8092
  α_tank[19]    0.8910    1.6089    1.9257    2.3192    3.1897
  α_tank[20]    1.9446    2.8788    3.5636    4.2666    6.0463
  α_tank[21]    1.1053    1.9371    2.3424    2.7964    3.8878
  α_tank[22]    1.2825    1.9354    2.3139    2.7652    3.7217
  α_tank[23]    1.2354    1.9199    2.3363    2.8059    3.8189
  α_tank[24]    0.7211    1.3206    1.6708    2.0142    2.8276
  α_tank[25]   -1.8783   -1.3179   -0.9882   -0.6865   -0.1090
  α_tank[26]   -0.6593   -0.1051    0.1574    0.4247    0.9860
  α_tank[27]   -2.4864   -1.7545   -1.4130   -1.1155   -0.5388
  α_tank[28]   -1.2546   -0.7483   -0.4663   -0.2040    0.3074
  α_tank[29]   -0.5945   -0.1068    0.1583    0.4154    0.9220
  α_tank[30]    0.5658    1.1026    1.4144    1.7472    2.4485
  α_tank[31]   -1.4702   -0.9045   -0.6408   -0.3754    0.1192
  α_tank[32]   -1.1111   -0.5678   -0.3081   -0.0270    0.4390
  α_tank[33]    1.8884    2.6507    3.1097    3.6334    4.8023
  α_tank[34]    1.6605    2.2419    2.6371    3.0689    4.0367
  α_tank[35]    1.6524    2.2591    2.6456    3.0495    3.9632
  α_tank[36]    1.1537    1.6782    2.0249    2.4004    3.2031
  α_tank[37]    1.1543    1.7108    2.0605    2.4145    3.1263
  α_tank[38]    2.2486    3.1677    3.7805    4.4203    5.9944
  α_tank[39]    1.6538    2.2856    2.6435    3.0914    4.0489
  α_tank[40]    1.4077    1.9575    2.2923    2.6403    3.3486
  α_tank[41]   -2.8395   -2.0888   -1.7962   -1.4999   -0.9712
  α_tank[42]   -1.2646   -0.7923   -0.5911   -0.3547    0.0455
  α_tank[43]   -1.1654   -0.6821   -0.4571   -0.2306    0.2268
  α_tank[44]   -1.0441   -0.5784   -0.3317   -0.0797    0.2828
  α_tank[45]   -0.0804    0.3340    0.5867    0.8078    1.2674
  α_tank[46]   -1.2332   -0.7967   -0.5660   -0.3454    0.0880
  α_tank[47]    1.1439    1.6989    2.0093    2.3306    3.1101
  α_tank[48]   -0.6311   -0.2095    0.0009    0.2180    0.6099

using StatsPlots

StatsPlots.plot(chns)
"/home/runner/work/TuringModels.jl/TuringModels.jl/__site/assets/models/multilevel-reedfrogs/code/output/chns.svg"

Original output

m122rethinking = "
                mean   sd  5.5% 94.5% n_eff Rhat
a               1.30 0.25  0.90  1.70 11662    1
sigma       1.62 0.22  1.30  1.99  6556    1
a_tank[1]   2.12 0.88  0.84  3.60 16091    1
a_tank[2]   3.05 1.10  1.52  4.92 10962    1
a_tank[3]   1.00 0.66 -0.02  2.10 18175    1
a_tank[4]   3.05 1.11  1.47  4.96 10181    1
a_tank[5]   2.13 0.87  0.85  3.62 13720    1
a_tank[6]   2.12 0.86  0.86  3.59 11628    1
a_tank[7]   3.07 1.13  1.47  5.03 10315    1
a_tank[8]   2.13 0.87  0.86  3.60 13754    1
a_tank[9]  -0.18 0.60 -1.14  0.76 18218    1
a_tank[10]  2.11 0.86  0.83  3.58 15121    1
a_tank[11]  1.00 0.67 -0.04  2.09 17390    1
a_tank[12]  0.58 0.62 -0.41  1.60 17209    1
a_tank[13]  0.99 0.66 -0.04  2.09 15225    1
a_tank[14]  0.19 0.62 -0.79  1.20 18293    1
a_tank[15]  2.13 0.89  0.83  3.63 12445    1
a_tank[16]  2.11 0.87  0.87  3.61 12385    1
a_tank[17]  2.89 0.80  1.76  4.29 12583    1
a_tank[18]  2.38 0.66  1.43  3.49 14437    1
a_tank[19]  2.00 0.58  1.12  2.99 13959    1
a_tank[20]  3.67 1.03  2.20  5.44 10629    1
a_tank[21]  2.38 0.65  1.42  3.47 15309    1
a_tank[22]  2.39 0.66  1.42  3.49 13614    1
a_tank[23]  2.40 0.67  1.41  3.53 11868    1
a_tank[24]  1.69 0.52  0.90  2.55 18468    1
a_tank[25] -1.00 0.45 -1.74 -0.30 18153    1
a_tank[26]  0.16 0.40 -0.47  0.81 21895    1
a_tank[27] -1.44 0.50 -2.28 -0.69 16718    1
a_tank[28] -0.47 0.41 -1.15  0.17 20160    1
a_tank[29]  0.15 0.40 -0.48  0.80 19401    1
a_tank[30]  1.44 0.49  0.70  2.24 15407    1
a_tank[31] -0.64 0.42 -1.33 -0.01 15356    1
a_tank[32] -0.31 0.40 -0.95  0.32 19130    1
a_tank[33]  3.18 0.78  2.06  4.55 10894    1
a_tank[34]  2.70 0.66  1.75  3.84 13573    1
a_tank[35]  2.69 0.64  1.74  3.78 13876    1
a_tank[36]  2.06 0.53  1.26  2.92 16329    1
a_tank[37]  2.06 0.51  1.29  2.91 14672    1
a_tank[38]  3.88 0.97  2.52  5.57  9349    1
a_tank[39]  2.70 0.64  1.77  3.78 13444    1
a_tank[40]  2.34 0.56  1.49  3.31 14966    1
a_tank[41] -1.82 0.48 -2.61 -1.10 14214    1
a_tank[42] -0.58 0.36 -1.16 -0.02 17203    1
a_tank[43] -0.46 0.35 -1.02  0.08 17762    1
a_tank[44] -0.34 0.34 -0.90  0.20 16740    1
a_tank[45]  0.58 0.35  0.02  1.14 18946    1
a_tank[46] -0.57 0.34 -1.13 -0.03 19761    1
a_tank[47]  2.05 0.51  1.30  2.90 15122    1
a_tank[48]  0.00 0.33 -0.53  0.53 18236    1
";