Skip to contents

`rtmb_table` performs a chi-squared test of independence between two categorical variables. It provides both classic (frequentist) Pearson chi-squared tests and Bayesian multinomial-style models.

Usage

rtmb_table(
  x,
  y = NULL,
  data = NULL,
  correct = TRUE,
  prior = prior_flat(),
  fixed = NULL,
  WAIC = FALSE,
  ...
)

Arguments

x

Variable name, formula, table, or matrix.

y

Variable name (optional if x is a formula).

data

A data frame.

correct

Logical; if TRUE, apply Yates' continuity correction for 2x2 classic analyses.

prior

Prior specification (Bayesian mode). Default is `prior_flat()`.

fixed

Optional named list of fixed values for specific parameters.

WAIC

Logical; if TRUE, add pointwise `log_lik` to the generate block for WAIC.

...

Additional arguments.

Value

An `RTMB_Model` object.

Examples

# \donttest{
# Classic chi-squared test
rtmb_table(skill, cond, data = debate)$classic()
#> Pre-checking model code...
#> Checking RTMB setup...
#> Starting RTMB optimization...
#> 
#> 
#> Contingency Table Analysis
#> 
#> Log-Likelihood: -8.673, AIC: 29.346, BIC: 17.346
#> 
#> ---
#> Cell Probabilities (p) and Confidence Intervals:
#>                    Estimate Std. Error Lower 95% Upper 95% z value     Pr
#> p[skill:1, cond:0]  0.14333    0.02023   0.10368   0.18299 7.08479 <.0001
#> p[skill:2, cond:0]  0.17667    0.02202   0.13351   0.21982 8.02322 <.0001
#> p[skill:3, cond:0]  0.18000    0.02218   0.13653   0.22347 8.11501 <.0001
#> p[skill:1, cond:1]  0.14333    0.02023   0.10368   0.18299 7.08479 <.0001
#> p[skill:2, cond:1]  0.15000    0.02062   0.10959   0.19041 7.27605 <.0001
#> p[skill:3, cond:1]  0.20667    0.02338   0.16085   0.25249 8.84031 <.0001
#> 
#> Expected Counts (Independence) and Pearson Residuals:
#>                    Expected Residual
#> E[skill:1, cond:0] 43.00000  0.00000
#> E[skill:2, cond:0] 48.99997  0.57143
#> E[skill:3, cond:0] 58.00004 -0.52523
#> E[skill:1, cond:1] 42.99999  0.00000
#> E[skill:2, cond:1] 48.99996 -0.57142
#> E[skill:3, cond:1] 58.00004  0.52522
rtmb_table(table(debate$skill, debate$cond))$classic()
#> Pre-checking model code...
#> Checking RTMB setup...
#> Starting RTMB optimization...
#> 
#> 
#> Contingency Table Analysis
#> 
#> Log-Likelihood: -8.673, AIC: 29.346, BIC: 17.346
#> 
#> ---
#> Cell Probabilities (p) and Confidence Intervals:
#>                                                                                   Estimate
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:0]  0.14333
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:0]  0.17667
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:0]  0.18000
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:1]  0.14333
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:1]  0.15000
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:1]  0.20667
#>                                                                                   Std. Error
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:0]    0.02023
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:0]    0.02202
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:0]    0.02218
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:1]    0.02023
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:1]    0.02062
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:1]    0.02338
#>                                                                                   Lower 95%
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:0]   0.10368
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:0]   0.13351
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:0]   0.13653
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:1]   0.10368
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:1]   0.10959
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:1]   0.16085
#>                                                                                   Upper 95%
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:0]   0.18299
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:0]   0.21982
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:0]   0.22347
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:1]   0.18299
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:1]   0.19041
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:1]   0.25249
#>                                                                                   z value
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:0] 7.08480
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:0] 8.02322
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:0] 8.11501
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:1] 7.08480
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:1] 7.27605
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:1] 8.84031
#>                                                                                       Pr
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:0] <.0001
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:0] <.0001
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:0] <.0001
#> p[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:1] <.0001
#> p[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:1] <.0001
#> p[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:1] <.0001
#> 
#> Expected Counts (Independence) and Pearson Residuals:
#>                                                                                   Expected
#> E[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:0] 43.00009
#> E[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:0] 48.99996
#> E[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:0] 57.99999
#> E[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:1] 43.00007
#> E[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:1] 48.99994
#> E[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:1] 57.99996
#>                                                                                   Residual
#> E[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:0] -0.00001
#> E[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:0]  0.57143
#> E[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:0] -0.52522
#> E[table(debate$skill, debate$cond)_row:1, table(debate$skill, debate$cond)_col:1] -0.00001
#> E[table(debate$skill, debate$cond)_row:2, table(debate$skill, debate$cond)_col:1] -0.57142
#> E[table(debate$skill, debate$cond)_row:3, table(debate$skill, debate$cond)_col:1]  0.52523
# }