Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
elif 'outliers' in cor_st_keys:
stats.loc[i, dvs_out] = cor_st[dvs_out].values
else:
stats.loc[i, dvs] = cor_st[dvs].values
# Force conversion to numeric
stats = stats.astype({'r': float, 'r2': float, 'adj_r2': float,
'n': int, 'p-val': float, 'outliers': float,
'power': float})
# Multiple comparisons
stats = stats.rename(columns={'p-val': 'p-unc'})
padjust = None if stats['p-unc'].size <= 1 else padjust
if padjust is not None:
if padjust.lower() != 'none':
reject, stats['p-corr'] = multicomp(stats['p-unc'].values,
method=padjust)
stats['p-adjust'] = padjust
else:
stats['p-corr'] = None
stats['p-adjust'] = None
# Standardize correlation coefficients (Fisher z-transformation)
stats['z'] = np.round(np.arctanh(stats['r'].values), 3)
col_order = ['X', 'Y', 'method', 'tail', 'n', 'outliers', 'r', 'CI95%',
'r2', 'adj_r2', 'z', 'p-unc', 'p-corr', 'p-adjust',
'BF10', 'power']
# Reorder columns and remove empty ones
stats = stats.reindex(columns=col_order).dropna(how='all', axis=1)
assert isinstance(decimals, int), 'decimals must be an int.'
assert method in ['pearson', 'spearman'], 'Method is not recognized.'
assert upper in ['pval', 'n'], 'upper must be either `pval` or `n`.'
mat = self.corr(method=method).round(decimals)
if upper == 'n':
mat_upper = self.corr(method=lambda x, y: len(x)).astype(int)
else:
if method == 'pearson':
mat_upper = self.corr(method=lambda x, y: pearsonr(x, y)[1])
else:
# Method = 'spearman'
mat_upper = self.corr(method=lambda x, y: spearmanr(x, y)[1])
if padjust is not None:
pvals = mat_upper.values[tif(mat, k=1)]
mat_upper.values[tif(mat, k=1)] = multicomp(pvals, alpha=0.05,
method=padjust)[1]
# Convert r to text
mat = mat.astype(str)
np.fill_diagonal(mat.values, '-') # Inplace modification of the diagonal
if upper == 'pval':
def replace_pval(x):
for key, value in pval_stars.items():
if x < key:
return value
return ''
if stars:
# Replace p-values by stars
stat_name = 'U-val'
df_ttest = mwu(x, y, tail=tail)
# Append to stats
if return_desc:
stats.at[ic, 'mean(A)'] = np.round(np.nanmean(x), 3)
stats.at[ic, 'mean(B)'] = np.round(np.nanmean(y), 3)
stats.at[ic, 'std(A)'] = np.round(np.nanstd(x), 3)
stats.at[ic, 'std(B)'] = np.round(np.nanstd(y), 3)
stats.at[ic, stat_name] = df_ttest[stat_name].iat[0]
stats.at[ic, 'p-unc'] = df_ttest['p-val'].iat[0]
stats.at[ic, effsize] = ef
# Multi-comparison columns
if padjust is not None and padjust.lower() != 'none':
_, pcor = multicomp(stats.loc[idxiter, 'p-unc'].values,
alpha=alpha, method=padjust)
stats.loc[idxiter, 'p-corr'] = pcor
stats.loc[idxiter, 'p-adjust'] = padjust
# ---------------------------------------------------------------------
# Append parametric columns
stats.loc[:, 'Parametric'] = parametric
# Reorder and drop empty columns
stats = stats[np.array(col_order)[np.isin(col_order, stats.columns)]]
stats = stats.dropna(how='all', axis=1)
# Rename Time columns
if (contrast in ['multiple_within', 'multiple_between', 'within_between']
and interaction):
stats['Time'].fillna('-', inplace=True)
np.random.seed(1234)
N = 6
pvals = np.random.rand(N)
pvals[[0]] *= 0.01
pvals[[3]] *= 0.1
print('Uncorrected p-values: ', pvals)
# Multiple comparisons
# -----------------------
reject, pvals_corrected = multicomp(pvals, alpha=.05, method='bonf')
print('Bonf-corrected p-values: ', pvals_corrected)
reject, pvals_corrected = multicomp(pvals, alpha=.05, method='fdr_bh')
print('FDR-corrected (BH) p-values: ', pvals_corrected)
reject, pvals_corrected = multicomp(pvals, alpha=.05, method='fdr_by')
print('FDR-corrected (BY) p-values: ', pvals_corrected)
reject, pvals_corrected = multicomp(pvals, alpha=.05, method='holm')
print('Holm-corrected p-values: ', pvals_corrected)
assert isinstance(decimals, int), 'decimals must be an int.'
assert method in ['pearson', 'spearman'], 'Method is not recognized.'
assert upper in ['pval', 'n'], 'upper must be either `pval` or `n`.'
mat = self.corr(method=method).round(decimals)
if upper == 'n':
mat_upper = self.corr(method=lambda x, y: len(x)).astype(int)
else:
if method == 'pearson':
mat_upper = self.corr(method=lambda x, y: pearsonr(x, y)[1])
else:
# Method = 'spearman'
mat_upper = self.corr(method=lambda x, y: spearmanr(x, y)[1])
if padjust is not None:
pvals = mat_upper.values[tif(mat, k=1)]
mat_upper.values[tif(mat, k=1)] = multicomp(pvals, alpha=0.05,
method=padjust)[1]
# Convert r to text
mat = mat.astype(str)
np.fill_diagonal(mat.values, '-') # Inplace modification of the diagonal
if upper == 'pval':
def replace_pval(x):
for key, value in pval_stars.items():
if x < key:
return value
return ''
if stars:
# Replace p-values by stars