Convenience Functions, Moving Window Statistics, and Graphics

Introduction

This package contains:

  1. Functions that do something convenient.
  2. Functions for calculating moving-window statistics.
  3. Functions for generating graphs.

Convenience functions

truerange

The base R function range returns the minimum and maximum of a vector, but the “range” is actually defined as the difference between the minimum and maximum. This function calculates the actual range. It is equivalent to the base R code diff(range(x)), but a bit simpler and much faster.

x <- rnorm(1000)
all.equal(diff(range(x)), truerange(x))
#> [1] TRUE
as.data.frame(print(microbenchmark(diff(range(x)), truerange(x), times = 500)))
#> Unit: microseconds
#>            expr   min    lq     mean median    uq    max neval
#>  diff(range(x)) 8.717 9.207 9.683326  9.388 9.618 38.693   500
#>    truerange(x) 3.937 3.998 4.215928  4.178 4.293 21.520   500
expr time
diff(range(x)) 38693
diff(range(x)) 13545
diff(range(x)) 10059
truerange(x) 12373
truerange(x) 4359
diff(range(x)) 10760
diff(range(x)) 9538
diff(range(x)) 9237
truerange(x) 4539
diff(range(x)) 9658
diff(range(x)) 9217
diff(range(x)) 9067
truerange(x) 4338
truerange(x) 4018
diff(range(x)) 9448
truerange(x) 4319
diff(range(x)) 9327
truerange(x) 4419
truerange(x) 3987
truerange(x) 3948
truerange(x) 3977
diff(range(x)) 9919
diff(range(x)) 9838
diff(range(x)) 9208
truerange(x) 4428
diff(range(x)) 9748
truerange(x) 4368
diff(range(x)) 9668
truerange(x) 4248
truerange(x) 4027
diff(range(x)) 9207
diff(range(x)) 9357
truerange(x) 4389
diff(range(x)) 9367
truerange(x) 4308
diff(range(x)) 9548
diff(range(x)) 9198
diff(range(x)) 9939
truerange(x) 4298
truerange(x) 4018
diff(range(x)) 9788
truerange(x) 4238
diff(range(x)) 9238
truerange(x) 4338
truerange(x) 4037
truerange(x) 3977
truerange(x) 3997
diff(range(x)) 9788
diff(range(x)) 9317
diff(range(x)) 9517
diff(range(x)) 9958
truerange(x) 4449
truerange(x) 4048
truerange(x) 4008
truerange(x) 3937
diff(range(x)) 9278
truerange(x) 4358
diff(range(x)) 9427
diff(range(x)) 9177
diff(range(x)) 9528
truerange(x) 4358
diff(range(x)) 9608
truerange(x) 4258
diff(range(x)) 8867
truerange(x) 4318
diff(range(x)) 9358
diff(range(x)) 9217
diff(range(x)) 9578
diff(range(x)) 9688
diff(range(x)) 10069
truerange(x) 4408
truerange(x) 4008
truerange(x) 4038
diff(range(x)) 9387
diff(range(x)) 9117
truerange(x) 4378
diff(range(x)) 9719
truerange(x) 4238
diff(range(x)) 9357
diff(range(x)) 9238
truerange(x) 4328
diff(range(x)) 9478
diff(range(x)) 9087
diff(range(x)) 8927
truerange(x) 4298
diff(range(x)) 10529
truerange(x) 4218
diff(range(x)) 9377
diff(range(x)) 9277
truerange(x) 4237
truerange(x) 4018
diff(range(x)) 9478
diff(range(x)) 9447
diff(range(x)) 9277
truerange(x) 4418
diff(range(x)) 9187
truerange(x) 4227
truerange(x) 4007
diff(range(x)) 9799
truerange(x) 4188
truerange(x) 4228
truerange(x) 4097
truerange(x) 3998
truerange(x) 3937
truerange(x) 3938
truerange(x) 3977
diff(range(x)) 9728
truerange(x) 4308
diff(range(x)) 9538
diff(range(x)) 9348
diff(range(x)) 10660
truerange(x) 4449
diff(range(x)) 9277
diff(range(x)) 9718
diff(range(x)) 9518
diff(range(x)) 9027
truerange(x) 4308
diff(range(x)) 9348
truerange(x) 4248
diff(range(x)) 9297
truerange(x) 4198
truerange(x) 4218
diff(range(x)) 9408
diff(range(x)) 10289
diff(range(x)) 26139
truerange(x) 4869
truerange(x) 4207
truerange(x) 4088
truerange(x) 4008
diff(range(x)) 10229
truerange(x) 4298
diff(range(x)) 10359
truerange(x) 4268
truerange(x) 4147
truerange(x) 3967
diff(range(x)) 9508
diff(range(x)) 9868
diff(range(x)) 9468
diff(range(x)) 10159
diff(range(x)) 9218
diff(range(x)) 9598
diff(range(x)) 9858
truerange(x) 4358
diff(range(x)) 9418
truerange(x) 4298
truerange(x) 3968
diff(range(x)) 10369
diff(range(x)) 9568
truerange(x) 4348
truerange(x) 4047
diff(range(x)) 9758
truerange(x) 4238
diff(range(x)) 9527
diff(range(x)) 9498
diff(range(x)) 9468
truerange(x) 4659
truerange(x) 4027
diff(range(x)) 9177
truerange(x) 4308
diff(range(x)) 9387
truerange(x) 4238
diff(range(x)) 9248
diff(range(x)) 9207
truerange(x) 4408
truerange(x) 3998
diff(range(x)) 9397
truerange(x) 4268
truerange(x) 4017
truerange(x) 3978
diff(range(x)) 9367
truerange(x) 4188
diff(range(x)) 9097
truerange(x) 4228
diff(range(x)) 10119
truerange(x) 4188
truerange(x) 4008
diff(range(x)) 10018
diff(range(x)) 9848
diff(range(x)) 8766
diff(range(x)) 9597
truerange(x) 4308
truerange(x) 4068
diff(range(x)) 9178
truerange(x) 4358
truerange(x) 4028
truerange(x) 4017
truerange(x) 3998
truerange(x) 3988
truerange(x) 3958
diff(range(x)) 9538
truerange(x) 4188
truerange(x) 3987
truerange(x) 3978
diff(range(x)) 9307
truerange(x) 4238
diff(range(x)) 9718
diff(range(x)) 9769
diff(range(x)) 9578
diff(range(x)) 9578
diff(range(x)) 8937
truerange(x) 4358
diff(range(x)) 9708
diff(range(x)) 9848
truerange(x) 4228
truerange(x) 3987
diff(range(x)) 9568
truerange(x) 4248
diff(range(x)) 9248
diff(range(x)) 9048
truerange(x) 4318
diff(range(x)) 9137
diff(range(x)) 9277
diff(range(x)) 9879
truerange(x) 4278
truerange(x) 4027
truerange(x) 4027
truerange(x) 3968
truerange(x) 4007
truerange(x) 3988
truerange(x) 3997
diff(range(x)) 9838
diff(range(x)) 9598
diff(range(x)) 8967
truerange(x) 4318
truerange(x) 4018
diff(range(x)) 9598
truerange(x) 4207
diff(range(x)) 9298
truerange(x) 4248
truerange(x) 4018
diff(range(x)) 9748
truerange(x) 4208
truerange(x) 4118
truerange(x) 3987
truerange(x) 3978
truerange(x) 3977
truerange(x) 3998
truerange(x) 3967
diff(range(x)) 9328
truerange(x) 4168
diff(range(x)) 9548
diff(range(x)) 9529
truerange(x) 4279
truerange(x) 3957
truerange(x) 3947
diff(range(x)) 9798
diff(range(x)) 8827
diff(range(x)) 9377
truerange(x) 4278
truerange(x) 3968
truerange(x) 3957
truerange(x) 3938
truerange(x) 3957
diff(range(x)) 9428
truerange(x) 4148
diff(range(x)) 9347
diff(range(x)) 9086
diff(range(x)) 9278
truerange(x) 4358
diff(range(x)) 8997
diff(range(x)) 9247
truerange(x) 4409
truerange(x) 4458
truerange(x) 3958
diff(range(x)) 9407
diff(range(x)) 9558
truerange(x) 4338
diff(range(x)) 9839
truerange(x) 4198
diff(range(x)) 9979
diff(range(x)) 9669
diff(range(x)) 25147
truerange(x) 4649
diff(range(x)) 9999
diff(range(x)) 9428
diff(range(x)) 9738
truerange(x) 4418
truerange(x) 4047
diff(range(x)) 10159
diff(range(x)) 9378
truerange(x) 4408
diff(range(x)) 9258
truerange(x) 4218
truerange(x) 4067
truerange(x) 3978
diff(range(x)) 9918
truerange(x) 4277
diff(range(x)) 9908
truerange(x) 4308
truerange(x) 3988
truerange(x) 3977
diff(range(x)) 9678
truerange(x) 4177
diff(range(x)) 9829
truerange(x) 4238
diff(range(x)) 9668
diff(range(x)) 9307
truerange(x) 4298
truerange(x) 3967
diff(range(x)) 9167
truerange(x) 4167
truerange(x) 4068
truerange(x) 4128
diff(range(x)) 9307
diff(range(x)) 9166
truerange(x) 4328
diff(range(x)) 9487
diff(range(x)) 9357
diff(range(x)) 9408
diff(range(x)) 9167
truerange(x) 4358
diff(range(x)) 10059
diff(range(x)) 9388
truerange(x) 4328
truerange(x) 4008
truerange(x) 3988
diff(range(x)) 9638
diff(range(x)) 9318
truerange(x) 4188
diff(range(x)) 9187
truerange(x) 4238
diff(range(x)) 9137
truerange(x) 4298
diff(range(x)) 9418
truerange(x) 4709
diff(range(x)) 9107
truerange(x) 4188
truerange(x) 4007
diff(range(x)) 9638
diff(range(x)) 9026
diff(range(x)) 9407
diff(range(x)) 9288
diff(range(x)) 9437
truerange(x) 4438
truerange(x) 4047
truerange(x) 4037
truerange(x) 4078
diff(range(x)) 9357
diff(range(x)) 9418
diff(range(x)) 9408
diff(range(x)) 9187
diff(range(x)) 9067
truerange(x) 4588
diff(range(x)) 9507
truerange(x) 4288
truerange(x) 3998
truerange(x) 4118
truerange(x) 4007
truerange(x) 4077
truerange(x) 3998
truerange(x) 4248
diff(range(x)) 9428
diff(range(x)) 9689
diff(range(x)) 9317
diff(range(x)) 9007
truerange(x) 4459
diff(range(x)) 9357
truerange(x) 4328
diff(range(x)) 9438
diff(range(x)) 8977
diff(range(x)) 9458
truerange(x) 4228
truerange(x) 4047
truerange(x) 3977
diff(range(x)) 9147
diff(range(x)) 9157
truerange(x) 4268
truerange(x) 4037
truerange(x) 3958
diff(range(x)) 9017
diff(range(x)) 9337
truerange(x) 4208
truerange(x) 3988
truerange(x) 3978
truerange(x) 3998
diff(range(x)) 9658
truerange(x) 4278
truerange(x) 4007
diff(range(x)) 9497
diff(range(x)) 9408
truerange(x) 4308
diff(range(x)) 9188
truerange(x) 4217
truerange(x) 3988
truerange(x) 3977
truerange(x) 3977
diff(range(x)) 9247
truerange(x) 4268
truerange(x) 3988
diff(range(x)) 9638
diff(range(x)) 9718
truerange(x) 4318
truerange(x) 4027
diff(range(x)) 9709
diff(range(x)) 8927
diff(range(x)) 8977
diff(range(x)) 9568
diff(range(x)) 8927
truerange(x) 4368
truerange(x) 3998
truerange(x) 3977
diff(range(x)) 9448
truerange(x) 4338
truerange(x) 3988
truerange(x) 4007
diff(range(x)) 9498
diff(range(x)) 9297
truerange(x) 4369
truerange(x) 3987
diff(range(x)) 9407
diff(range(x)) 9578
diff(range(x)) 8787
diff(range(x)) 8907
truerange(x) 4328
diff(range(x)) 9769
truerange(x) 4238
truerange(x) 21520
truerange(x) 4248
diff(range(x)) 11973
truerange(x) 4418
diff(range(x)) 9498
diff(range(x)) 9448
truerange(x) 4279
diff(range(x)) 9608
truerange(x) 4187
diff(range(x)) 9247
diff(range(x)) 9428
truerange(x) 4228
diff(range(x)) 9237
diff(range(x)) 9538
diff(range(x)) 9949
truerange(x) 4308
diff(range(x)) 9267
truerange(x) 4168
diff(range(x)) 9218
diff(range(x)) 9728
truerange(x) 4198
diff(range(x)) 9077
truerange(x) 4198
diff(range(x)) 9137
diff(range(x)) 9918
diff(range(x)) 9068
truerange(x) 4438
diff(range(x)) 10129
truerange(x) 4228
diff(range(x)) 9598
diff(range(x)) 9067
truerange(x) 4498
diff(range(x)) 9528
truerange(x) 4157
diff(range(x)) 9709
diff(range(x)) 9447
diff(range(x)) 9548
diff(range(x)) 9188
diff(range(x)) 9107
diff(range(x)) 9257
diff(range(x)) 9668
diff(range(x)) 9418
diff(range(x)) 9658
diff(range(x)) 9057
truerange(x) 4529
truerange(x) 4047
truerange(x) 3988
truerange(x) 3967
truerange(x) 3967
diff(range(x)) 9017
truerange(x) 4188
diff(range(x)) 9317
truerange(x) 4178
truerange(x) 3998
truerange(x) 4007
truerange(x) 3988
truerange(x) 3957
truerange(x) 4068
truerange(x) 3957
truerange(x) 3957
diff(range(x)) 9588
diff(range(x)) 9488
diff(range(x)) 9387
diff(range(x)) 9388
diff(range(x)) 9307
diff(range(x)) 8717
truerange(x) 4408
truerange(x) 4118
diff(range(x)) 9067
truerange(x) 4358
truerange(x) 3978
diff(range(x)) 9097
truerange(x) 4228
diff(range(x)) 9938
diff(range(x)) 10330
diff(range(x)) 9257
truerange(x) 4278
diff(range(x)) 9127
diff(range(x)) 9598
diff(range(x)) 9307
truerange(x) 4308
truerange(x) 4008
truerange(x) 3997
diff(range(x)) 9408
truerange(x) 4228
diff(range(x)) 10389
diff(range(x)) 9818
diff(range(x)) 8967
truerange(x) 4408
diff(range(x)) 9177
truerange(x) 4349
diff(range(x)) 9368
truerange(x) 4258
truerange(x) 4018
truerange(x) 4067
diff(range(x)) 9228
diff(range(x)) 9327
diff(range(x)) 9178
truerange(x) 4328
diff(range(x)) 9397
truerange(x) 4198
truerange(x) 3998
truerange(x) 3987
truerange(x) 4098
truerange(x) 4058
truerange(x) 3987
diff(range(x)) 9778
diff(range(x)) 8876
truerange(x) 4288
diff(range(x)) 9238
diff(range(x)) 9317
truerange(x) 4268
truerange(x) 3967
truerange(x) 3988
diff(range(x)) 9017
diff(range(x)) 9688
truerange(x) 4238
diff(range(x)) 9578
diff(range(x)) 9347
truerange(x) 4248
truerange(x) 4057
truerange(x) 3998
diff(range(x)) 9197
diff(range(x)) 9628
truerange(x) 4328
truerange(x) 4028
truerange(x) 3957
diff(range(x)) 9167
truerange(x) 4298
diff(range(x)) 9087
diff(range(x)) 9859
truerange(x) 4368
diff(range(x)) 9838
diff(range(x)) 9358
truerange(x) 4358
diff(range(x)) 9738
diff(range(x)) 9418
diff(range(x)) 8917
truerange(x) 4278
diff(range(x)) 24906
diff(range(x)) 10529
diff(range(x)) 9378
truerange(x) 4709
truerange(x) 4027
diff(range(x)) 10049
truerange(x) 4228
diff(range(x)) 9257
diff(range(x)) 9418
diff(range(x)) 10350
truerange(x) 4708
truerange(x) 4038
truerange(x) 3998
diff(range(x)) 10289
diff(range(x)) 9789
truerange(x) 4379
truerange(x) 4007
diff(range(x)) 9338
truerange(x) 4228
diff(range(x)) 9307
diff(range(x)) 9208
truerange(x) 4178
diff(range(x)) 9277
diff(range(x)) 8977
truerange(x) 4368
diff(range(x)) 9147
truerange(x) 4419
truerange(x) 4197
truerange(x) 3998
truerange(x) 4038
truerange(x) 3978
diff(range(x)) 9327
diff(range(x)) 9448
truerange(x) 4268
diff(range(x)) 9267
diff(range(x)) 8997
diff(range(x)) 9769
diff(range(x)) 9628
truerange(x) 4348
truerange(x) 3997
diff(range(x)) 9198
truerange(x) 4288
truerange(x) 4047
diff(range(x)) 9467
truerange(x) 4198
diff(range(x)) 9138
diff(range(x)) 9457
diff(range(x)) 9077
truerange(x) 4288
diff(range(x)) 9478
diff(range(x)) 8947
truerange(x) 4328
diff(range(x)) 9688
diff(range(x)) 9148
truerange(x) 4349
truerange(x) 4007
truerange(x) 3958
diff(range(x)) 9037
truerange(x) 4228
truerange(x) 4108
diff(range(x)) 8956
diff(range(x)) 9678
diff(range(x)) 8826
diff(range(x)) 9086
truerange(x) 4268
truerange(x) 3968
diff(range(x)) 9909
diff(range(x)) 9377
diff(range(x)) 9067
truerange(x) 4288
truerange(x) 4008
diff(range(x)) 9428
truerange(x) 4228
truerange(x) 3997
truerange(x) 3958
truerange(x) 3967
diff(range(x)) 9147
truerange(x) 4198
diff(range(x)) 9618
truerange(x) 4248
diff(range(x)) 9298
truerange(x) 4408
truerange(x) 4108
truerange(x) 3968
diff(range(x)) 9318
diff(range(x)) 9257
truerange(x) 4198
diff(range(x)) 9588
diff(range(x)) 8997
truerange(x) 4208
diff(range(x)) 9237
diff(range(x)) 9108
truerange(x) 4177
truerange(x) 3977
truerange(x) 3948
diff(range(x)) 9738
diff(range(x)) 9057
truerange(x) 4629
truerange(x) 4358
diff(range(x)) 8987
truerange(x) 4238
diff(range(x)) 9387
diff(range(x)) 9418
truerange(x) 4288
truerange(x) 4008
truerange(x) 3987
diff(range(x)) 9598
diff(range(x)) 9157
diff(range(x)) 9627
truerange(x) 4298
diff(range(x)) 9698
truerange(x) 4418
diff(range(x)) 9287
truerange(x) 4168
diff(range(x)) 9027
truerange(x) 4177
diff(range(x)) 8777
truerange(x) 4168
truerange(x) 4017
truerange(x) 3967
diff(range(x)) 9267
diff(range(x)) 9368
truerange(x) 4268
diff(range(x)) 9398
truerange(x) 4198
diff(range(x)) 9307
truerange(x) 4168
diff(range(x)) 9889
diff(range(x)) 10099
truerange(x) 4358
truerange(x) 4018
truerange(x) 3988
diff(range(x)) 9318
truerange(x) 4299
truerange(x) 3987
truerange(x) 4028
truerange(x) 3967
diff(range(x)) 9368
truerange(x) 4238
diff(range(x)) 9357
diff(range(x)) 9247
truerange(x) 4288
truerange(x) 4058
truerange(x) 3967
diff(range(x)) 9047
truerange(x) 4358
diff(range(x)) 22422
diff(range(x)) 10079
diff(range(x)) 9228
diff(range(x)) 9738
diff(range(x)) 9077
truerange(x) 4879
truerange(x) 4008
truerange(x) 3977
truerange(x) 4048
truerange(x) 3987
diff(range(x)) 9557
diff(range(x)) 9288
diff(range(x)) 9217
truerange(x) 4238
truerange(x) 3998
diff(range(x)) 9287
truerange(x) 4288
truerange(x) 3987
truerange(x) 3988
diff(range(x)) 9589
truerange(x) 4399
diff(range(x)) 9908
diff(range(x)) 9828
diff(range(x)) 9267
diff(range(x)) 9749
diff(range(x)) 9287
diff(range(x)) 9167
diff(range(x)) 9518
diff(range(x)) 9418
truerange(x) 4398
diff(range(x)) 9578
diff(range(x)) 9097
diff(range(x)) 9067
truerange(x) 4519
diff(range(x)) 9287
truerange(x) 4298
truerange(x) 4088
truerange(x) 3977
diff(range(x)) 9558
truerange(x) 4219
truerange(x) 4088
truerange(x) 3958
truerange(x) 3977
diff(range(x)) 9528
truerange(x) 4148
truerange(x) 3967
diff(range(x)) 9948
diff(range(x)) 9448
truerange(x) 4198
truerange(x) 3997
truerange(x) 3938
truerange(x) 3998
truerange(x) 3997
truerange(x) 3988
diff(range(x)) 9467
truerange(x) 4208
truerange(x) 4027
truerange(x) 4078
diff(range(x)) 9107
diff(range(x)) 9778
truerange(x) 4198
diff(range(x)) 9458
truerange(x) 4679
truerange(x) 3997
truerange(x) 3997
diff(range(x)) 9478
truerange(x) 4178
truerange(x) 3977
diff(range(x)) 9518
truerange(x) 4318
truerange(x) 3977
truerange(x) 3998
diff(range(x)) 9267
truerange(x) 4248
diff(range(x)) 9388
diff(range(x)) 9388
diff(range(x)) 9478
truerange(x) 4228
truerange(x) 4018
diff(range(x)) 9327
truerange(x) 4228
diff(range(x)) 9838
diff(range(x)) 9387
diff(range(x)) 8817
truerange(x) 4488
diff(range(x)) 9228
diff(range(x)) 9407
truerange(x) 4268
diff(range(x)) 8827
truerange(x) 4408
diff(range(x)) 9368
diff(range(x)) 9277
diff(range(x)) 9188
truerange(x) 4228
diff(range(x)) 9457
diff(range(x)) 9268
diff(range(x)) 9227
diff(range(x)) 13365
diff(range(x)) 9648
diff(range(x)) 9178
diff(range(x)) 9217
diff(range(x)) 9087
truerange(x) 4639
truerange(x) 4068
diff(range(x)) 9567
truerange(x) 4378
diff(range(x)) 9147
diff(range(x)) 9217
truerange(x) 4188
diff(range(x)) 9107
diff(range(x)) 9708
diff(range(x)) 9267
truerange(x) 4518
truerange(x) 4028
truerange(x) 4027
truerange(x) 3967
truerange(x) 3947
truerange(x) 3957
diff(range(x)) 9097
diff(range(x)) 9117
diff(range(x)) 9268
diff(range(x)) 8987
truerange(x) 4299
truerange(x) 3997
truerange(x) 4178
diff(range(x)) 9388
diff(range(x)) 9157
diff(range(x)) 9127
diff(range(x)) 9258
truerange(x) 4299
diff(range(x)) 9287
truerange(x) 4298
diff(range(x)) 9328
diff(range(x)) 9277
diff(range(x)) 9037
diff(range(x)) 9348
diff(range(x)) 9177
diff(range(x)) 9448
truerange(x) 4498
truerange(x) 3978
truerange(x) 4037
diff(range(x)) 22622
diff(range(x)) 9798
truerange(x) 4799
truerange(x) 4068
truerange(x) 3967
diff(range(x)) 9417
diff(range(x)) 9277
diff(range(x)) 10119
diff(range(x)) 9097
truerange(x) 4348
truerange(x) 4048
truerange(x) 3988
diff(range(x)) 9027
truerange(x) 4238
diff(range(x)) 9618
truerange(x) 4228
truerange(x) 3997
diff(range(x)) 9347
truerange(x) 4258
truerange(x) 4098
diff(range(x)) 9518
truerange(x) 4168
diff(range(x)) 9037
truerange(x) 4348
diff(range(x)) 9287
truerange(x) 4228
truerange(x) 4028
diff(range(x)) 9217
truerange(x) 4188
diff(range(x)) 9007
diff(range(x)) 9538
diff(range(x)) 9388
diff(range(x)) 9147
diff(range(x)) 9297
diff(range(x)) 9558
truerange(x) 4359
truerange(x) 4058
diff(range(x)) 9558
diff(range(x)) 8937
diff(range(x)) 9598
truerange(x) 4198
diff(range(x)) 9448
truerange(x) 4188
truerange(x) 3997
diff(range(x)) 9508
diff(range(x)) 10339
diff(range(x)) 8947
diff(range(x)) 9689
diff(range(x)) 9077
truerange(x) 4308
truerange(x) 4017
truerange(x) 3988
truerange(x) 3987
truerange(x) 3978
truerange(x) 3957
diff(range(x)) 9217
diff(range(x)) 9047
diff(range(x)) 9367
diff(range(x)) 9137
truerange(x) 4469
truerange(x) 3987
diff(range(x)) 9137
diff(range(x)) 9878
truerange(x) 4288
truerange(x) 4007
truerange(x) 3978
truerange(x) 3947
truerange(x) 3957
diff(range(x)) 9567
truerange(x) 4248
diff(range(x)) 9138
diff(range(x)) 9077
diff(range(x)) 9518
truerange(x) 4278
truerange(x) 3997
diff(range(x)) 9147
truerange(x) 4328
truerange(x) 4087
diff(range(x)) 10039
truerange(x) 4228
truerange(x) 3978
diff(range(x)) 9578
diff(range(x)) 9528
truerange(x) 4248
diff(range(x)) 9087
truerange(x) 4178
truerange(x) 3977
diff(range(x)) 9077
truerange(x) 4248
diff(range(x)) 9668
diff(range(x)) 9177
truerange(x) 4278
truerange(x) 4198
diff(range(x)) 9067
truerange(x) 4278
truerange(x) 4018
diff(range(x)) 9317
diff(range(x)) 9728
diff(range(x)) 9577
diff(range(x)) 9407
truerange(x) 4439
truerange(x) 3997
truerange(x) 4008
truerange(x) 3957
truerange(x) 3958
diff(range(x)) 9718
diff(range(x)) 9518
diff(range(x)) 9438
truerange(x) 4318
truerange(x) 3947
diff(range(x)) 9558
truerange(x) 4198
truerange(x) 3967
diff(range(x)) 9457
truerange(x) 4228
diff(range(x)) 9949
diff(range(x)) 9598
truerange(x) 4258
diff(range(x)) 9438
truerange(x) 4308
truerange(x) 4028
truerange(x) 3977
truerange(x) 4018
truerange(x) 4058
diff(range(x)) 9487
diff(range(x)) 9308
truerange(x) 4388
truerange(x) 3998
truerange(x) 3977
diff(range(x)) 10119
truerange(x) 4328
diff(range(x)) 9066
truerange(x) 4288
truerange(x) 3968
truerange(x) 3988
diff(range(x)) 9598
truerange(x) 4368
diff(range(x)) 9328
truerange(x) 4188
diff(range(x)) 9538
diff(range(x)) 9157
truerange(x) 4488
diff(range(x)) 9017
diff(range(x)) 9748
diff(range(x)) 9228
truerange(x) 4418
truerange(x) 4208
diff(range(x)) 23213
truerange(x) 4639
diff(range(x)) 10359
truerange(x) 4228
truerange(x) 4207
diff(range(x)) 9738
diff(range(x)) 9167
truerange(x) 4218
truerange(x) 3998
truerange(x) 3977
truerange(x) 3978

bmi3, bmi4

It isn’t hard to create body mass index (BMI) groups from continuous BMI values, but it is hard to remember how BMI values on the cutpoints get classified. The cutpoints according to the CDC are:

BMI values Classification
< 18.5 Underweight
[18.5, 25) Normal weight
[25, 30) Overweight
>= 30 Obese

The function bmi3 creates 3 groups (lumping the first two above into “Normal weight”), while bmi4 creates 4 groups. Both return factor variables, with or without labels depending on labels.

bmi <- round(runif(100, min = 15, max = 45), 1)
table(bmi3(bmi))
Normal weight Overweight Obese
32 21 47
table(bmi4(bmi, labels = FALSE))
[-Inf,18.5) [18.5,25) [25,30) [30, Inf)
8 24 21 47

sumsim

This function creates tables summarizing results of statistical simulations, providing common metrics of performance like mean bias, standard deviation, mean standard error, mean squared error, and confidence interval coverage.

To illustrate, suppose \(X_1, ..., X_n \sim N(\mu, \sigma^2)\), and we wish to compare two estimators for \(\sigma^2\): the MLE (\(n\) in denominator) vs. the sample variance (\(n-1\) in denominator).

MLE <- c()
s2 <- c()
for (ii in 1: 1000) {
   x <- rnorm(n = 25)
   MLE[ii] <- sum((x - mean(x))^2) / 25
   s2[ii] <- sum((x - mean(x))^2) / 24
 }
