View source: R/Analyze.Multinomial.R
| Analyze.Multinomial | R Documentation |
The function Analyze.Multinomial is used for either continuous or group sequential analysis, or for a combination of the two. Analyze.Multinomial is run at each look at the data. Before running it by the first time, it is necessary to run the AnalyzeSetUp.Multinomial function.
Analyze.Multinomial(name,test,cases,controls,N_exposures,N_controls,
exposure_group,strata_group_cases="n",strata_group_controls="n",
AlphaSpend="n")
name |
The name of the sequential analysis. Must be identical for all looks at the data, and it must be the same as the name given by the |
test |
An integer indicating the number of hypothesis tests performed up to and including the current test. For example, if there were four prior looks at the data, and this is the fifth one, then "test=5". This number should be increased by one each time that the |
cases |
A vector with the number of events per combination of exposure_group and strata_group_cases. There is no default. |
controls |
A vector with the number of events per per strata_group_controls. There is no default. |
N_exposures |
A vector with the number of individuals in the same risk window per combination of exposure_group and strata_group_cases excluding the entry for the control group. Must have the same dimension as cases. |
N_controls |
The number of individuals in the control (unexposed) group per strata_group_controls. There is no default. |
exposure_group |
Labels to indicate the exposure group of each entry in "cases". Each entry in "exposure_group" must belong to the set of labels in "ExposuresNames", and "ExposuresNames" is one of the inputs of the AnalyzeSet.Multinomial function. There is no default. |
strata_group_cases |
Labels to indicate the strata group, e.g., by combining the categorical covariates for age and gender, of each entry in "cases". The default is strata_group_cases="n" to indicate that there are no covariates to adjust for. |
strata_group_controls |
Labels to indicate the strata group, e.g., by combining the categorical covariates for age and gender, of each entry in "controls". The default is strata_group_controls="n" to indicate that there are no covariates to adjust for. |
AlphaSpend |
The alpha spending function is specified in the |
The function Analyze.Multinomial performs continuous or group sequential analysis for multinomial data.
It can also be used for mixed continuous-group sequential
analysis where some data arrives continuously while other data arrives in groups. There is (i) no need to pre-specify the
group sizes before the sequential analysis starts, and (ii) a variety of alpha spending functions are available.
This function runs the adaptive sequential multiple hypotheses testing for seasonal concomitant vaccines safety surveillance introduced by Silva and Maro(2025), which was developed for rapidly detecting increased risks of adverse events from one or more combinations of simultaneous vaccine exposures. As explained by Silva and Maro(2025), multiple seasonal vaccines may be recommended for some strata of the population defined by covariates, such as gender and age, for example. Such vaccines can be administered simultaneously or at least within the same vaccination season. Thus, monitoring adverse events origination from multiple vaccines may be more informative and statistically powerful than monitoring each vaccine separately.
The method is an extension of the binomial MaxSPRT method to a multinomial exposure model. With an exact analytical alpha spending approach, the computationally feasible limit of multiple exposures is likely limited to no more than two vaccines. For more complex situations with several vaccines, which can multiple types of endpoints (i.e. designated adverse events), a valid Monte Carlo decision rule is constructed.
The alpha spending plan is designed in a way to ensure that a target statistical power, gamma, is ensured for detecting a target increased risk, r1, for each multinomial entry. This is possible by means of a new concept introduced by Silva and Maro(2025), the robust alpha spending plan. For more details about the method and the construction of the critical values, see Silva and Maro(2025).
Before running Analyze.Multinomial, it is necessary to specify a planned default alpha spending function,
which is done using the AlphaSpendType parameter in the
AnalyzeSetUp.Multinomial function. As detailed by Silva and Maro(2025), there are two robust alpha spending plan choices, AlphaSpendType=1 or AlphaSpendType=2.
See AnalyzeSetUp.Multinomial for more details.
The function Analyze.Multinomial is meant to perform the multinomial sequential analysis with a certain level
of autonomy. After running a test, the code offers
a synthesis about the general parameter settings, the main conclusions concerning the acceptance or rejection of the null hypothesis, and the historical information
from previous tests. Tables with the main analyses results are automatically printed in the R console. The columns of the tables show historical characteristics,
including the information for the current test. Each line of the tables corresponds to a specific test organized by calendar time.
Observe that, because the multinomial distribution is discrete, the target alpha spending will rarely be reached. The actual alpha spending is then shown to facilitate
a realistic interpretation of the results.
To adjust for covariates confounders, Analyze.Multinomial utilizes the maxLik package (Henningsen et al., 2011) to compute the MLE of the baseline covariates
effects as derived by Silva and Maro(2025).
result |
Table containing the main characteristics, conclusions concerning the acceptance or rejection of the null hypothesis, and the historical information from previous tests. |
Development of the Analyze.Multinomial function was funded by:
- Department of Population Medicine, Harvard Medical School and Harvard Pilgrim Health Care Institute.
- Conselho Nacional de Desenvolvimento Cientifico e Tecnologico (CNPq), Brazil, and Fundacao de Amparo a Pesquisa do Estado de Minas Gerais (FAPEMIG), Brazil.
AnalyzeSetUp.Binomial: for setting up sequential analysis with the Analyze.Binomial function, before the first look at the data.
SampleSize.Binomial: for calculating the needed sample size to achieve the desired statistical power for continuous sequential analysis with binomial data.
Ivair Ramos Silva, Judith Maro.
Silva IR, Maro J. (2025), Adaptive Sequential Multiple Hypotheses Testing for Seasonal Concomitant Vaccines Safety Surveillance. Working paper, Department of Population Medicine, Harvard Medical School and Harvard Pilgrim Health Care Institute.
Henningsen A, Toomet O (2011), maxLik: A package for maximum likelihood estimation in R. Computational Statistics, 26(3), 443–458.
### Example. Two chunks of data.
### Firstly, it is necessary to set up the input parameters.
## Note: cut off the "#" symbol before running the four lines below.
# AnalyzeSetUp.Multinomial(name="VaccinesABC",N=200,alpha=0.05,R0=1,rho=1,
# m=10000, title="Title of the output table",
# ExposuresNames=c("A","B","C","AB","AC","BC","ABC"),
# address="C:/Users")
### Running sequential tests for two chunks of data.
# -------------------------------------------------------------------------
## Test 1: in this first test, events were observed for each of
# the exposures "A","B","C","AB","AC","BC","ABC", and
# two binary covariates are present to adjust for gender
# and age with categories "F-Y", "F-O", "M-Y", "M-O".
# Note: cut off the "#" symbol before running the lines below.
#res1<- Analyze.Multinomial(name="VaccinesABC", test=1,
#cases= c(2,1,0,1,0,1,0,
# 1,2,0,1,0,1,1,
# 3,3,1,1,0,0,1,
# 2,0,1,1,1,0,0),
#controls= c(3,3,3,3),
#N_exposures= c(1000,1500,300,300,320,280,240,
# 1000,1500,300,300,320,280,240,
# 1000,1500,300,300,320,280,240,
# 1000,1500,300,300,320,280,240),
#N_controls= c(500,500,500,500),
#exposure_group= c("A","B","C","AB","AC","BC","ABC",
# "A","B","C","AB","AC","BC","ABC",
# "A","B","C","AB","AC","BC","ABC",
# "A","B","C","AB","AC","BC","ABC"),
#strata_group_cases= c("F-Y","F-Y","F-Y","F-Y","F-Y","F-Y","F-Y",
# "F-O","F-O","F-O","F-O","F-O","F-O","F-O",
# "M-Y","M-Y","M-Y","M-Y","M-Y","M-Y","M-Y",
# "M-O","M-O","M-O","M-O","M-O","M-O","M-O"),
#strata_group_controls= c("F-Y","F-O","M-Y","M-O"),
#AlphaSpend= "n" )
## Test 2: in this second test, events were observed for each of
# the exposures "A","B","C","AB","AC","BC","ABC", but
# there are no covariates to adjust for.
# Note: cut off the "#" symbol before running the lines below.
#res2<- Analyze.Multinomial(name="VaccinesABC", test=2,
#cases= c(7,7,3,5,2,3,0),
#controls= 2,
#N_exposures= c(1200,1600,400,250,300,300,280),
#N_controls= 600,
#exposure_group= c("A","B","C","AB","AC","BC","ABC"),
#strata_group_cases= "n",
#strata_group_controls= "n",
#AlphaSpend= "n"
# )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.