mirror of
https://github.com/titanscouting/tra-analysis.git
synced 2024-12-27 18:09:08 +00:00
9f71ab3aad
* reflected doc changes to README.md
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* tra_analysis v 2.1.0-alpha.1
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* changed setup.py to use __version__ from source
added Topic and keywords
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* updated Supported Platforms in README.md
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* moved required files back to parent
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* moved security back to parent
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* moved security back to parent
moved contributing back to parent
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* add PR template
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* moved to parent folder
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* moved meta files to .github folder
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* Analysis.py v 3.0.1
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* updated test_analysis for submodules, and added missing numpy import in Sort.py
* fixed item one of Issue #58
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* readded cache searching in postCreateCommand
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* added myself as an author
* feat: created kivy gui boilerplate
* added Kivy to requirements.txt
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* feat: gui with placeholders
* fix: changed config.json path
* migrated docker base image to debian
Signed-off-by: ltcptgeneral <learthurgo@gmail.com>
* style: spaces to tabs
* migrated to ubuntu
Signed-off-by: ltcptgeneral <learthurgo@gmail.com>
* fixed issues
Signed-off-by: ltcptgeneral <learthurgo@gmail.com>
* fix: docker build?
* fix: use ubuntu bionic
* fix: get kivy installed
* @ltcptgeneral can't spell
* optim dockerfile for not installing unused packages
* install basic stuff while building the container
* use prebuilt image for development
* install pylint on base image
* rename and use new kivy
* tests: added tests for Array and CorrelationTest
Both are not working due to errors
* use new thing
* use 20.04 base
* symlink pip3 to pip
* use pip instead of pip3
* equation.Expression.py v 0.0.1-alpha
added corresponding .pyc to .gitignore
* parser.py v 0.0.2-alpha
* added pyparsing to requirements.txt
* parser v 0.0.4-alpha
* Equation v 0.0.1-alpha
* added Equation to tra_analysis imports
* tests: New unit tests for submoduling (#66)
* feat: created kivy gui boilerplate
* migrated docker base image to debian
Signed-off-by: ltcptgeneral <learthurgo@gmail.com>
* migrated to ubuntu
Signed-off-by: ltcptgeneral <learthurgo@gmail.com>
* fixed issues
Signed-off-by: ltcptgeneral <learthurgo@gmail.com>
* fix: docker build?
* fix: use ubuntu bionic
* fix: get kivy installed
* @ltcptgeneral can't spell
* optim dockerfile for not installing unused packages
* install basic stuff while building the container
* use prebuilt image for development
* install pylint on base image
* rename and use new kivy
* tests: added tests for Array and CorrelationTest
Both are not working due to errors
* fix: Array no longer has *args and CorrelationTest functions no longer have self in the arguments
* use new thing
* use 20.04 base
* symlink pip3 to pip
* use pip instead of pip3
* tra_analysis v 2.1.0-alpha.2
SVM v 1.0.1
added unvalidated SVM unit tests
Signed-off-by: ltcptgeneral <learthurgo@gmail.com>
* fixed version number
Signed-off-by: ltcptgeneral <learthurgo@gmail.com>
* tests: added tests for ClassificationMetric
* partially fixed and commented out svm unit tests
* fixed some SVM unit tests
* added installing pytest to devcontainer.json
* fix: small fixes to KNN
Namely, removing self from parameters and passing correct arguments to KNeighborsClassifier constructor
* fix, test: Added tests for KNN and NaiveBayes.
Also made some small fixes in KNN, NaiveBayes, and RegressionMetric
* test: finished unit tests except for StatisticalTest
Also made various small fixes and style changes
* StatisticalTest v 1.0.1
* fixed RegressionMetric unit test
temporarily disabled CorrelationTest unit tests
* tra_analysis v 2.1.0-alpha.3
* readded __all__
* fix: floating point issues in unit tests for CorrelationTest
Co-authored-by: AGawde05 <agawde05@gmail.com>
Co-authored-by: ltcptgeneral <learthurgo@gmail.com>
Co-authored-by: Dev Singh <dev@devksingh.com>
Co-authored-by: jzpan1 <panzhenyu2014@gmail.com>
* fixed depreciated escape sequences
* ficed tests, indent, import in test_analysis
* changed version to 3.0.0
added backwards compatibility
* ficed pytest install in container
* removed GUI changes
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* incremented version to rc.1 (release candidate 1)
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* fixed NaiveBayes __changelog__
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* fix: __setitem__ == to single =
* Array v 1.0.1
* Revert "Array v 1.0.1"
This reverts commit 59783b79f7
.
* Array v 1.0.1
* Array.py v 1.0.2
added more Array unit tests
* cleaned .gitignore
tra_analysis v 3.0.0-rc2
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
* added *.pyc to gitignore
finished subdividing test_analysis
* feat: gui layout + basic func
* Froze and removed superscript (data-analysis)
* remove data-analysis deps install for devcontainer
* tukey pairwise comparison and multicomparison but no critical q-values
* quick patch for devcontainer.json
* better fix for devcontainer.json
* fixed some styling in StatisticalTest
removed print statement in StatisticalTest unit tests
* update analysis tests to be more effecient
* don't use loop for test_nativebayes
* removed useless secondary docker files
* tra-analysis v 3.0.0
Co-authored-by: James Pan <panzhenyu2014@gmail.com>
Co-authored-by: AGawde05 <agawde05@gmail.com>
Co-authored-by: zpan1 <72054510+zpan1@users.noreply.github.com>
Co-authored-by: Dev Singh <dev@devksingh.com>
Co-authored-by: = <=>
Co-authored-by: Dev Singh <dsingh@imsa.edu>
Co-authored-by: zpan1 <zpan@imsa.edu>
170 lines
6.5 KiB
Python
170 lines
6.5 KiB
Python
# Only included for backwards compatibility! Do not update, StatisticalTest is preferred and supported.
|
|
|
|
import scipy
|
|
from scipy import stats
|
|
|
|
class StatisticalTest:
|
|
|
|
def ttest_onesample(self, a, popmean, axis = 0, nan_policy = 'propagate'):
|
|
|
|
results = scipy.stats.ttest_1samp(a, popmean, axis = axis, nan_policy = nan_policy)
|
|
return {"t-value": results[0], "p-value": results[1]}
|
|
|
|
def ttest_independent(self, a, b, equal = True, nan_policy = 'propagate'):
|
|
|
|
results = scipy.stats.ttest_ind(a, b, equal_var = equal, nan_policy = nan_policy)
|
|
return {"t-value": results[0], "p-value": results[1]}
|
|
|
|
def ttest_statistic(self, o1, o2, equal = True):
|
|
|
|
results = scipy.stats.ttest_ind_from_stats(o1["mean"], o1["std"], o1["nobs"], o2["mean"], o2["std"], o2["nobs"], equal_var = equal)
|
|
return {"t-value": results[0], "p-value": results[1]}
|
|
|
|
def ttest_related(self, a, b, axis = 0, nan_policy='propagate'):
|
|
|
|
results = scipy.stats.ttest_rel(a, b, axis = axis, nan_policy = nan_policy)
|
|
return {"t-value": results[0], "p-value": results[1]}
|
|
|
|
def ks_fitness(self, rvs, cdf, args = (), N = 20, alternative = 'two-sided', mode = 'approx'):
|
|
|
|
results = scipy.stats.kstest(rvs, cdf, args = args, N = N, alternative = alternative, mode = mode)
|
|
return {"ks-value": results[0], "p-value": results[1]}
|
|
|
|
def chisquare(self, f_obs, f_exp = None, ddof = None, axis = 0):
|
|
|
|
results = scipy.stats.chisquare(f_obs, f_exp = f_exp, ddof = ddof, axis = axis)
|
|
return {"chisquared-value": results[0], "p-value": results[1]}
|
|
|
|
def powerdivergence(self, f_obs, f_exp = None, ddof = None, axis = 0, lambda_ = None):
|
|
|
|
results = scipy.stats.power_divergence(f_obs, f_exp = f_exp, ddof = ddof, axis = axis, lambda_ = lambda_)
|
|
return {"powerdivergence-value": results[0], "p-value": results[1]}
|
|
|
|
def ks_twosample(self, x, y, alternative = 'two_sided', mode = 'auto'):
|
|
|
|
results = scipy.stats.ks_2samp(x, y, alternative = alternative, mode = mode)
|
|
return {"ks-value": results[0], "p-value": results[1]}
|
|
|
|
def es_twosample(self, x, y, t = (0.4, 0.8)):
|
|
|
|
results = scipy.stats.epps_singleton_2samp(x, y, t = t)
|
|
return {"es-value": results[0], "p-value": results[1]}
|
|
|
|
def mw_rank(self, x, y, use_continuity = True, alternative = None):
|
|
|
|
results = scipy.stats.mannwhitneyu(x, y, use_continuity = use_continuity, alternative = alternative)
|
|
return {"u-value": results[0], "p-value": results[1]}
|
|
|
|
def mw_tiecorrection(self, rank_values):
|
|
|
|
results = scipy.stats.tiecorrect(rank_values)
|
|
return {"correction-factor": results}
|
|
|
|
def rankdata(self, a, method = 'average'):
|
|
|
|
results = scipy.stats.rankdata(a, method = method)
|
|
return results
|
|
|
|
def wilcoxon_ranksum(self, a, b): # this seems to be superceded by Mann Whitney Wilcoxon U Test
|
|
|
|
results = scipy.stats.ranksums(a, b)
|
|
return {"u-value": results[0], "p-value": results[1]}
|
|
|
|
def wilcoxon_signedrank(self, x, y = None, zero_method = 'wilcox', correction = False, alternative = 'two-sided'):
|
|
|
|
results = scipy.stats.wilcoxon(x, y = y, zero_method = zero_method, correction = correction, alternative = alternative)
|
|
return {"t-value": results[0], "p-value": results[1]}
|
|
|
|
def kw_htest(self, *args, nan_policy = 'propagate'):
|
|
|
|
results = scipy.stats.kruskal(*args, nan_policy = nan_policy)
|
|
return {"h-value": results[0], "p-value": results[1]}
|
|
|
|
def friedman_chisquare(self, *args):
|
|
|
|
results = scipy.stats.friedmanchisquare(*args)
|
|
return {"chisquared-value": results[0], "p-value": results[1]}
|
|
|
|
def bm_wtest(self, x, y, alternative = 'two-sided', distribution = 't', nan_policy = 'propagate'):
|
|
|
|
results = scipy.stats.brunnermunzel(x, y, alternative = alternative, distribution = distribution, nan_policy = nan_policy)
|
|
return {"w-value": results[0], "p-value": results[1]}
|
|
|
|
def combine_pvalues(self, pvalues, method = 'fisher', weights = None):
|
|
|
|
results = scipy.stats.combine_pvalues(pvalues, method = method, weights = weights)
|
|
return {"combined-statistic": results[0], "p-value": results[1]}
|
|
|
|
def jb_fitness(self, x):
|
|
|
|
results = scipy.stats.jarque_bera(x)
|
|
return {"jb-value": results[0], "p-value": results[1]}
|
|
|
|
def ab_equality(self, x, y):
|
|
|
|
results = scipy.stats.ansari(x, y)
|
|
return {"ab-value": results[0], "p-value": results[1]}
|
|
|
|
def bartlett_variance(self, *args):
|
|
|
|
results = scipy.stats.bartlett(*args)
|
|
return {"t-value": results[0], "p-value": results[1]}
|
|
|
|
def levene_variance(self, *args, center = 'median', proportiontocut = 0.05):
|
|
|
|
results = scipy.stats.levene(*args, center = center, proportiontocut = proportiontocut)
|
|
return {"w-value": results[0], "p-value": results[1]}
|
|
|
|
def sw_normality(self, x):
|
|
|
|
results = scipy.stats.shapiro(x)
|
|
return {"w-value": results[0], "p-value": results[1]}
|
|
|
|
def shapiro(self, x):
|
|
|
|
return "destroyed by facts and logic"
|
|
|
|
def ad_onesample(self, x, dist = 'norm'):
|
|
|
|
results = scipy.stats.anderson(x, dist = dist)
|
|
return {"d-value": results[0], "critical-values": results[1], "significance-value": results[2]}
|
|
|
|
def ad_ksample(self, samples, midrank = True):
|
|
|
|
results = scipy.stats.anderson_ksamp(samples, midrank = midrank)
|
|
return {"d-value": results[0], "critical-values": results[1], "significance-value": results[2]}
|
|
|
|
def binomial(self, x, n = None, p = 0.5, alternative = 'two-sided'):
|
|
|
|
results = scipy.stats.binom_test(x, n = n, p = p, alternative = alternative)
|
|
return {"p-value": results}
|
|
|
|
def fk_variance(self, *args, center = 'median', proportiontocut = 0.05):
|
|
|
|
results = scipy.stats.fligner(*args, center = center, proportiontocut = proportiontocut)
|
|
return {"h-value": results[0], "p-value": results[1]} # unknown if the statistic is an h value
|
|
|
|
def mood_mediantest(self, *args, ties = 'below', correction = True, lambda_ = 1, nan_policy = 'propagate'):
|
|
|
|
results = scipy.stats.median_test(*args, ties = ties, correction = correction, lambda_ = lambda_, nan_policy = nan_policy)
|
|
return {"chisquared-value": results[0], "p-value": results[1], "m-value": results[2], "table": results[3]}
|
|
|
|
def mood_equalscale(self, x, y, axis = 0):
|
|
|
|
results = scipy.stats.mood(x, y, axis = axis)
|
|
return {"z-score": results[0], "p-value": results[1]}
|
|
|
|
def skewtest(self, a, axis = 0, nan_policy = 'propogate'):
|
|
|
|
results = scipy.stats.skewtest(a, axis = axis, nan_policy = nan_policy)
|
|
return {"z-score": results[0], "p-value": results[1]}
|
|
|
|
def kurtosistest(self, a, axis = 0, nan_policy = 'propogate'):
|
|
|
|
results = scipy.stats.kurtosistest(a, axis = axis, nan_policy = nan_policy)
|
|
return {"z-score": results[0], "p-value": results[1]}
|
|
|
|
def normaltest(self, a, axis = 0, nan_policy = 'propogate'):
|
|
|
|
results = scipy.stats.normaltest(a, axis = axis, nan_policy = nan_policy)
|
|
return {"z-score": results[0], "p-value": results[1]} |