As with last week, this is a deeper dive into seeing how hyperparamater changes in LASSO models can affect the test-statistics for predicting bank failures.

source("Each Variable Models.R")
source("Smart LASSO 2.R")
cores = detectCores()

Lambda tuning, given a training set contains at least one failure (MSE)

First, I’m trying out lambda-tuning by selecting the ratio between the number of failures in a selected training set (at least 1) n and the number of predictors used by the LASSO model. The model used must have that ratio be whatever is specified. Holding some other parameters constant, we see how changing the ratio changes our outcome:

run_models("1.1 Ratio = 1", "MSE", 100, "2006-12-31", 100, 1, 1, "first")

run_models("1.2 Ratio = 2", "MSE", 100, "2006-12-31", 100, 1, 2, "first")

run_models("1.3 Ratio = 3", "MSE", 100, "2006-12-31", 100, 1, 3, "first")

Here, we see the (unsurprising) result that (1) the lambda selected by the model (on average) gets larger as our declared failures/predictors ratio increases, and (2) at this training set size, the full model and individual models don’t look that different from an MSE standpoint. This begs the question, how do the same reports look for other test statistics?

Lambda tuning, given a training set contains at least one failure (AUC)

Here’s AUC (with the same series of hyperparameters):

run_models("2.1 Ratio = 1", "AUC", 100, "2006-12-31", 100, 1, 1, "first")

run_models("2.2 Ratio = 2", "AUC", 100, "2006-12-31", 100, 1, 2, "first")

run_models("2.3 Ratio = 3", "AUC", 100, "2006-12-31", 100, 1, 3, "first")

Hmm, some less than impressive out-of-sample performance for AUC on the full model. As a general pattern, raising the failures/predictors ratio seems to improve the bias between in-sample and out-of-sample stats.

More generalized AUC tuning

While we’re looking at AUC, some changes in the other hyperparamaters look like this:

run_models("3.1 Ratio = 1, 2007", "AUC", 10, "2007-12-31", 100, 1, 1, "first")

run_models("3.2 Ratio = 1, 2008", "AUC", 10, "2008-12-31", 100, 1, 1, "first")

run_models("3.3 Ratio = 1, 2007, larger sample", "AUC", 50, "2007-12-31", 500, 1, 1, "first")

run_models("3.4 Ratio = 1, 2008, larger sample", "AUC", 50, "2008-12-31", 500, 1, 1, "first")

run_models("3.5 Ratio = 3, 2008, smaller sample", "MSE", 50, "2008-06-30", 100, 10, 3, "first")

run_models("3.6 Ratio = 4, 2008, smaller sample", "MSE", 50, "2008-06-30", 100, 10, 4, "first")

run_models("3.7 Ratio = 3, 2008, smaller sample", "AUC", 50, "2008-06-30", 100, 10, 3, "first")

run_models("3.8 Ratio = 4, 2008, smaller sample", "AUC", 50, "2008-06-30", 100, 10, 4, "first")

My interpretations of the above graphs would be:

Lambda tuning by selecting the optimal lambda given our ratio constraint

This is where the last parameter I’m calling comes in. In every instance thus far, I’ve selected (as with last week) the very first lambda that satifsies the ratio constraint. In practice, though, glmnet provides us with a series of lambda tests that satisfy the ratio constraint, and which in some cases knocks out even more variables than it “should”. The below does lambda selection by (1) selecting all candidate lambdas as the inputs for a cross-validation, and selecting for prediction the one lambda that minimizes training error.

run_models("4.1 Ratio = 2", "MSE", 50, "2006-12-31", 100, 5, 2, "best")

run_models("4.2 Ratio = 2", "AUC", 50, "2006-12-31", 100, 5, 2, "best")

run_models("4.3 Ratio = 4", "MSE", 50, "2006-12-31", 100, 5, 4, "best")

run_models("4.4 Ratio = 4", "AUC", 50, "2006-12-31", 100, 5, 4, "best")

What’s next?

