-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add PAWN method #69
base: master
Are you sure you want to change the base?
Add PAWN method #69
Conversation
@ConnectedSystems thank you for this contribution! I will take a look sometime next week, this was certainly on my list so I'm excited to see it here. Per the return type I would tend to agree, and think using |
Glad to be service! FYI, I've been working with NamedArrays recently and while it supports both dimension names and axis names in one package, it relies on Dicts underneath to do so, which isn't ideal for performance particularly when the number of elements is small. While in practice it may not matter, |
PS: Recent set of changes fixes an error, where I was not including the upper most bin-edge in the calculations. I've also adjusted to return an OrderedDict so that the results are in the intuitive order: OrderedDict{Symbol, Vector{Float64}} with 6 entries:
:min => [0.0, 0.0, 0.0]
:mean => [0.623764, 0.647307, 0.670555]
:median => [0.603023, 0.693476, 0.723627]
:max => [1.08544, 1.05999, 0.994987]
:std => [0.288987, 0.282678, 0.279635]
:cv => [0.463296, 0.436699, 0.41702] |
Ah, now that I re-read what I wrote I was thinking of using Named Tuples, which is what I'm more comfortable with from previous work, but am open to the discussion for sure. I think I used Dictionaries originally just to hew closely to the Python SALib implementation, though that was several years ago so I've learned more since then about Julia! |
As in title - this PR adds the PAWN moment-independent sensitivity analysis method to this package.
Two additional dependencies are required: HypothesisTests (which provides the Kolmogorov-Smirnov test) and Logging.
The Logging package is used to hide some warnings that appear from HypothesisTests when ties occur in the outputs (which may be quite frequent).
I did not implement
sample()
, and not sure if it's necessary.Usage example:
Unrelated to this PR, but I think relying on Dictionaries as the return type results in some annoyances (e.g., accessing/slicing across results) and performance issues however minor they may be in practice.
I would suggest one of the below be investigated and adopted: