How to Capture Full Output of a HypothesisTest.jl Test?


#1

Newbie question that probably relates to other structures, but I encountered it trying to use ApproximateTwoSampleKSTest. When I run it, I get a summary “report” back to the screen. Using dump(), I can see the 5 elements of the struct that is returned. I can use pvalue() to get the p-value.

But how can I capture, say, the “KS-statistic” value, or the text of the test summary outcome into a variable?

           _

_ _ ()_ | Documentation: https://docs.julialang.org
() | () () |
_ _ | | __ _ | Type “?” for help, “]?” for Pkg help.
| | | | | | |/ ` | |
| | |
| | | | (
| | | Version 1.0.3 (2018-12-18)
/ |_|||_’_| | Official https://julialang.org/ release
|__/ |

julia> using HypothesisTests

julia> tmp = ApproximateTwoSampleKSTest([1,3,5,7],[2,4,6,8])
Approximate two sample Kolmogorov-Smirnov test

Population details:
parameter of interest: Supremum of CDF differences
value under h_0: 0.0
point estimate: 0.25

Test summary:
outcome with 95% confidence: fail to reject h_0
two-sided p-value: 0.9996

Details:
number of observations: [4,4]
KS-statistic: 0.3535533905932738

julia> dump(tmp)
ApproximateTwoSampleKSTest
n_x: Int64 4
n_y: Int64 4
δ: Float64 0.25
δp: Float64 0.25
δn: Float64 -0.0

julia> pvalue(tmp)
0.9996332921577278

julia> tmp.n_x
4

julia>


#2

The KS-statistic value is sqrt(tmp.n_x*tmp.n_y/(tmp.n_x + tmp.n_y)) * tmp.δ (see e.g. here).

To capture the output into a string variable, you could do

io = IOBuffer();
show(io, "text/plain", tmp)
textsummary = String(take!(io))

But I don’t know how useful this is, if you want to further process the data.


#3

Fyi, you can wrap code in triple backticks (the symbol next to the numeral 1, at least on American keyboards) to get money formatting of code. Like so:

```
julia> 1+1
  2

julia>
```