From 6295a37abf051d670cb441896bd12187ec13662c Mon Sep 17 00:00:00 2001 From: yiqunchen Date: Sat, 25 Nov 2023 17:40:28 -0800 Subject: [PATCH] fix stale versionb --- docs/articles/Tutorials.html | 24 +++++++-------- docs/articles/Tutorials_hier.html | 22 +++++++------ .../figure-html/unnamed-chunk-6-1.png | Bin 55284 -> 0 bytes docs/articles/technical_details.html | 29 +++++++++--------- docs/pkgdown.yml | 2 +- vignettes/Tutorials.Rmd | 6 ++-- vignettes/technical_details.Rmd | 2 +- 7 files changed, 43 insertions(+), 42 deletions(-) delete mode 100644 docs/articles/Tutorials_hier_files/figure-html/unnamed-chunk-6-1.png diff --git a/docs/articles/Tutorials.html b/docs/articles/Tutorials.html index e54b419..46c3929 100644 --- a/docs/articles/Tutorials.html +++ b/docs/articles/Tutorials.html @@ -83,7 +83,7 @@

Tutorials for k-means clustering inference

 library(CADET)
 library(ggplot2)
-

We first generate data according to \(\mathbf{X} \sim {MN}_{n\times q}(\boldsymbol{\mu}, +

We first generate data according to \(\mathbf{X} \sim MN_{n\times q}(\boldsymbol{\mu}, \textbf{I}_n, \sigma^2 \textbf{I}_q)\) with \(n=150,q=2,\sigma=1,\) and \[\begin{align} \label{eq:power_model} \boldsymbol{\mu}_1 =\ldots = \boldsymbol{\mu}_{50} = \begin{bmatrix} @@ -95,9 +95,9 @@

Tutorials for k-means clustering inference

\boldsymbol{\mu}_{101}=\ldots = \boldsymbol{\mu}_{150} = \begin{bmatrix} \delta/2 \\ 0_{q-1} \end{bmatrix}. -\end{align}\] Here, we can think of \({C}_1 = \{1,\ldots,50\},{C}_2 = -\{51,\ldots,100\},{C}_3 = \{101,\ldots,150\}\) as the “true -clusters”. In the figure below, we display one such simulation \(\mathbf{x}\in\mathbb{R}^{100\times 2}\) +\end{align}\] Here, we can think of \(C_1 = \{1,\ldots,50\},C_2 = \{51,\ldots,100\},C_3 += \{101,\ldots,150\}\) as the “true clusters”. In the figure +below, we display one such simulation \(\mathbf{x}\in\mathbb{R}^{100\times 2}\) with \(\delta=10\).

 set.seed(2022)
@@ -187,9 +187,8 @@ 

Inference #> cluster_1 cluster_2 test_stat p_selective p_naive #> 1 2 3 4.464756 8.514513e-29 2.171388e-110

In the summary, we have the empirical difference in means of the -second feature between the two clusters, i.e.,\(\sum_{i\in -{\hat{{G}}}}\mathbf{x}_{i,2}/|\hat{{G}}| - \sum_{i\in -\hat{G}'}\mathbf{x}_{i,2}/|\hat{G}'|\) +second feature between the two clusters, i.e.,\(\sum_{i\in \hat{G}}\mathbf{x}_{i,2}/|\hat{{G}}| - +\sum_{i\in \hat{G}'}\mathbf{x}_{i,2}/|\hat{G}'|\) (test_stats), the naive p-value based on a z-test (p_naive), and the selective \(p\)-value (p_selective). In this case, the test based on \(p_{\text{selective}}\) can reject this null @@ -221,13 +220,12 @@

Inferen #> 2 0 0 50 0 #> 3 25 0 0 25

By inspection, we see that the blue clusters (labeled as cluster 1) -and the grey clusters (labeled as cluster 4) have the same mean. Now -\(p_{\text{selective}}\) yields a much +and the grey clusters (labeled as cluster 4) have the same mean. Now the +selective \(p\)-value yields a much more moderate \(p\)-value, and the test -based on \(p_{2,\text{selective}}\) -cannot reject the null hypothesis when it holds. By contrast, the naive -\(p\)-value is tiny and leads to an -anti-conservative test.

+based on it cannot reject the null hypothesis when it holds. By +contrast, the naive \(p\)-value is tiny +and leads to an anti-conservative test.

 cluster_1 <- 1
 cluster_2 <- 4
diff --git a/docs/articles/Tutorials_hier.html b/docs/articles/Tutorials_hier.html
index 59677d3..4ac46b2 100644
--- a/docs/articles/Tutorials_hier.html
+++ b/docs/articles/Tutorials_hier.html
@@ -156,10 +156,10 @@ 

Infer
 cluster_1 <- 1
 cluster_2 <- 3
-cl_1_2_inference_demo <- test_hier_clusters_exact_1f(X=X, link="average", hcl=hcl, K=3, k1=1, k2=2, feat=1)
-summary(cl_1_2_inference_demo)
+cl_inference_demo <- test_hier_clusters_exact_1f(X=X, link="average", hcl=hcl, K=3, k1=cluster_1, k2=cluster_2, feat=1)
+summary(cl_inference_demo)
 #>   cluster_1 cluster_2 test_stat  p_selective      p_naive
-#> 1         1         2  4.464756 8.870985e-08 1.774197e-07
+#> 1 1 3 9.910708 2.868783e-26 4.596766e-31

In the summary, we have the empirical difference in means of the first feature between the two clusters, i.e.,\(\sum_{i\in {\hat{{G}}}}\mathbf{x}_{i,2}/|\hat{{G}}| - \sum_{i\in @@ -179,15 +179,17 @@

\(p_{2,\text{selective}}\) -yields a much more moderate \(p\)-value, and the test based on \(p_{2,\text{selective}}\) cannot reject the -null hypothesis when it holds. By contrast, the naive \(p\)-value is tiny and leads to an -anti-conservative test.

+

Now the selective \(p\)-value yields +a much more moderate \(p\)-value, and +the test based on it cannot reject the null hypothesis when it holds. By +contrast, the naive \(p\)-value is tiny +and leads to an anti-conservative test.

 cluster_1 <- 1
-cluster_2 <- 4
-cl_1_2_inference_demo <-  test_hier_clusters_exact_1f(X=X, link="average", hcl=hcl, K=3, k1=1, k2=3, feat=2)
-summary(cl_1_2_inference_demo)
+cluster_2 <- 3
+cl_inference_demo <-  test_hier_clusters_exact_1f(X=X, link="average",
+                                                      hcl=hcl, K=3, k1=cluster_1, k2=cluster_2, feat=2)
+summary(cl_inference_demo)
 #>   cluster_1 cluster_2  test_stat p_selective   p_naive
 #> 1         1         3 -0.1766818   0.8362984 0.8362984
diff --git a/docs/articles/Tutorials_hier_files/figure-html/unnamed-chunk-6-1.png b/docs/articles/Tutorials_hier_files/figure-html/unnamed-chunk-6-1.png deleted file mode 100644 index e8a089a506702bddc680f08a5bc5d38b9a4fb28a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55284 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
    Pgh7LrH=U$(5=_4(z`5}2aS$K}tf>g9# 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 G@c#g@PTechnical details

-Figure 1: We simulated one dataset according to \({MN}_{100\times 10}(\mu, \textbf{I}_{100}, +Figure 1: We simulated one dataset according to \(MN_{100\times 10}(\mu, \textbf{I}_{100}, \Sigma)\), where \(\mu_i = (1,0_9)^T\) for \(i=1,\ldots, 50\) and \(\mu_i = (0_9,1)^T\) @@ -160,8 +160,8 @@

\(p_{j, \text{selective}}\), we have -conditioned on (i) the estimated clusters \(\mathcal{C}(x)\) to account for the -data-driven nature of the null hypothesis; and (ii) \(U(x)\) to eliminate the unknown nuisance +conditioned on (i) the estimated clusters \({C}(x)\) to account for the data-driven +nature of the null hypothesis; and (ii) \(U(x)\) to eliminate the unknown nuisance parameters under the null.

We show that this \(p\)-value for testing \(\hat{H}_{0j}\) can be written @@ -169,21 +169,22 @@

\(\mathbb{F}(t; -\mu, \sigma, \mathcal{S})\) denotes the cumulative distribution -function (CDF) of a \(N(\mu, -\sigma^2)\) random variable truncated to the set \(\mathcal{S}\), \(x'(\phi,j) = x + (\phi - ( \bar{x}_{\hat{G}j} -- \bar{x}_{\hat{G'}j})) \left ( \frac{ \hat{\nu} }{ -\|\hat{\nu}\|_2^2 } \right ) \left ( \frac{\Sigma_j}{\Sigma_{jj}} \right -)^T,\) and {\[\begin{equation} +\mu, \sigma, {S})\) denotes the cumulative distribution function +(CDF) of a \(N(\mu, \sigma^2)\) random +variable truncated to the set \({S}\), +\(x'(\phi,j) = x + (\phi - ( +\bar{x}_{\hat{G}j} - \bar{x}_{\hat{G'}j})) \left ( \frac{ \hat{\nu} +}{ \|\hat{\nu}\|_2^2 } \right ) \left ( \frac{\Sigma_j}{\Sigma_{jj}} +\right )^T,\) and \[\begin{equation} \hat S_j = -\left \{ \phi \in \mathbb{R}: C(x) = -\mathcal{C}\left(x'(\phi,j)\right ) \right \}. \label{eq:defS} -\end{equation}\] }.

+\left \{ \phi \in \mathbb{R}: C(x) = {C}\left(x'(\phi,j)\right ) +\right \}. \label{eq:defS} +\end{equation}\].

While the notation in the last paragraph might seem daunting, the intuition is simple: since \(p_{j, \text{selective}}\) can be rewritten into sums of CDFs of diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 7ba3443..dc3b4ec 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -5,7 +5,7 @@ articles: Tutorials: Tutorials.html Tutorials_hier: Tutorials_hier.html technical_details: technical_details.html -last_built: 2023-11-26T01:22Z +last_built: 2023-11-26T01:39Z urls: reference: https://yiqunchen.github.io/CADET/reference article: https://yiqunchen.github.io/CADET/articles diff --git a/vignettes/Tutorials.Rmd b/vignettes/Tutorials.Rmd index 273aaca..52b9c6c 100644 --- a/vignettes/Tutorials.Rmd +++ b/vignettes/Tutorials.Rmd @@ -23,7 +23,7 @@ library(CADET) library(ggplot2) ``` -We first generate data according to $\mathbf{X} \sim {MN}_{n\times q}(\boldsymbol{\mu}, \textbf{I}_n, \sigma^2 \textbf{I}_q)$ with $n=150,q=2,\sigma=1,$ and +We first generate data according to $\mathbf{X} \sim MN_{n\times q}(\boldsymbol{\mu}, \textbf{I}_n, \sigma^2 \textbf{I}_q)$ with $n=150,q=2,\sigma=1,$ and \begin{align} \label{eq:power_model} \boldsymbol{\mu}_1 =\ldots = \boldsymbol{\mu}_{50} = \begin{bmatrix} @@ -35,7 +35,7 @@ We first generate data according to $\mathbf{X} \sim {MN}_{n\times q}(\boldsymbo \delta/2 \\ 0_{q-1} \end{bmatrix}. \end{align} -Here, we can think of ${C}_1 = \{1,\ldots,50\},{C}_2 = \{51,\ldots,100\},{C}_3 = \{101,\ldots,150\}$ as the "true clusters". +Here, we can think of $C_1 = \{1,\ldots,50\},C_2 = \{51,\ldots,100\},C_3 = \{101,\ldots,150\}$ as the "true clusters". In the figure below, we display one such simulation $\mathbf{x}\in\mathbb{R}^{100\times 2}$ with $\delta=10$. ```{r fig.align="center", fig.height = 5, fig.width = 5} @@ -98,7 +98,7 @@ cl_inference_demo <- kmeans_inference_1f(X, k=3, cluster_1, cluster_2, summary(cl_inference_demo) ``` -In the summary, we have the empirical difference in means of the second feature between the two clusters, i.e.,$\sum_{i\in {\hat{{G}}}}\mathbf{x}_{i,2}/|\hat{{G}}| - \sum_{i\in \hat{G}'}\mathbf{x}_{i,2}/|\hat{G}'|$ (`test_stats`), the naive p-value based on a z-test (`p_naive`), and the selective $p$-value (`p_selective`). In this case, the test based on $p_{\text{selective}}$ can reject this null hypothesis that the blue and pink clusters have the same mean in the first feature ($p_{2,\text{selective}}<0.001$). +In the summary, we have the empirical difference in means of the second feature between the two clusters, i.e.,$\sum_{i\in \hat{G}}\mathbf{x}_{i,2}/|\hat{{G}}| - \sum_{i\in \hat{G}'}\mathbf{x}_{i,2}/|\hat{G}'|$ (`test_stats`), the naive p-value based on a z-test (`p_naive`), and the selective $p$-value (`p_selective`). In this case, the test based on $p_{\text{selective}}$ can reject this null hypothesis that the blue and pink clusters have the same mean in the first feature ($p_{2,\text{selective}}<0.001$). ### Inference for k-means clustering when the null hypothesis holds diff --git a/vignettes/technical_details.Rmd b/vignettes/technical_details.Rmd index c73ae4d..cf1a0dd 100644 --- a/vignettes/technical_details.Rmd +++ b/vignettes/technical_details.Rmd @@ -19,7 +19,7 @@ knitr::opts_chunk$set(

![](../man/figures/fig_1.png){width=90%} -
Figure 1: We simulated one dataset according to ${MN}_{100\times 10}(\mu, \textbf{I}_{100}, \Sigma)$, where $\mu_i = (1,0_9)^T$ for $i=1,\ldots, 50$ and $\mu_i = (0_9,1)^T$ for $i=51,\ldots, 100$, and $\Sigma_{ij} = 1\{i=j\}+0.4\cdot 1\{i\neq j\}$. *(a)*: Empirical distribution of feature 2 based on the simulated data set. In this case, all observations have the same mean for feature 2. *(b)*: We apply k-means clustering to obtain two clusters and plot the empirical distribution of feature 2 stratified by the clusters. *(c)*: Quantile-quantile plot of naive z-test (black) our proposed p-values (orange) applied to the simulated data sets for testing the null hypotheses for a difference in means for features 2--8.
+
Figure 1: We simulated one dataset according to $MN_{100\times 10}(\mu, \textbf{I}_{100}, \Sigma)$, where $\mu_i = (1,0_9)^T$ for $i=1,\ldots, 50$ and $\mu_i = (0_9,1)^T$ for $i=51,\ldots, 100$, and $\Sigma_{ij} = 1\{i=j\}+0.4\cdot 1\{i\neq j\}$. *(a)*: Empirical distribution of feature 2 based on the simulated data set. In this case, all observations have the same mean for feature 2. *(b)*: We apply k-means clustering to obtain two clusters and plot the empirical distribution of feature 2 stratified by the clusters. *(c)*: Quantile-quantile plot of naive z-test (black) our proposed p-values (orange) applied to the simulated data sets for testing the null hypotheses for a difference in means for features 2--8.