LS0tCnRpdGxlOiAiTW9yZSBMQVNTTyBFeHBlcmltZW50cyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKQXMgd2l0aCBsYXN0IHdlZWssIHRoaXMgaXMgYSBkZWVwZXIgZGl2ZSBpbnRvIHNlZWluZyBob3cgaHlwZXJwYXJhbWF0ZXIgY2hhbmdlcyBpbiBMQVNTTyBtb2RlbHMgY2FuIGFmZmVjdCB0aGUgdGVzdC1zdGF0aXN0aWNzIGZvciBwcmVkaWN0aW5nIGJhbmsgZmFpbHVyZXMuIAoKYGBge3J9CnNvdXJjZSgiRWFjaCBWYXJpYWJsZSBNb2RlbHMuUiIpCnNvdXJjZSgiU21hcnQgTEFTU08gMi5SIikKY29yZXMgPSBkZXRlY3RDb3JlcygpCmBgYAoKIyMjIyBMYW1iZGEgdHVuaW5nLCBnaXZlbiBhIHRyYWluaW5nIHNldCBjb250YWlucyBhdCBsZWFzdCBvbmUgZmFpbHVyZSAoTVNFKQoKRmlyc3QsIEknbSB0cnlpbmcgb3V0IGxhbWJkYS10dW5pbmcgYnkgc2VsZWN0aW5nIHRoZSByYXRpbyBiZXR3ZWVuIHRoZSBudW1iZXIgb2YgZmFpbHVyZXMgaW4gYSBzZWxlY3RlZCB0cmFpbmluZyBzZXQgKGF0IGxlYXN0IDEpICpuKiBhbmQgdGhlIG51bWJlciBvZiBwcmVkaWN0b3JzIHVzZWQgYnkgdGhlIExBU1NPIG1vZGVsLiBUaGUgbW9kZWwgdXNlZCBtdXN0IGhhdmUgdGhhdCByYXRpbyBiZSB3aGF0ZXZlciBpcyBzcGVjaWZpZWQuIEhvbGRpbmcgc29tZSBvdGhlciBwYXJhbWV0ZXJzIGNvbnN0YW50LCB3ZSBzZWUgaG93IGNoYW5naW5nIHRoZSByYXRpbyBjaGFuZ2VzIG91ciBvdXRjb21lOgoKKiBEYXRlIGNvbnNpZGVyZWQ6IFE0IDIwMDYKKiBUcmFpbmluZyBzZXQgc2l6ZTogMTAwCiogTnVtYmVyIG9mIHNpbXVsYXRpb25zOiAxMDAgKHF1aXRlIHN0YWJsZSkKKiAoSWdub3JlIHRoZSAiZmlyc3QiIHBhcmFtZXRlciBmb3Igbm93IC0tIGl0IHJlbGF0ZXMgdG8gaG93IG91ciBvcHRpbWFsIGxhbWJkYSBpcyBjaG9zZW4uIFJpZ2h0IG5vdywgd2VyZSB1c2luZyB0aGUgc2FtZSBjcml0ZXJpb24gd2UgdXNlZCBsYXN0IHdlZWsgLS0gd2hlcmUgdGhlIGZpcnN0IGxhbWJkYSB0byBzYXRpc2Z5IHRoZSByYXRpbyBjb25zdHJhaW50IGlzIGNob3Nlbi4pCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpydW5fbW9kZWxzKCIxLjEgUmF0aW8gPSAxIiwgIk1TRSIsIDEwMCwgIjIwMDYtMTItMzEiLCAxMDAsIDEsIDEsICJmaXJzdCIpCnJ1bl9tb2RlbHMoIjEuMiBSYXRpbyA9IDIiLCAiTVNFIiwgMTAwLCAiMjAwNi0xMi0zMSIsIDEwMCwgMSwgMiwgImZpcnN0IikKcnVuX21vZGVscygiMS4zIFJhdGlvID0gMyIsICJNU0UiLCAxMDAsICIyMDA2LTEyLTMxIiwgMTAwLCAxLCAzLCAiZmlyc3QiKQpgYGAKCkhlcmUsIHdlIHNlZSB0aGUgKHVuc3VycHJpc2luZykgcmVzdWx0IHRoYXQgKDEpIHRoZSBsYW1iZGEgc2VsZWN0ZWQgYnkgdGhlIG1vZGVsIChvbiBhdmVyYWdlKSBnZXRzIGxhcmdlciBhcyBvdXIgZGVjbGFyZWQgZmFpbHVyZXMvcHJlZGljdG9ycyByYXRpbyBpbmNyZWFzZXMsIGFuZCAoMikgYXQgdGhpcyB0cmFpbmluZyBzZXQgc2l6ZSwgdGhlIGZ1bGwgbW9kZWwgYW5kIGluZGl2aWR1YWwgbW9kZWxzIGRvbid0IGxvb2sgdGhhdCBkaWZmZXJlbnQgZnJvbSBhbiBNU0Ugc3RhbmRwb2ludC4gClRoaXMgYmVncyB0aGUgcXVlc3Rpb24sIGhvdyBkbyB0aGUgc2FtZSByZXBvcnRzIGxvb2sgZm9yIG90aGVyIHRlc3Qgc3RhdGlzdGljcz8gCgojIyMjIExhbWJkYSB0dW5pbmcsIGdpdmVuIGEgdHJhaW5pbmcgc2V0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBmYWlsdXJlIChBVUMpCgpIZXJlJ3MgQVVDICh3aXRoIHRoZSBzYW1lIHNlcmllcyBvZiBoeXBlcnBhcmFtZXRlcnMpOgoKCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnJ1bl9tb2RlbHMoIjIuMSBSYXRpbyA9IDEiLCAiQVVDIiwgMTAwLCAiMjAwNi0xMi0zMSIsIDEwMCwgMSwgMSwgImZpcnN0IikKcnVuX21vZGVscygiMi4yIFJhdGlvID0gMiIsICJBVUMiLCAxMDAsICIyMDA2LTEyLTMxIiwgMTAwLCAxLCAyLCAiZmlyc3QiKQpydW5fbW9kZWxzKCIyLjMgUmF0aW8gPSAzIiwgIkFVQyIsIDEwMCwgIjIwMDYtMTItMzEiLCAxMDAsIDEsIDMsICJmaXJzdCIpCmBgYAoKSG1tLCBzb21lIGxlc3MgdGhhbiBpbXByZXNzaXZlIG91dC1vZi1zYW1wbGUgcGVyZm9ybWFuY2UgZm9yIEFVQyBvbiB0aGUgZnVsbCBtb2RlbC4gQXMgYSBnZW5lcmFsIHBhdHRlcm4sIHJhaXNpbmcgdGhlIGZhaWx1cmVzL3ByZWRpY3RvcnMgcmF0aW8gc2VlbXMgdG8gaW1wcm92ZSB0aGUgYmlhcyBiZXR3ZWVuIGluLXNhbXBsZSBhbmQgb3V0LW9mLXNhbXBsZSBzdGF0cy4gCgojIyMjIE1vcmUgZ2VuZXJhbGl6ZWQgQVVDIHR1bmluZwoKV2hpbGUgd2UncmUgbG9va2luZyBhdCBBVUMsIHNvbWUgY2hhbmdlcyBpbiB0aGUgb3RoZXIgaHlwZXJwYXJhbWF0ZXJzIGxvb2sgbGlrZSB0aGlzOgoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KcnVuX21vZGVscygiMy4xIFJhdGlvID0gMSwgMjAwNyIsICJBVUMiLCAxMCwgIjIwMDctMTItMzEiLCAxMDAsIDEsIDEsICJmaXJzdCIpCnJ1bl9tb2RlbHMoIjMuMiBSYXRpbyA9IDEsIDIwMDgiLCAiQVVDIiwgMTAsICIyMDA4LTEyLTMxIiwgMTAwLCAxLCAxLCAiZmlyc3QiKQpydW5fbW9kZWxzKCIzLjMgUmF0aW8gPSAxLCAyMDA3LCBsYXJnZXIgc2FtcGxlIiwgIkFVQyIsIDUwLCAiMjAwNy0xMi0zMSIsIDUwMCwgMSwgMSwgImZpcnN0IikKcnVuX21vZGVscygiMy40IFJhdGlvID0gMSwgMjAwOCwgbGFyZ2VyIHNhbXBsZSIsICJBVUMiLCA1MCwgIjIwMDgtMTItMzEiLCA1MDAsIDEsIDEsICJmaXJzdCIpCnJ1bl9tb2RlbHMoIjMuNSBSYXRpbyA9IDMsIDIwMDgsIHNtYWxsZXIgc2FtcGxlIiwgIk1TRSIsIDUwLCAiMjAwOC0wNi0zMCIsIDEwMCwgMTAsIDMsICJmaXJzdCIpCnJ1bl9tb2RlbHMoIjMuNiBSYXRpbyA9IDQsIDIwMDgsIHNtYWxsZXIgc2FtcGxlIiwgIk1TRSIsIDUwLCAiMjAwOC0wNi0zMCIsIDEwMCwgMTAsIDQsICJmaXJzdCIpCnJ1bl9tb2RlbHMoIjMuNyBSYXRpbyA9IDMsIDIwMDgsIHNtYWxsZXIgc2FtcGxlIiwgIkFVQyIsIDUwLCAiMjAwOC0wNi0zMCIsIDEwMCwgMTAsIDMsICJmaXJzdCIpCnJ1bl9tb2RlbHMoIjMuOCBSYXRpbyA9IDQsIDIwMDgsIHNtYWxsZXIgc2FtcGxlIiwgIkFVQyIsIDUwLCAiMjAwOC0wNi0zMCIsIDEwMCwgMTAsIDQsICJmaXJzdCIpCmBgYAoKTXkgaW50ZXJwcmV0YXRpb25zIG9mIHRoZSBhYm92ZSBncmFwaHMgd291bGQgYmU6CgoqIEFVQyBzZWVtcyB0byBvZmZlciBtb3JlIHZpc2liaWxpdHkgaW50byBhIG1vZGVsJ3MgImNvcnJlY3RuZXNzIiB0aGFuIE1TRSBkb2VzLCBhbmQgbWF5YmUgcGFydCBvZiB0aGUgcmVhc29uIGZvciB0aGF0IGlzIHRoYXQgaXQgdmFyaWVzIG1vcmUgb2Z0ZW4gdGhhbiBNU0UgZG9lcyAoZm9yIGZ1bGwgdnMuIGluZGl2aWR1YWwgbW9kZWxzKS4gRXZlbiBpbiByZWxhdGl2ZWx5IHNtYWxsIHRyYWluaW5nIHNldCBzaXplcywgaXQgYmVjb21lcyBhcHBhcmVudCB0aGF0IGZ1bGwtdmFyaWFibGUgbW9kZWxzIHByb2R1Y2UgaGlnaGVyIEFVQ3MgdGhhbiBtb3N0IG9mIHRoZSBpbmRpdmlkdWFsIHZhcmlhYmxlcyAoMy4xLCAzLjIpLiBJdCBiZWNvbWVzIGVzcC4gYXBwYXJlbnQgd2hlbiBzYW1wbGUgc2l6ZXMgYXJlIGxhcmdlciAoMy4zLCAzLjQpLCBhdCB3aGljaCBwb2ludCBiaWFzIGJldHdlZW4gaW4tc2FtcGxlIGFuZCBvdXQtb2Ytc2FtcGxlIGRpc2FwcGVhcnMgdG9vLgoqIFRoZSBnb29meSBjaGFydHMgZnJvbSBsYXN0IHdlZWsgcmVtYWluIGdvb2Z5IChhdCBsZWFzdCB0byBteSBpbnR1aXRpb24pLiAzLjYgYW5kIDMuNyBoYXZlIGlkZW50aWNhbCBwYXJhbWV0ZXJzIHRvIHdoYXQgd2Ugc2F3IGxhc3Qgd2VlazogTVNFLCBmb3IgdHJhaW5pbmcgc2V0cyBvZiAxMDAgd2hlcmUgPiAxMCBmYWlsdXJlcyBhcmUgc2VsZWN0ZWQsIGFsbCBzZWVtIHRvIG92ZXJmaXQgYW5kIHBlcmZvcm0gaW5hY2N1cmF0ZWx5LiBUaGUgQVVDIHZlcnNpb24gb2YgdGhlIHNhbWUgcGFyYW1ldGVycywgdGhvdWdoLCAqZG9uJ3Qgc2hvdyogdGhlIHNhbWUgc3RvcnkgLS0gdGhleSBsb29rIHNpbWlsYXIgdG8gdGhlIG90aGVyIEFVQyBjaGFydHMuIEkgd291bGQgaGF2ZSBleHBlY3RlZCBhIGRpc2NyZXBlbmN5IGZvciBBVUMgYW5kIE1TRSwgc28gSSdtIHVuc3VyZSBob3cgdG8gaW50ZXJwcmV0PyAKCiMjIyMgTGFtYmRhIHR1bmluZyBieSBzZWxlY3RpbmcgdGhlIG9wdGltYWwgbGFtYmRhIGdpdmVuIG91ciByYXRpbyBjb25zdHJhaW50CgpUaGlzIGlzIHdoZXJlIHRoZSBsYXN0IHBhcmFtZXRlciBJJ20gY2FsbGluZyBjb21lcyBpbi4gSW4gZXZlcnkgaW5zdGFuY2UgdGh1cyBmYXIsIEkndmUgc2VsZWN0ZWQgKGFzIHdpdGggbGFzdCB3ZWVrKSB0aGUgdmVyeSBmaXJzdCBsYW1iZGEgdGhhdCBzYXRpZnNpZXMgdGhlIHJhdGlvIGNvbnN0cmFpbnQuIEluIHByYWN0aWNlLCB0aG91Z2gsIGdsbW5ldCBwcm92aWRlcyB1cyB3aXRoIGEgc2VyaWVzIG9mIGxhbWJkYSB0ZXN0cyB0aGF0IHNhdGlzZnkgdGhlIHJhdGlvIGNvbnN0cmFpbnQsIGFuZCB3aGljaCBpbiBzb21lIGNhc2VzIGtub2NrcyBvdXQgZXZlbiBtb3JlIHZhcmlhYmxlcyB0aGFuIGl0ICJzaG91bGQiLiBUaGUgYmVsb3cgZG9lcyBsYW1iZGEgc2VsZWN0aW9uIGJ5ICgxKSBzZWxlY3RpbmcgYWxsIGNhbmRpZGF0ZSBsYW1iZGFzIGFzIHRoZSBpbnB1dHMgZm9yIGEgY3Jvc3MtdmFsaWRhdGlvbiwgYW5kIHNlbGVjdGluZyBmb3IgcHJlZGljdGlvbiB0aGUgb25lIGxhbWJkYSB0aGF0IG1pbmltaXplcyB0cmFpbmluZyBlcnJvci4KCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnJ1bl9tb2RlbHMoIjQuMSBSYXRpbyA9IDIiLCAiTVNFIiwgNTAsICIyMDA2LTEyLTMxIiwgMTAwLCA1LCAyLCAiYmVzdCIpCnJ1bl9tb2RlbHMoIjQuMiBSYXRpbyA9IDIiLCAiQVVDIiwgNTAsICIyMDA2LTEyLTMxIiwgMTAwLCA1LCAyLCAiYmVzdCIpCnJ1bl9tb2RlbHMoIjQuMyBSYXRpbyA9IDQiLCAiTVNFIiwgNTAsICIyMDA2LTEyLTMxIiwgMTAwLCA1LCA0LCAiYmVzdCIpCnJ1bl9tb2RlbHMoIjQuNCBSYXRpbyA9IDQiLCAiQVVDIiwgNTAsICIyMDA2LTEyLTMxIiwgMTAwLCA1LCA0LCAiYmVzdCIpCmBgYAoKKiBGb3Igb3VyIE1TRSBncmFwaHMsIHRoZXJlIGlzIGEgc2ltaWxhciAidW5kZXJmaXR0aW5nIGVmZmVjdCIgdGhhdCB3ZSBzYXcgaW4gb3VyIGNoYXJ0ICgzLi4uKSBhYm92ZSwgYnV0IHdlIGFsc28gc2VlIHRoYXQgQVVDIGZvciB0aGUgZnVsbCBtb2RlbCBiZWNvbWVzIG5vdGljYWJseSB3b3JzZSB3aXRoIHRoaXMgbGFtYmRhIHNlbGVjdGlvbi4gCiogRGlmZmVyZW50IHJhdGlvcyBzZWVtIHRvIHByb2R1Y2UgbmVnbGlnaWJsZSBkaWZmZXJlbmNlcy4gCgojIyMjIFdoYXQncyBuZXh0PyAKCiogRWxhc3RpYy1uZXQgYXBwbGllZCB0byB0aGUgZmlyc3Qvc2Vjb25kIHNlY3Rpb25zIGFib3ZlCiogQ294IC8gcHJvcG9ydGlvbmFsLWhhemFyZHMgbW9kZWxpbmcKCgoKCgoK