1.) Ben: ISM and Sex.

Confusion regarding SEX and ISM variables. ISM already in dataset but SEX variable gets assigned in example - isn’t sex already assigned by ISM (is Male?) I’ve been using this Certara doc for column descriptions. Don’t see it in data @format descriptions.

I’m further confused about the 2-way stratification stratify(SEX ~ ISM) Located in the @examples of vpcstats v2:

Also, is exampleobs$SEX <- rep(c("F", "M"), len=nrow(exampleobs)) doing what’s inteded? Appears to set different genders for same subject ID.

Not the most elegant solution, but perhaps you meant like this?

sex <- sample(c("F","M"), length(unique(exampleobs$ID)), replace=T)
newobs <- data.table(ID = unique(exampleobs$ID), SEX = sex)
exampleobs <- merge(exampleobs, newobs, by="ID")

2.) Samer & Ben/Olivier: LLOQ and Sex

Relationship between LLOQ and Sex - in your code, it seems that LLOQ is always correlated with sex.

vpcstats example

exampleobs$LLOQ <- exampleobs[, ifelse(ISM == 0, 100, 25)] #Set LLOQ to 100 for women, 25 for men.

Samer’s prepare_vpc.R example

exampleobsdata$LLOQ <- ifelse(exampleobsdata$Sex=="Female",7,10)
examplesimdata$LLOQ <- ifelse(examplesimdata$Sex=="Female",7,10)

Was this just a convenient way for you to define different LLOQ in your examples? Or, is there actually a relationship between LLOQ and sex?

3.) All: Censoring data below LLOQ

Comparing the VPC’s generated in the article with the VPC’s provided in the vpcstats example plot, I see that we’re censoring data below LLOQ (in vpcstats example), with LLOQ (arbitrarily?) set differently for men and women. exampleobs$LLOQ <- exampleobs[, ifelse(ISM == 0, 100, 25)]

I don’t see any mention of LLOQ in Kris paper for binless vpc, and in vpcstats package LLOQ

Can you elaborate on LLOQ and where it may fit in with binlessVPC. I understand only simulation data should be shown below/above the LLOQ, in the code I’ve been reviewing it appears it’s always a user-defined constant. Is it typically provided in the data?

4.) Kris/Kashyap: AQR - Optmizing lambda for quantile.

Should the interval for the lambda optimization always be bounded between interval = c(0,7)?

Or, Should the defaults for this interval range be a function of something else in the data such as number of interpolated observations e.g. distance between observations?

Lambda is larger for median quantile, should same interval range be specified for lambda optimization across each quantile?

And what is sic referring to in sic.obs.go - Schwartz information criterion (sic) or typo (aic)?

s <- Sys.time()
llam.med.obs.g0 <- optimize(sic.obs.g0, quant=0.50, interval=c(0, 3))$min
e <- Sys.time()
e - s
Time difference of 0.3817019 secs
print(llam.med.obs.g0)
[1] 2.060347
s <- Sys.time()
llam.med.obs.g0 <- optimize(sic.obs.g0, quant=0.50, interval=c(0, 7))$min
e <- Sys.time()
e - s
Time difference of 0.4071681 secs
print(llam.med.obs.g0)
[1] 2.534568
s <- Sys.time()
llam.med.obs.g0 <- optimize(sic.obs.g0, quant=0.50, interval=c(0, 10))$min
e <- Sys.time()
e - s
Time difference of 0.3084428 secs
print(llam.med.obs.g0)
[1] 1.985321

I experimented with different intervals to return different values of lambda respective computation times, I thought interval = c(0,10) would take the longest to compute - but it’s actually the shortest at ~0.308, I’m a bit confused here.

5.) All: Double curly bracket notation.

