Skip to content

Commit

Permalink
Edit base comments 20240826
Browse files Browse the repository at this point in the history
  • Loading branch information
guangguangzai committed Aug 26, 2024
2 parents b15eda0 + a16939a commit 513708b
Showing 1 changed file with 41 additions and 19 deletions.
60 changes: 41 additions & 19 deletions vignettes/wpgsd_corr_example.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ $$Corr(Z_{ik},Z_{i'k'})=\frac{n_{i \wedge i',k \wedge k'}}{\sqrt{n_{ik}*n_{i'k'}

## Examples

In a 2-arm controlled clinical trial example with one primary endpoint (@anderson2022unified), there are 3 patient populations defined by the status of two biomarkers A and B :
We borrow an example from a paper by Anderson et al. (@anderson2022unified), demonstrated in Section 2 - Motivating Examples, we use Example 1 as the basis here. The setting will be:

In a two-arm controlled clinical trial with one primary endpoint, there are three patient populations defined by the status of two biomarkers, A and B:

* Biomarker A positive, the population 1,
* Biomarker B positive, the population 2,
Expand All @@ -41,8 +43,8 @@ library(gt)
```{r}
event_tb <- tribble(
~Population, ~"Number of Event in IA", ~"Number of Event in FA",
"Population 1", 100,200,
"Population 2", 110,220,
"Population 1", 100, 200,
"Population 2", 110, 220,
"Overlap of Population 1 and 2", 80, 160,
"Overall Population", 225, 450
)
Expand All @@ -51,7 +53,7 @@ event_tb %>%
tab_header(title = "Number of events at each population")
```

### Example 1 - Correlation of different populations within the same analysis
### Correlation of different populations within the same analysis
Let's consider a simple situation, we want to compare the population 1 and population 2 in only interim analyses. Then $k=1$, and to compare $H_{1}$ and $H_{2}$, the $i$ will be $i=1$ and $i=2$.
The correlation matrix will be
$$Corr(Z_{11},Z_{21})=\frac{n_{1 \wedge 2,1 \wedge 1}}{\sqrt{n_{11}*n_{21}}}$$
Expand All @@ -60,7 +62,7 @@ The number of events are listed as
event_tbl <- tribble(
~Population, ~"Number of Event in IA",
"Population 1", 100,
"Population 2", 110,
"Population 2", 110,
"Overlap in population 1 and 2", 80
)
event_tbl %>%
Expand All @@ -70,19 +72,19 @@ event_tbl %>%
The the corrleation could be simply calculated as
$$Corr(Z_{11},Z_{21})=\frac{80}{\sqrt{100*110}}=0.76$$
```{r}
Corr1=80/sqrt(100*110)
round(Corr1,2)
Corr1 <- 80 / sqrt(100 * 110)
round(Corr1, 2)
```

### Example 2 - Correlation of different analyses within the same population
### Correlation of different analyses within the same population
Let's consider another simple situation, we want to compare single population, for example, the population 1, but in different analyses, interim and final analyses. Then $i=1$, and to compare IA and FA, the $k$ will be $k=1$ and $k=2$.
The correlation matrix will be
$$Corr(Z_{11},Z_{12})=\frac{n_{1 \wedge 1,1 \wedge 2}}{\sqrt{n_{11}*n_{12}}}$$
The number of events are listed as
```{r}
event_tb2 <- tribble(
~Population, ~"Number of Event in IA", ~"Number of Event in FA",
"Population 1", 100,200
"Population 1", 100, 200
)
event_tb2 %>%
gt() %>%
Expand All @@ -92,34 +94,36 @@ The the corrleation could be simply calculated as
$$Corr(Z_{11},Z_{12})=\frac{100}{\sqrt{100*200}}=0.71$$
The 100 in the numerator is the overlap number of events of interim analysis and final analysis in population 1.
```{r}
Corr1=100/sqrt(100*200)
round(Corr1,2)
Corr1 <- 100 / sqrt(100 * 200)
round(Corr1, 2)
```
### Example 3 - Correlation of different analyses and different population

### Correlation of different analyses and different population
Let's consider the situation that we want to compare population 1 in interim analyses and population 2 in final analyses. Then for different population, $i=1$ and $i=2$, and to compare IA and FA, the $k$ will be $k=1$ and $k=2$.
The correlation matrix will be
$$Corr(Z_{11},Z_{22})=\frac{n_{1 \wedge 1,2 \wedge 2}}{\sqrt{n_{11}*n_{22}}}$$
The number of events are listed as
```{r}
event_tb3 <- tribble(
~Population, ~"Number of Event in IA", ~"Number of Event in FA",
"Population 1", 100,200,
"Population 1", 100, 200,
"Population 2", 110, 220,
"Overlap in population 1 and 2", 80,160
"Overlap in population 1 and 2", 80, 160
)
event_tb3 %>%
gt() %>%
tab_header(title = "Number of events at each population & analyses in example 3")
```

The correlation could be simply calculated as
$$Corr(Z_{11},Z_{22})=\frac{80}{\sqrt{100*220}}=0.54$$
The 80 in the numerator is the overlap number of events of population 1 in interim analysis and population 2 in final analysis.
```{r}
Corr1=80/sqrt(100*220)
round(Corr1,2)
Corr1 <- 80 / sqrt(100 * 220)
round(Corr1, 2)
```
Now we know how to calculate the correlation values under different situations, and the generate_corr() function was built based on this logic. We can directly calculate the results for each cross situation via the function.

Now we know how to calculate the correlation values under different situations, and the $generate$_$corr()$ function was built based on this logic. We can directly calculate the results for each cross situation via the function.

First, we need a event table including the information of the study.

Expand All @@ -141,6 +145,23 @@ event <- tibble::tribble(
1, 3, 2, 200,
2, 3, 2, 220
)
# The event table
event <- tibble::tribble(
~H1, ~H2, ~Analysis, ~Event,
1, 1, 1, 100,
2, 2, 1, 110,
3, 3, 1, 225,
1, 2, 1, 80,
1, 3, 1, 100,
2, 3, 1, 110,
1, 1, 2, 200,
2, 2, 2, 220,
3, 3, 2, 450,
1, 2, 2, 160,
1, 3, 2, 200,
2, 3, 2, 220
)
event %>%
gt() %>%
tab_header(title = "Number of events at each population & analyses")
Expand All @@ -155,4 +176,5 @@ For example: H1=1, H2=1, Analysis=1, Event=100 indicates that in the first popul

Another example: H1=1, H2=2, Analysis=2, Event=160 indicates that the number of overlapping cases where the experimental treatment is superior to the control in population 1 and 2 in the final analysis is 160.

*To be noticed, the column names in this function are fixed to be 'H1, H2, Analysis, Event'.
*To be noticed, the column names in this function are fixed to be 'H1, H2, Analysis, Event'.

0 comments on commit 513708b

Please sign in to comment.