SmoothCFTest¶
- class hyppo.ksample.SmoothCFTest(num_randfreq=5)¶
Smooth Characteristic Function test statistic and p-value
The Smooth Characteristic Function test is a two-sample test that uses differences in the smoothed (analytic) characteristic function of two data distributions in order to determine how different the two data are 1.
- Parameters
num_randfreq (
int
) -- Used to construct random array with size(p, q)
where p is the number of dimensions of the data and q is the random frequency at which the test is performed. These are the random test points at which test occurs (see notes).
Notes
The test statistic takes on the following form:
\[nW_n\Sigma_n^{-1}W_n\]As seen in the above formulation, this test-statistic takes the same form as the Hotelling \(T^2\) statistic. However, the components are defined differently in this case. Given data sets X and Y, define the following as \(Z_i\), the vector of differences:
\[Z_i = (k(X_i, T_1) - k(Y_i, T_1), \ldots, k(X_i, T_J) - k(Y_i, T_J)) \in \mathbb{R}^J\]The above is the vector of differences between kernels at test points, \(T_j\). This same formulation is used in the Mean Embedding Test. Moving forward, \(W_n\) can be defined:
\[W_n = \frac{1}{n} \sum_{i = 1}^n Z_i\]This leaves \(\Sigma_n\), the covariance matrix as:
\[\Sigma_n = \frac{1}{n}ZZ^T\]In the specific case of the Smooth Characteristic function test, the vector of differences can be defined as follows:
\[Z_i = (f(X_i)\sin(X_iT_1) - f(Y_i)\sin(Y_iT_1), f(X_i)\cos(X_iT_1) - f(Y_i)\cos(Y_iT_1),\cdots) \in \mathbb{R}^{2J}\]Once \(S_n\) is calculated, a threshold \(r_{\alpha}\) corresponding to the \(1 - \alpha\) quantile of a Chi-squared distribution w/ J degrees of freedom is chosen. Null is rejected if \(S_n\) is larger than this threshold.
References
- 1
Kacper P Chwialkowski, Aaditya Ramdas, Dino Sejdinovic, and Arthur Gretton. Fast two-sample testing with analytic representations of probability measures. Advances in Neural Information Processing Systems, 2015.
Methods Summary
|
Calculates the smooth CF test statistic. |
|
Calculates the smooth CF test statistic and p-value. |
- SmoothCFTest.statistic(x, y, random_state)¶
Calculates the smooth CF test statistic.
- Parameters
- Returns
stat (
float
) -- The computed Smooth CF statistic.
- SmoothCFTest.test(x, y, random_state=None)¶
Calculates the smooth CF test statistic and p-value.
- Parameters
- Returns
Examples
>>> import numpy as np >>> from hyppo.ksample import SmoothCFTest >>> np.random.seed(1234) >>> x = np.random.randn(500, 10) >>> y = np.random.randn(500, 10) >>> stat, pvalue = SmoothCFTest().test(x, y, random_state=1234) >>> '%.2f, %.3f' % (stat, pvalue) '4.70, 0.910'