Skip to content

Conversation

Grego01-biot
Copy link
Contributor

@Grego01-biot Grego01-biot commented Jun 17, 2025

Description

This PR consists of extending the statistical capabilities of tallies in OpenMC by adding the variance of the variance, the skewness and kurtosis values (with adjusted moments) and the D'Agostino-Pearson normality tests (skewness, kurtosis, and omnibus) in fixed source and eigenvalue simulations [1],[2].

The variance of the variance involves the estimated third and fourth moments of the output distribution and is much more sensitive to large fluctuations. It is used to measure the relative statistical uncertainty in the estimated relative error. Since the third and fourth moments are accumulated, additional information can be extracted and normality tests can be performed [3].

The normality tests allow to quantify the nature of the non-normality to see if the data distribution is skewed to the right/left (skewness) and heavy/light in the tails (kurtosis). The most commonly used normality tests are tests against the null hypothesis H0 that the data is normally distributed. The first step in the testing procedure is to compute a test statistic, which follows some known distribution. The test statistic is then converted into a p-value. The null hypothesis is rejected if the p-value is less than a predetermined significance level that can be defined by the user in the tally settings. If the p-value is greater than the significance level, one fails to reject the null hypothesis. For example, if the significance level is chosen to be 0.05 and the obtained p-value is less than this, one can conclude that with 95% probability the data isn’t normally distributed [4].

Future work should focus on adding the capability to print how a tally mean, standard deviation, figure of merit and variance of the variance fluctuate as a function of the number of batches similar to the TFC in MCNP.

[1] D. N. Joanes and C. A. Gill. "Comparing Measures of Sample Skewness and Kurtosis". Journal of the Royal Statistical Society. Series D (The Statistician), 1998, Vol. 47, No. 1 (1998), pp. 183-189.
[2] D’Agostino, Ralph B., and Albert Belanger. “A Suggestion for Using Powerful and Informative Tests of Normality.” The American Statistician, vol. 44, no. 4, 1990, pp. 316–21. JSTOR, https://doi.org/10.2307/2684359. Accessed 17 June 2025.
[3] Kulesza, Joel A. and Adams, Terry R. and Armstrong, Jerawan C. and Bolding, Simon R. and Brown, Forrest B. and Bull, Jeffrey S. and Burke, Timothy P. and Clark, Alexander R. and Forster, III, Robert Arthur and Giron, Jesse F. and Grieve, Avery S. and Josey, Colin J. and Martz, Roger L. and McKinney, Gregg W. and Pearson, Eric J. and Rising, Michael E. and Solomon, Jr., Clell J. and Swaminarayan, Sriram and Trahan, Travis J. and Weaver, Colin A. and Wilson, Stephen C. and Zukaitis, Anthony J. "MCNP Code Version 6.3.1 Theory and User Manual", LA-UR-24-24602, Rev.~1, LANL, NM, USA, May 2024.
[4] T. Kaltiaisenaho. "Statistical Tests and the Underestimation of Variance in Serpent 2", Tech Report: VTT-R-00371-14: https://serpent.vtt.fi/serpent/download/VTT-R-00371-14.pdf

Checklist

  • I have performed a self-review of my own code
  • I have run clang-format (version 15) on any C++ source files (if applicable)
  • I have followed the style guidelines for Python source files (if applicable)
  • I have made corresponding changes to the documentation (if applicable)
  • I have added tests that prove my fix is effective or that my feature works (if applicable)

Greg-biot and others added 30 commits November 20, 2024 23:40
Merge remote-tracking branch 'origin/stat_testing' into stat_testing
Merge remote-tracking branch 'upstream/develop' into stat_testing
@Grego01-biot Grego01-biot marked this pull request as ready for review August 21, 2025 10:07
Copy link
Contributor

@eepeterson eepeterson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the great work @Grego01-biot! First round of comments are here, I'll take a look at more of the python stuff in a bit.

Copy link
Contributor

@eepeterson eepeterson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the quick turnaround @Grego01-biot - second round of comments here

Grego01-biot and others added 14 commits August 22, 2025 22:42
Co-authored-by: Ethan Peterson <eepeterson3@gmail.com>
Co-authored-by: Ethan Peterson <eepeterson3@gmail.com>
Co-authored-by: Ethan Peterson <eepeterson3@gmail.com>
Co-authored-by: Ethan Peterson <eepeterson3@gmail.com>
Co-authored-by: Ethan Peterson <eepeterson3@gmail.com>
Co-authored-by: Ethan Peterson <eepeterson3@gmail.com>
Co-authored-by: Ethan Peterson <eepeterson3@gmail.com>
Co-authored-by: Ethan Peterson <eepeterson3@gmail.com>
Co-authored-by: Ethan Peterson <eepeterson3@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants