Skip to contents

Call grimmer_map() to GRIMMER-test any number of combinations of mean, standard deviation, sample size, and number of items. Mapping function for GRIMMER-testing.

For summary statistics, call audit() on the results. Visualize results using grim_plot(), as with GRIM results.

Usage

grimmer_map(
  data,
  items = 1,
  merge_items = TRUE,
  x = NULL,
  sd = NULL,
  n = NULL,
  show_reason = TRUE,
  rounding = "up_or_down",
  threshold = 5,
  symmetric = FALSE,
  tolerance = .Machine$double.eps^0.5
)

Arguments

data

Data frame with columns x, sd, n, and optionally items (see documentation for grim()). Any other columns in data will be returned alongside GRIMMER test results.

items

(NOTE: Don't use the items argument. It currently contains a bug that will be fixed in the future.) Integer. If there is no items column in data, this specifies the number of items composing the x and sd values. Default is 1, the most common case.

merge_items

Logical. If TRUE (the default), there will be no items column in the output. Instead, values from an items column or argument will be multiplied with values in the n column. This does not affect GRIM- or GRIMMER-testing.

x, sd, n

Optionally, specify these arguments as column names in data.

show_reason

Logical (length 1). Should there be a reason column that shows the reasons for inconsistencies (and NA for consistent values)? Default is FALSE.

rounding, threshold, symmetric, tolerance

Further parameters of GRIMMER-testing; see documentation for grimmer().

Value

A tibble with these columns --

  • x, sd, n: the inputs.

  • consistency: GRIMMER consistency of x, n, and items.

  • <extra>: any columns from data other than x, n, and items.

The tibble has the scr_grimmer_map class, which is recognized by the audit() generic. It also has the scr_grim_map class, so it can be visualized by grim_plot().

Summaries with audit()

There is an S3 method for audit(), so you can call audit() following grimmer_map() to get a summary of grimmer_map()'s results. It is a tibble with a single row and these columns --

  1. incons_cases: number of GRIMMER-inconsistent value sets.

  2. all_cases: total number of value sets.

  3. incons_rate: proportion of GRIMMER-inconsistent value sets.

  4. fail_grim: number of value sets that fail the GRIM test.

  5. fail_test1: number of value sets that fail the first GRIMMER test (sum of squares is a whole number).

  6. fail_test2: number of value sets that fail the second GRIMMER test (matching SDs).

  7. fail_test3: number of value sets that fail the third GRIMMER test (equal parity).

References

Allard, A. (2018). Analytic-GRIMMER: a new way of testing the possibility of standard deviations. https://aurelienallard.netlify.app/post/anaytic-grimmer-possibility-standard-deviations/

Anaya, J. (2016). The GRIMMER test: A method for testing the validity of reported measures of variability. PeerJ Preprints. https://peerj.com/preprints/2400v1/

Examples

# Use `grimmer_map()` on data like these:
pigs5
#> # A tibble: 12 × 3
#>    x     sd        n
#>    <chr> <chr> <dbl>
#>  1 7.22  5.30     38
#>  2 4.74  6.55     31
#>  3 5.23  2.55     35
#>  4 2.57  2.57     30
#>  5 6.77  2.18     33
#>  6 2.68  2.59     34
#>  7 7.01  6.68     35
#>  8 7.38  3.65     32
#>  9 3.14  5.32     33
#> 10 6.89  4.18     37
#> 11 5.00  2.18     31
#> 12 0.24  6.43     34

# The `consistency` column shows whether
# the values to its left are GRIMMER-consistent.
# If they aren't, the `reason` column says why:
pigs5 %>%
  grimmer_map()
#> # A tibble: 12 × 5
#>    x     sd        n consistency reason                       
#>    <chr> <chr> <dbl> <lgl>       <chr>                        
#>  1 7.22  5.30     38 FALSE       GRIM inconsistent            
#>  2 4.74  6.55     31 TRUE        Passed all                   
#>  3 5.23  2.55     35 FALSE       GRIMMER inconsistent (test 3)
#>  4 2.57  2.57     30 FALSE       GRIMMER inconsistent (test 3)
#>  5 6.77  2.18     33 FALSE       GRIM inconsistent            
#>  6 2.68  2.59     34 TRUE        Passed all                   
#>  7 7.01  6.68     35 FALSE       GRIM inconsistent            
#>  8 7.38  3.65     32 TRUE        Passed all                   
#>  9 3.14  5.32     33 FALSE       GRIM inconsistent            
#> 10 6.89  4.18     37 TRUE        Passed all                   
#> 11 5.00  2.18     31 TRUE        Passed all                   
#> 12 0.24  6.43     34 TRUE        Passed all                   

# Get summaries with `audit()`:
pigs5 %>%
  grimmer_map() %>%
  audit()
#> # A tibble: 1 × 7
#>   incons_cases all_cases incons_rate fail_grim fail_test1 fail_test2 fail_test3
#>          <int>     <int>       <dbl>     <int>      <int>      <int>      <int>
#> 1            6        12         0.5         4          0          0          2