s_tst_ttest_2s Subroutine

public impure subroutine s_tst_ttest_2s(x1, x2, t, df, p, eq_var, h1)

Impure wrapper procedure for s_tst_ttest_2s_core.

Arguments

Type IntentOptional 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


Calls

proc~~s_tst_ttest_2s~~CallsGraph proc~s_tst_ttest_2s s_tst_ttest_2s proc~s_err_print s_err_print proc~s_tst_ttest_2s->proc~s_err_print proc~s_tst_ttest_2s_core s_tst_ttest_2s_core proc~s_tst_ttest_2s->proc~s_tst_ttest_2s_core proc~f_utl_r2c f_utl_r2c proc~s_err_print->proc~f_utl_r2c proc~f_dst_t_cdf_core f_dst_t_cdf_core proc~s_tst_ttest_2s_core->proc~f_dst_t_cdf_core proc~f_sts_mean_core f_sts_mean_core proc~s_tst_ttest_2s_core->proc~f_sts_mean_core proc~f_dst_betai_core f_dst_betai_core proc~f_dst_t_cdf_core->proc~f_dst_betai_core

Called by

proc~~s_tst_ttest_2s~~CalledByGraph proc~s_tst_ttest_2s s_tst_ttest_2s interface~fsml_ttest_2sample fsml_ttest_2sample interface~fsml_ttest_2sample->proc~s_tst_ttest_2s

Source Code

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