Movatterモバイル変換


[0]ホーム

URL:


Back to Documentations

SignatureDescriptionParameters
#include<DataFrame/DataFrameStatsVisitors.h>template<typename T,typename I=unsignedlong>struct CramerVonMisesTestVisitor;// -------------------------------------template<typename T,typename I=unsignedlong>using cvonm_test_v= CramerVonMisesTestVisitor<T, I>;
This functor class calculates the Cramer-von Mises Test

The Cramer-von Mises test is a statistical test used to assess how well a sample dataset fits a specified distribution. It's a non-parametric goodness-of-fit test, meaning it doesn't rely on assumptions about the specific distribution of the data. It's often used as an alternative to theKolmogorov-Smirnov test, especially when deviations at the tails of the distribution are important.
The calculated test statistic is then compared to critical values from a distribution or a p-value is calculated. This determines whether the observed difference is statistically significant, indicating a poor fit of the data to the hypothesized distribution.

get_result() returns the test statistics (W2). It quantifies the difference between the sample's empirical cumulative distribution function (ECDF) and the theoretical normal distribution function (CDF). A higher test statistic indicates a greater discrepancy between the sample and the normal distribution.
get_p_value() member function returns the p-value. P-value is between 0 and 1. Closer values to one means there's not enough evidence to conclude that the sample data differs significantly from the normal distribution.
    CramerVonMisesTestVisitor();
T: Column data type.
I: Index type.
staticvoid test_CramerVonMisesTestVisitor(){std::cout<<"\nTesting CramerVonMisesTestVisitor{ } ..."<<std::endl;    StrDataFrame    ibm;try{        ibm.read("IBM.csv", io_format::csv2);}catch(const DataFrameError&ex){std::cout<< ex.what()<<std::endl;::exit(-1);}constauto              col_s= ibm.get_index().size();    RandGenParams<double>   p1{.min_value=99,.max_value=200,.seed=123};    ibm.load_column("uniform", gen_uniform_real_dist<double>(col_s, p1));    ibm.load_column("exponential", gen_exponential_dist<double>(col_s, p1));    ibm.load_column("lognormal", gen_lognormal_dist<double>(col_s, p1));    ibm.load_column("normal", gen_normal_dist<double>(col_s, p1));    RandGenParams<double>   p2{.seed=123,.mean=0,.std=1.0};    ibm.load_column("std_normal", gen_normal_dist<double>(col_s, p2));    CramerVonMisesTestVisitor<double,std::string>  cvmt;    ibm.single_act_visit<double>("IBM_Close", cvmt);    assert((std::fabs(cvmt.get_result()-8.56304)<0.00001));    assert((std::fabs(cvmt.get_p_value()-2.22045e-16)<0.0000000000001));    ibm.single_act_visit<double>("uniform", cvmt);    assert((std::fabs(cvmt.get_result()-7.78703)<0.00001));    assert((std::fabs(cvmt.get_p_value()-2.22045e-16)<0.0000000000001));    ibm.single_act_visit<double>("exponential", cvmt);    assert((std::fabs(cvmt.get_result()-39.0971)<0.0001));    assert((std::fabs(cvmt.get_p_value()-2.22045e-16)<0.0000000000001));    ibm.single_act_visit<double>("lognormal", cvmt);    assert((std::fabs(cvmt.get_result()-96.4868)<0.0001));    assert((std::fabs(cvmt.get_p_value()-2.22045e-16)<0.0000000000001));    ibm.single_act_visit<double>("normal", cvmt);    assert((std::fabs(cvmt.get_result()-0.040035)<0.000001));    assert((std::fabs(cvmt.get_p_value()-0.99)<0.01));    ibm.single_act_visit<double>("std_normal", cvmt);    assert((std::fabs(cvmt.get_result()-0.040035)<0.000001));    assert((std::fabs(cvmt.get_p_value()-0.99)<0.01));}

C++ DataFrame
[8]ページ先頭

©2009-2025 Movatter.jp