kable(sumsim(estimates = cbind(MLE, s2), truth = 1))
Mean bias SD MSE
MLE -0.053 0.280 0.081
s2 -0.013 0.292 0.085

You can request different performance metrics through the statistics input; some of them, like confidence interval coverage, require specifying ses with standard errors.

Moving window statistics

moving_mean

The function moving_mean is one of dozens of moving average functions available in R. I’m not sure it’s the absolute fastest, but it is much faster than roll_mean in RcppRoll.

library("RcppRoll")

lengths <- c(10, 100, 1000, 10000)
multiples1 <- multiples2 <- c()
for (ii in 1: 4) {
  n <- lengths[ii]
  x <- rnorm(n)
  medians <- summary(microbenchmark(roll_mean(x, 5), moving_mean(x, 5),
                                    roll_mean(x, n / 5), moving_mean(x, n / 5),
                                    times = 50))$median
  multiples1[ii] <- medians[1] / medians[2]
  multiples2[ii] <- medians[3] / medians[4]
}
par(mfrow = c(1, 2))
plot(1: 4, multiples1, type = "b", col = "blue", main = "5-unit MA", 
     ylab = "Speed multiple", xlab = "Vector length", xaxt = "n", 
     ylim = c(0, max(multiples1) * 1.05))
axis(side = 1, at = 1: 4, labels = lengths)
abline(h = 1)

plot(1: 4, multiples2, type = "b", col = "blue", main = "length(x)/5-unit MA", 
     ylab = "Speed multiple", xlab = "Vector length", xaxt = "n", 
     ylim = c(0, max(multiples2) * 1.05))
axis(side = 1, at = 1: 4, labels = lengths)
abline(h = 1)

Graphics

histo

This function is similar to the base R function hist, but with two added features:

  1. Can overlay one or more fitted probability density/mass functions (PDFs/PMFs) for any univariate distribution supported in R (see ?Distributions).

  2. Can generate more of a barplot type histogram, where each possible value gets its own bin centered over its value (useful for discrete variables with not too many possible values).

Here are two examples:

# Histogram for 1,000 values from Bin(8, 0.25)
x <- rbinom(n = 1000, size = 5, prob = 0.25)
histo(x, dis = "binom", size = 5, colors = "blue", points_list = list(type = "b"))


# Histogram for 10,000 values from lognormal(0, 0.35) and various fitted PDFs.
x <- rlnorm(n = 10000, meanlog = 0, sdlog = 0.35)
histo(x, c("lnorm", "norm", "gamma"), main = "X ~ Lognormal(0, 0.35)")

References

Eddelbuettel, Dirk. 2013. Seamless R and C++ Integration with Rcpp. Springer. https://doi.org/10.1007/978-1-4614-6868-4.
Eddelbuettel, Dirk, and James Joseph Balamuta. 2017. Extending extitR with extitC++: A Brief Introduction to extitRcpp.” PeerJ Preprints 5 (August): e3188v1. https://doi.org/10.7287/peerj.preprints.3188v1.
Eddelbuettel, Dirk, and Romain François. 2011. Rcpp: Seamless R and C++ Integration.” Journal of Statistical Software 40 (8): 1–18. https://doi.org/10.18637/jss.v040.i08.
Ushey, Kevin. 2015. RcppRoll: Efficient Rolling / Windowed Operations. https://CRAN.R-project.org/package=RcppRoll.
Xie, Yihui. 2017. Printr: Automatically Print r Objects to Appropriate Formats According to the ’Knitr’ Output Format. https://CRAN.R-project.org/package=printr.