This past June, rlang 0.4.0 released double curly brackets {{ to abstract enquo and !!

I will be using this notation in the functions I write, where applicable. Please let me know if you have any objections.

6.) All: Shiny App-Design

I will create a UI (mockup) of the shiny app to share with you before adding any functionality, Please let me know if you have any suggestions before I start on this.

As I understand the current styling:

To improve UI/UX - I will integrate dropdowns and modals for selection inputs, where applicable.

Examples to come.

LS0tDQp0aXRsZTogIkJpbmxlc3MgVlBDIFF1ZXN0aW9ucyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCg0KIyMgMS4pICAqKkJlbioqOiBJU00gYW5kIFNleC4NCg0KQ29uZnVzaW9uIHJlZ2FyZGluZyBTRVggYW5kIElTTSB2YXJpYWJsZXMuICBJU00gYWxyZWFkeSBpbiBkYXRhc2V0IGJ1dCBTRVggdmFyaWFibGUgZ2V0cyBhc3NpZ25lZCBpbiBleGFtcGxlIC0gaXNuJ3Qgc2V4IGFscmVhZHkgYXNzaWduZWQgYnkgSVNNIChpcyBNYWxlPykgSSd2ZSBiZWVuIHVzaW5nIHRoaXMgW0NlcnRhcmEgZG9jXShodHRwczovL3N1cHBvcnQuY2VydGFyYS5jb20vZm9ydW1zL2luZGV4LnBocD9hcHA9Y29yZSZtb2R1bGU9YXR0YWNoJnNlY3Rpb249YXR0YWNoJmF0dGFjaF9pZD0yNjM2KSBmb3IgY29sdW1uIGRlc2NyaXB0aW9ucy4gRG9uJ3Qgc2VlIGl0IGluIGRhdGEgYEBmb3JtYXRgIGRlc2NyaXB0aW9ucy4NCg0KSSdtIGZ1cnRoZXIgY29uZnVzZWQgYWJvdXQgdGhlIDItd2F5IHN0cmF0aWZpY2F0aW9uIGBzdHJhdGlmeShTRVggfiBJU00pYCBMb2NhdGVkIGluIHRoZSBgQGV4YW1wbGVzYCBvZiB2cGNzdGF0cyB2MjogDQpgYGB7cn0NCmV4YW1wbGVvYnMgPC0gYXMuZGF0YS50YWJsZSh2cGM6OnNpbXBsZV9kYXRhJG9icylbTURWID09IDBdDQpleGFtcGxlc2ltIDwtIGFzLmRhdGEudGFibGUodnBjOjpzaW1wbGVfZGF0YSRzaW0pW01EViA9PSAwXQ0KZXhhbXBsZW9icyRQUkVEIDwtIGV4YW1wbGVzaW1bUkVQID09IDEsIFBSRURdDQpleGFtcGxlb2JzJFNFWCA8LSByZXAoYygiRiIsICJNIiksIGxlbj1ucm93KGV4YW1wbGVvYnMpKSAjPw0KDQojIEV4YW1wbGUgd2l0aCAyLXdheSBzdHJhdGlmaWNhdGlvbg0KdnBjIDwtIHZwYyAlPiUNCiAgc3RyYXRpZnkoU0VYIH4gSVNNKSAlPiUNCiAgYmlubmluZyhUSU1FKSAlPiUNCiAgcHJlZGNvcnJlY3QocHJlZD1QUkVEKSAlPiUNCiAgdnBjc3RhdHMoKQ0KYGBgDQoNCkFsc28sIGlzIGBleGFtcGxlb2JzJFNFWCA8LSByZXAoYygiRiIsICJNIiksIGxlbj1ucm93KGV4YW1wbGVvYnMpKWAgZG9pbmcgd2hhdCdzIGludGVkZWQ/IEFwcGVhcnMgdG8gc2V0IGRpZmZlcmVudCBnZW5kZXJzIGZvciBzYW1lIHN1YmplY3QgSUQuDQoNCk5vdCB0aGUgbW9zdCBlbGVnYW50IHNvbHV0aW9uLCBidXQgcGVyaGFwcyB5b3UgbWVhbnQgbGlrZSB0aGlzPw0KYGBge3J9DQpzZXggPC0gc2FtcGxlKGMoIkYiLCJNIiksIGxlbmd0aCh1bmlxdWUoZXhhbXBsZW9icyRJRCkpLCByZXBsYWNlPVQpDQpuZXdvYnMgPC0gZGF0YS50YWJsZShJRCA9IHVuaXF1ZShleGFtcGxlb2JzJElEKSwgU0VYID0gc2V4KQ0KZXhhbXBsZW9icyA8LSBtZXJnZShleGFtcGxlb2JzLCBuZXdvYnMsIGJ5PSJJRCIpDQpgYGANCg0KDQojIyAyLikgKipTYW1lciAmIEJlbi9PbGl2aWVyKio6IExMT1EgYW5kIFNleA0KDQpSZWxhdGlvbnNoaXAgYmV0d2VlbiBMTE9RIGFuZCBTZXggLSBpbiB5b3VyIGNvZGUsIGl0IHNlZW1zIHRoYXQgTExPUSBpcyBhbHdheXMgY29ycmVsYXRlZCB3aXRoIHNleC4NCg0KYHZwY3N0YXRzYCBleGFtcGxlDQpgYGB7cn0NCmV4YW1wbGVvYnMkTExPUSA8LSBleGFtcGxlb2JzWywgaWZlbHNlKElTTSA9PSAwLCAxMDAsIDI1KV0gI1NldCBMTE9RIHRvIDEwMCBmb3Igd29tZW4sIDI1IGZvciBtZW4uDQpgYGANCg0KU2FtZXIncyBgcHJlcGFyZV92cGMuUmAgZXhhbXBsZQ0KYGBge3J9DQpleGFtcGxlb2JzZGF0YSRMTE9RIDwtIGlmZWxzZShleGFtcGxlb2JzZGF0YSRTZXg9PSJGZW1hbGUiLDcsMTApDQpleGFtcGxlc2ltZGF0YSRMTE9RIDwtIGlmZWxzZShleGFtcGxlc2ltZGF0YSRTZXg9PSJGZW1hbGUiLDcsMTApDQpgYGANCg0KV2FzIHRoaXMganVzdCBhIGNvbnZlbmllbnQgd2F5IGZvciB5b3UgdG8gZGVmaW5lIGRpZmZlcmVudCBMTE9RIGluIHlvdXIgZXhhbXBsZXM/IE9yLCBpcyB0aGVyZSBhY3R1YWxseSBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIExMT1EgYW5kIHNleD8NCg0KDQojIyAzLikgKipBbGwqKjogQ2Vuc29yaW5nIGRhdGEgYmVsb3cgTExPUQ0KDQpDb21wYXJpbmcgdGhlIFZQQydzIGdlbmVyYXRlZCBpbiB0aGUgYXJ0aWNsZSB3aXRoIHRoZSBWUEMncyBwcm92aWRlZCBpbiB0aGUgdnBjc3RhdHMgZXhhbXBsZSBwbG90LCBJIHNlZSB0aGF0IHdlJ3JlIGNlbnNvcmluZyBkYXRhIGJlbG93IExMT1EgKGluIHZwY3N0YXRzIGV4YW1wbGUpLCB3aXRoIExMT1EgKGFyYml0cmFyaWx5Pykgc2V0IGRpZmZlcmVudGx5IGZvciBtZW4gYW5kIHdvbWVuLiBgZXhhbXBsZW9icyRMTE9RIDwtIGV4YW1wbGVvYnNbLCBpZmVsc2UoSVNNID09IDAsIDEwMCwgMjUpXWANCg0KSSBkb24ndCBzZWUgYW55IG1lbnRpb24gb2YgTExPUSBpbiBLcmlzIHBhcGVyIGZvciBiaW5sZXNzIHZwYywgYW5kIGluIGB2cGNzdGF0c2AgcGFja2FnZSBMTE9RDQoNCkNhbiB5b3UgZWxhYm9yYXRlIG9uIExMT1EgYW5kIHdoZXJlIGl0IG1heSBmaXQgaW4gd2l0aCBiaW5sZXNzVlBDLiBJIHVuZGVyc3RhbmQgb25seSBzaW11bGF0aW9uIGRhdGEgc2hvdWxkIGJlIHNob3duIGJlbG93L2Fib3ZlIHRoZSBMTE9RLCBpbiB0aGUgY29kZSBJJ3ZlIGJlZW4gcmV2aWV3aW5nIGl0IGFwcGVhcnMgaXQncyBhbHdheXMgYSB1c2VyLWRlZmluZWQgY29uc3RhbnQuIElzIGl0IHR5cGljYWxseSBwcm92aWRlZCBpbiB0aGUgZGF0YT8NCg0KDQojIyA0LikgKipLcmlzL0thc2h5YXAqKjogQVFSIC0gT3B0bWl6aW5nIGxhbWJkYSBmb3IgcXVhbnRpbGUuDQoNClNob3VsZCB0aGUgaW50ZXJ2YWwgZm9yIHRoZSBsYW1iZGEgb3B0aW1pemF0aW9uIGFsd2F5cyBiZSBib3VuZGVkIGJldHdlZW4gYGludGVydmFsID0gYygwLDcpYD8NCg0KT3IsIFNob3VsZCB0aGUgZGVmYXVsdHMgZm9yIHRoaXMgaW50ZXJ2YWwgcmFuZ2UgYmUgYSBmdW5jdGlvbiBvZiBzb21ldGhpbmcgZWxzZSBpbiB0aGUgZGF0YSBzdWNoIGFzIG51bWJlciBvZiBpbnRlcnBvbGF0ZWQgb2JzZXJ2YXRpb25zIGUuZy4gZGlzdGFuY2UgYmV0d2VlbiBvYnNlcnZhdGlvbnM/IA0KDQpMYW1iZGEgaXMgbGFyZ2VyIGZvciBtZWRpYW4gcXVhbnRpbGUsIHNob3VsZCBzYW1lIGludGVydmFsIHJhbmdlIGJlIHNwZWNpZmllZCBmb3IgbGFtYmRhIG9wdGltaXphdGlvbiBhY3Jvc3MgZWFjaCBxdWFudGlsZT8NCg0KQW5kIHdoYXQgaXMgYHNpY2AgcmVmZXJyaW5nIHRvIGluIGBzaWMub2JzLmdvYCAtIFNjaHdhcnR6IGluZm9ybWF0aW9uIGNyaXRlcmlvbiAoc2ljKSBvciB0eXBvIChhaWMpPyANCg0KYGBge3J9DQpzaWMub2JzLmcwIDwtIGZ1bmN0aW9uKGxsYW0sIHF1YW50KXsNCiAgYSA8LSBBSUMoICNBSUMgdG8gY29tcGFyZSBiZXN0IGZpdCBiZXR3ZWVuIG1vZGVscywgc21hbGxlciBBSUMgYmV0dGVyIA0KICAgIHJxc3MoICNBZGRpdGl2ZSBxdWFudGlsZSByZWdyZXNzaW9uIHNtb290aGluZw0KICAgICAgZXN0LlBLJERWW2VzdC5QSyRHUk9VUD09MF0gfg0KICAgICAgICBxc3MoZXN0LlBLJFRJTUVbZXN0LlBLJEdST1VQPT0wXSwgbGFtYmRhPWV4cChsbGFtKSksICNBZGRpdGl2ZSBOb25wYXJhbWV0cmljIFRlcm1zIGZvciBycXNzIEZpdHRpbmcNCiAgICAgIHRhdT1xdWFudCwgbmEuYWN0aW9uPW5hLmV4Y2x1ZGUgI3RhdSBkZWZpbmVzIHF1YW50IHRvIGJlIGVzdGltYXRlcw0KICAgICksDQogICAgaz0tMQ0KICApDQp9DQoNCnMgPC0gU3lzLnRpbWUoKQ0KbGxhbS5tZWQub2JzLmcwIDwtIG9wdGltaXplKHNpYy5vYnMuZzAsIHF1YW50PTAuNTAsIGludGVydmFsPWMoMCwgMykpJG1pbg0KZSA8LSBTeXMudGltZSgpDQplIC0gcw0KcHJpbnQobGxhbS5tZWQub2JzLmcwKQ0KcyA8LSBTeXMudGltZSgpDQpsbGFtLm1lZC5vYnMuZzAgPC0gb3B0aW1pemUoc2ljLm9icy5nMCwgcXVhbnQ9MC41MCwgaW50ZXJ2YWw9YygwLCA3KSkkbWluDQplIDwtIFN5cy50aW1lKCkNCmUgLSBzDQpwcmludChsbGFtLm1lZC5vYnMuZzApDQpzIDwtIFN5cy50aW1lKCkNCmxsYW0ubWVkLm9icy5nMCA8LSBvcHRpbWl6ZShzaWMub2JzLmcwLCBxdWFudD0wLjUwLCBpbnRlcnZhbD1jKDAsIDEwKSkkbWluDQplIDwtIFN5cy50aW1lKCkNCmUgLSBzDQpwcmludChsbGFtLm1lZC5vYnMuZzApDQoNCg0KYGBgDQoNCkkgZXhwZXJpbWVudGVkIHdpdGggZGlmZmVyZW50IGludGVydmFscyB0byByZXR1cm4gZGlmZmVyZW50IHZhbHVlcyBvZiBsYW1iZGEgcmVzcGVjdGl2ZSBjb21wdXRhdGlvbiB0aW1lcywgSSB0aG91Z2h0IGBpbnRlcnZhbCA9IGMoMCwxMClgIHdvdWxkIHRha2UgdGhlIGxvbmdlc3QgdG8gY29tcHV0ZSAtIGJ1dCBpdCdzIGFjdHVhbGx5IHRoZSBzaG9ydGVzdCBhdCB+MC4zMDgsIEknbSBhIGJpdCBjb25mdXNlZCBoZXJlLg0KDQojIyA1LikgKipBbGwqKjogRG91YmxlIGN1cmx5IGJyYWNrZXQgbm90YXRpb24uDQoNClRoaXMgcGFzdCBKdW5lLCBgcmxhbmcgMC40LjBgIHJlbGVhc2VkIGRvdWJsZSBjdXJseSBicmFja2V0cyBge3tgIHRvIGFic3RyYWN0IGBlbnF1b2AgYW5kIGAhIWAgDQoNCkkgd2lsbCBiZSB1c2luZyB0aGlzIG5vdGF0aW9uIGluIHRoZSBmdW5jdGlvbnMgSSB3cml0ZSwgd2hlcmUgYXBwbGljYWJsZS4gUGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdSBoYXZlIGFueSBvYmplY3Rpb25zLg0KDQoNCiMjIDYuKSAqKkFsbCoqOiBTaGlueSBBcHAtRGVzaWduDQoNCkkgd2lsbCBjcmVhdGUgYSBVSSAobW9ja3VwKSBvZiB0aGUgc2hpbnkgYXBwIHRvIHNoYXJlIHdpdGggeW91IGJlZm9yZSBhZGRpbmcgYW55IGZ1bmN0aW9uYWxpdHksIA0KUGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdSBoYXZlIGFueSBzdWdnZXN0aW9ucyBiZWZvcmUgSSBzdGFydCBvbiB0aGlzLg0KDQpBcyBJIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgc3R5bGluZzoNCg0KKiBGb2xsb3cgY2VydGFyYSBzdHlsZSBndWlkZSBmb3IgY29sb3Igc2NoZW1lcywgZm9udCwgZXRjLg0KKiBWUEMgcGxvdCBjb2xvciBjb252ZW50aW9uczoNCiAgKyBCbHVlIChvciBibGFjayBsaWtlIHZwY3N0YXRzIGV4YW1wbGU/KSBkb3R0ZWQsc29saWQsZGFzaGVkIGxpbmVzIGZvciBvYnNlcnZlZCBkYXRhLCAxMCw1MCw5MCBxdWFudGlsZXMsIHJlc3BlY3RpdmVseS4NCiAgKyBSZWQgZG90dGVkLHNvbGlkLGRhc2hlZCBsaW5lcyBmb3Igc2ltdWxhdGVkIGRhdGEgZm9yIDEwLDUwLDkwIHF1YW50aWxlcywgcmVzcGVjdGl2ZWx5Lg0KDQoNClRvIGltcHJvdmUgVUkvVVggLSBJIHdpbGwgaW50ZWdyYXRlIGRyb3Bkb3ducyBhbmQgbW9kYWxzIGZvciBzZWxlY3Rpb24gaW5wdXRzLCB3aGVyZSBhcHBsaWNhYmxlLiANCg0KRXhhbXBsZXMgdG8gY29tZS4NCg0KDQoNCg0K