Chi-Square and Exact Tests for Model-Free Functional Dependency
Statistical hypothesis testing methods for
model-free functional dependency using asymptotic
chi-square or exact distributions. Functional
chi-squares are asymmetric and functionally optimal,
unique from other related statistics. Tests in this package
reveal evidence for causality based on the
causality-by-functionality principle. They include
asymptotic functional chi-square tests, an exact functional
test, a comparative functional chi-square test, and also a
comparative chi-square test. The normalized non-constant
functional chi-square test was used by Best Performer
NMSUSongLab in HPN-DREAM (DREAM8) Breast Cancer Network
Inference Challenges. A function index derived from the
functional chi-square offers a new effect size measure for
the strength of function dependency, a better alternative
to conditional entropy in many aspects. For continuous
data, these tests offer an advantage over regression
analysis when a parametric functional form cannot be
assumed; for categorical data, they provide a novel means
to assess directional dependency not possible with
symmetrical Pearson's chi-square or Fisher's exact tests.
- Reintroduced a test source code file test_FunChisq.R back,
which was accidentally deleted from the previous version.
- Added a plot_table() function to visualize a contingency table.
- Created version 2.4.5-2.
- Included conditional FunChisq R code.
In the exact functional test C++ code, improved the numerical
precision of the FunChisq statistic using an equivalent
mathematical form already used in the R version. This fixed bugs
in the exact functional test when the table is of certain
dimension and sample size.
Added a few more test cases for the exact functional test.
Increased the maximum table size from 5x5 to 10x10 for the
exact functional test.
Added a warning message when asymptotic test is used in place
of the exact test to avoid long computational time.
Updated the DOI of the reference to exact functional test.
- Added a parameter "exact.mode.bound" in the fun.chisq.test()
function to switch ON/OFF the fast branch-and-bound algorithm in
the exact functional test.
- Updated testthat cases for exact functional test.
- Added a new reference (Zhong and Song, 2018) for exact
- Changed the package title to "Chi-Square and Exact Tests for
Model-Free Functional Dependency"
- Included a reference for the simulate_tables() function that
describes the strategies used by the function.
- Updated the functional indices to be more accurate when the
number of row is less than the number of columns and also
when conditioned on the column sum.
- Added "simulate.p.value" method option in fun.chisq.test()
to calculate p-value with Monte carlo simulated distribution.
- Updated the vignette for choosing quantities for functional
- Fixed a bug in simulating 'discontinuous' contingency tables
when the number of column is two.
- Updated manuals.
- Fixed a bug in specifying the margin to apply noise in
- Added a noise.model parameter in simulate_tables() to
specify either the "house" or "candle" noise model for applying
noise to contingency tables representing ordinal or categorical
- Revised package description and manuals.
- Renamed pattern type "nonmonotonic" to "many.to.one" in
simulate_tables(). The latter is mathematically correct.
- Added a "discontinuous" pattern type in simulate_tables().
- Added a new candle noise model for categorical variables.
- Sped up add.noise function code by taking advantage of
vectorized multinomial distribution R function.
- Revised the manual for function simulate_tables()
- Suppressed warning messages when calling chisq.test() to
compute chi-squares in function simulate_tables().
- Edited the manual for simulate_tables().
- Edited other manuals for improved consistency with R package
- Added a new R function simulate_tables() with supporting test functions.
- Added a new R function add.house.noise() with supporting test functions.
- Introduced the use of 'R_registerRoutines' and 'R_useDynamicSymbols'.
- Added keywords to the package manual.
- Updated the vignettes.
- Updated the reference section to fix the year of Pearson's chi-square test
paper which was published in 1900 not 1990.
- Now check all options for the method argument so that only valid
methods are allowed.
- Expanded test.interactions() to test many-to-one combinatorial
interactions in C++ via Rcpp.
Version 2.3.0 (not deposited to CRAN)
- Data frame input is now converted to numeric matrix before exact
- Added function test.interactions() to test pairwise (one-to-one)
interactions, implemented in C++ via Rcpp for computational efficiency.
- Added vignette "Which statistic to use for functional dependency
- Updated references and description.
- Use [[Rcpp::export]] to automatically generate R interface.
- Revised the code to remove dependency on RcppClassic.
- Revised help documentation and included new references.
- Handled a special case for the normalized FunChisq when the degrees of
freedom are zero.
- Renamed the "type" argument to "alternative" in fun.chisq.test().
- Revised values of the "method" argument in fun.chisq.test(). Previous
values ("default" and "normalized") are still supported but obsolete.
- Added the "log.p" argument in both cp.fun.chisq.test() and cp.chisq.test().
- Updated the documentation.
- Added a new argument "index.kind" to fun.chisq.test() to specify
the function index kind: "unconditional" or "conditional" on a given
marginal of Y.
- Fixed a bug in cp.chisq.test().
- Fixed a bug introduced in the previous version.
- Updated package description to be more reflective of recent additions.
- Included missing references.
- Improved code efficiency for fun.chisq.test().
- Now fun.chisq.test() returns an estimate of function index between
0 and 1, in analogy to Cramer's V, but asymmetrical.
- Added additional test examples for fun.chisq.test().
- Added type argument to fun.chisq.test() to specify functional or
non-constant functional chi-squares.
- Added log.p argument to fun.chisq.test() to obtain log of p-value
to improve accuracy when sample size is large and p-value is close
2015-07-03 (Unpublished version 2.1.1 )
- Added cp.chisq.test() for comparative chi-square test, not considering
- Added test examples for cp.chisq.test().
Version 2.1.0 2015-06-29
- Substantially reduced the run time of exact functional test by designing a
better branch and bound strategy.
- Enabled C++11 compling by adding two files (Makevars and Makevars.win).
- Fixed a bug occured under WIN32 using long double by adding define.h to
specify double precision for WIN32 and long double precision for WIN64.
- Increased float comparison precision by considering a tolerance.
- Imported pnorm() and pchisq() from the "stats" package.
Version 2.0.2 2015-03-03
- Updated documentation for the package and its functions.
- Fixed a testing issue under r-release-linux-ix86 flavor.
Version 2.0.1 2015-02-23
- Removed assert() function from StatDistribution.cpp.
- Removed Makevar and Makevar.win files.
- Removed all iostream and sstream and cassert.
- Removed TransitionTableIO.cpp.
- In the testthat examples, signif(x,8) is used to compare 8 significant
digits of the results.
- Added a normalized functional chi-square test example.
Version 2.0.0 2015-02-12
- Added a new exact functional test as a method option to fun.chisq.test().
The exact functional test is an exact version of FunChisq test, it is
more precise to detect functional dependencies in small sample-sized
- Added a new comparative functional chi-square test for detecting
heterogeneity in functional dependencies among contingency tables.
- Revised the examples and documentation to improve usability.
- Added automated test cases into the package.
- Started the NEWS file.
Version 1.0 2014-03-08
- The first release of this package implements the functional chi-square
test and a normalized version.