Impure wrapper procedure for s_tst_ttest_2s_core
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | x1(:) |
x1 vector (samples) |
||
real(kind=wp), | intent(in) | :: | x2(:) |
x2 vector (samples) |
||
real(kind=wp), | intent(out) | :: | t |
test statistic |
||
real(kind=wp), | intent(out) | :: | df |
degrees of freedom |
||
real(kind=wp), | intent(out) | :: | p |
p-value |
||
logical, | intent(in), | optional | :: | eq_var |
true if equal variances assumed |
|
character(len=*), | intent(in), | optional | :: | h1 |
option: two (default), le, ge |
impure subroutine s_tst_ttest_2s(x1, x2, t, df, p, eq_var, h1) ! ==== Description !! Impure wrapper procedure for `s_tst_ttest_2s_core`. ! ==== Declarations real(wp) , intent(in) :: x1(:) !! x1 vector (samples) real(wp) , intent(in) :: x2(:) !! x2 vector (samples) character(len=*), intent(in), optional :: h1 !! \( H_{1} \) option: two (default), le, ge logical , intent(in), optional :: eq_var !! true if equal variances assumed real(wp) , intent(out) :: t !! test statistic real(wp) , intent(out) :: df !! degrees of freedom real(wp) , intent(out) :: p !! p-value character(len=16) :: h1_w !! final value for h1 logical :: eq_var_w !! final value for eq_var ! ==== Instructions ! ---- handle input ! assume two-sided, overwrite if option is passed h1_w = "two" if (present(h1)) h1_w = h1 ! check if h1 (tail) options are valid if (h1_w .ne. "lt" .and. h1_w .ne. "gt" .and. h1_w .ne. "two") then ! write error message and assign sentinel value if invalid call s_err_print(fsml_error(2)) t = c_sentinel_r df = c_sentinel_r p = c_sentinel_r return endif ! assume unequal variances, overwrite if option is passed eq_var_w = .false. if (present(eq_var)) eq_var_w = eq_var ! check if size is valid if (size(x1) .le. 1) then ! write error message and assign sentinel value if invalid call s_err_print(fsml_error(4)) t = c_sentinel_r df = c_sentinel_r p = c_sentinel_r return endif ! check if x1 and x2 have same size if (size(x1) .ne. size(x2)) then ! write error message and assign sentinel value if invalid call s_err_print(fsml_error(4)) t = c_sentinel_r df = c_sentinel_r p = c_sentinel_r return endif ! ---- conduct test ! call pure procedure call s_tst_ttest_2s_core(x1, x2, t, df, p, eq_var_w, h1_w) end subroutine s_tst_ttest_2s