Title: | Algorithm Driven Statistical Analysis for Researchers without Coding Skills |
---|---|
Description: | Support functions for R-based 'EQUAL-STATS' software which automatically classifies the data and performs appropriate statistical tests. 'EQUAL-STATS' software is a shiny application with an user-friendly interface to perform complex statistical analysis. Gurusamy,K (2024)<doi:10.5281/zenodo.13354162>. |
Authors: | Kurinchi Gurusamy [aut, cre] |
Maintainer: | Kurinchi Gurusamy <[email protected]> |
License: | GPL (>= 3) |
Version: | 0.5.0 |
Built: | 2024-10-24 06:32:13 UTC |
Source: | CRAN |
Obtains the questions related to a particular selection and converts them to shiny commands so that the user interface is created.
compile_questions(Predefined_lists, rv)
compile_questions(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
UI_Initial_texts |
User interface initial texts |
UI_Update_texts |
User interface updated texts |
submit_button_appear_text |
When the submit button should appear in the user interface |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
# Simulate lists provided by EQUAL-STATS #### entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots' ), menu_short = c( 'Summary_Measures', 'Create_Plots' ), second_menu_choices = c( '', 'EQUAL-STATS choice%__%Histogram' ), label_1 = c( 'Select the variable for which summary measures are required', 'Select the variable%__%Select the variable' ), label_2 = c( 'Select the variable for which you want separate summary (optional)', 'NULL%__%NULL' ), label_3 = c( 'Select the summary measures that you want in the report', 'Enter the title for the plot%__%Enter the title for the plot' ), label_4 = c( '', 'Select the variable%__%Select the variable' ), label_5 = c( '', '' ), label_6 = c( '', '' ), label_7 = c( '', '' ), label_8 = c( '', '' ), label_9 = c( '', '' ), label_10 = c( '', '' ), label_11 = c( '', '' ), label_12 = c( '', '' ), label_13 = c( '', '' ), label_14 = c( '', '' ), label_15 = c( '', '' ), entry_1 = c( '%_%selectInput%_%rv$import_data$any_type', '%_%selectInput%_%rv$import_data$any_type' ), entry_2 = c( '%_%selectInput%_%c("",setdiff(rv$import_data$categorical, rv$entry[[1]]))', 'NULL%__%NULL' ), entry_3 = c( '%_%checkbox%_%rv$summary_measures_choices', '%_%text%_%"Plot title"%__%%_%text%_%"Plot title"' ), entry_4 = c( '', '%_%selectInput%_%rv$entry[[1]]%__%%_%selectInput%_%rv$entry[[1]]' ), entry_5 = c( '', '' ), entry_6 = c( '', '' ), entry_7 = c( '', '' ), entry_8 = c( '', '' ), entry_9 = c( '', '' ), entry_10 = c( '', '' ), entry_11 = c( '', '' ), entry_12 = c( '', '' ), entry_13 = c( '', '' ), entry_14 = c( '', '' ), entry_15 = c( '', '' ), mandatory_1 = c( 'yes', 'yes%__%yes' ), mandatory_2 = c( 'no', 'NULL%__%NULL' ), mandatory_3 = c( 'yes', 'no%__%no' ), mandatory_4 = c( '', 'no%__%no' ), mandatory_5 = c( '', '' ), mandatory_6 = c( '', '' ), mandatory_7 = c( '', '' ), mandatory_8 = c( '', '' ), mandatory_9 = c( '', '' ), mandatory_10 = c( '', '' ), mandatory_11 = c( '', '' ), mandatory_12 = c( '', '' ), mandatory_13 = c( '', '' ), mandatory_14 = c( '', '' ), mandatory_15 = c( '', '' ), numeric_exemptions = c( '', '' ) ) rv <- list( StorageFolder = tempdir(), first_menu_choice = "Create_Plots", second_menu_choice = "EQUAL-STATS choice", entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Functions and packages required to run library(stringr) # Final function #### UI_texts <- compile_questions(Predefined_lists = Predefined_lists, rv = rv)
# Simulate lists provided by EQUAL-STATS #### entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots' ), menu_short = c( 'Summary_Measures', 'Create_Plots' ), second_menu_choices = c( '', 'EQUAL-STATS choice%__%Histogram' ), label_1 = c( 'Select the variable for which summary measures are required', 'Select the variable%__%Select the variable' ), label_2 = c( 'Select the variable for which you want separate summary (optional)', 'NULL%__%NULL' ), label_3 = c( 'Select the summary measures that you want in the report', 'Enter the title for the plot%__%Enter the title for the plot' ), label_4 = c( '', 'Select the variable%__%Select the variable' ), label_5 = c( '', '' ), label_6 = c( '', '' ), label_7 = c( '', '' ), label_8 = c( '', '' ), label_9 = c( '', '' ), label_10 = c( '', '' ), label_11 = c( '', '' ), label_12 = c( '', '' ), label_13 = c( '', '' ), label_14 = c( '', '' ), label_15 = c( '', '' ), entry_1 = c( '%_%selectInput%_%rv$import_data$any_type', '%_%selectInput%_%rv$import_data$any_type' ), entry_2 = c( '%_%selectInput%_%c("",setdiff(rv$import_data$categorical, rv$entry[[1]]))', 'NULL%__%NULL' ), entry_3 = c( '%_%checkbox%_%rv$summary_measures_choices', '%_%text%_%"Plot title"%__%%_%text%_%"Plot title"' ), entry_4 = c( '', '%_%selectInput%_%rv$entry[[1]]%__%%_%selectInput%_%rv$entry[[1]]' ), entry_5 = c( '', '' ), entry_6 = c( '', '' ), entry_7 = c( '', '' ), entry_8 = c( '', '' ), entry_9 = c( '', '' ), entry_10 = c( '', '' ), entry_11 = c( '', '' ), entry_12 = c( '', '' ), entry_13 = c( '', '' ), entry_14 = c( '', '' ), entry_15 = c( '', '' ), mandatory_1 = c( 'yes', 'yes%__%yes' ), mandatory_2 = c( 'no', 'NULL%__%NULL' ), mandatory_3 = c( 'yes', 'no%__%no' ), mandatory_4 = c( '', 'no%__%no' ), mandatory_5 = c( '', '' ), mandatory_6 = c( '', '' ), mandatory_7 = c( '', '' ), mandatory_8 = c( '', '' ), mandatory_9 = c( '', '' ), mandatory_10 = c( '', '' ), mandatory_11 = c( '', '' ), mandatory_12 = c( '', '' ), mandatory_13 = c( '', '' ), mandatory_14 = c( '', '' ), mandatory_15 = c( '', '' ), numeric_exemptions = c( '', '' ) ) rv <- list( StorageFolder = tempdir(), first_menu_choice = "Create_Plots", second_menu_choice = "EQUAL-STATS choice", entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Functions and packages required to run library(stringr) # Final function #### UI_texts <- compile_questions(Predefined_lists = Predefined_lists, rv = rv)
Obtains the compiled questions related to a particular selection and converts each of these questions them to shiny commands so that user interface is created.
convert_to_user_interface(UI_name, label, entry_text, rv)
convert_to_user_interface(UI_name, label, entry_text, rv)
UI_name |
Text provided by the |
label |
Text provided by the |
entry_text |
Text provided by the |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
output_1 |
User interface initial text |
output_2 |
User interface updated text |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
# Simulate lists provided by EQUAL-STATS #### entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') UI_name <- "entry_1_UI" label = "Select the variable for which summary measures are required" entry_text = "%_%selectInput%_%rv$import_data$any_type" rv <- list( StorageFolder = tempdir(), first_menu_choice = "Summary_Measures", second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Packages required to run library(stringr) # Final function #### UI_texts <- convert_to_user_interface(UI_name = UI_name, label = label, entry_text = entry_text, rv = rv)
# Simulate lists provided by EQUAL-STATS #### entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') UI_name <- "entry_1_UI" label = "Select the variable for which summary measures are required" entry_text = "%_%selectInput%_%rv$import_data$any_type" rv <- list( StorageFolder = tempdir(), first_menu_choice = "Summary_Measures", second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Packages required to run library(stringr) # Final function #### UI_texts <- convert_to_user_interface(UI_name = UI_name, label = label, entry_text = entry_text, rv = rv)
Uses the functions from stats and reports the results of Shapiro-Wilk test for normality along with Kolmogrov Smirnov tests for multiple distribution types. It uses ggplot2 to create plots and cowplot to combine multiple plots.
function.Check_Distribution(Predefined_lists, rv)
function.Check_Distribution(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
stats::shapiro.test()
stats::ks.test()
ggplot2::ggplot()
cowplot::plot_grid()
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(ggplot2) library(cowplot) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Check_Distribution" rv$second_menu_choice <- NA rv$entry[[1]] <- "Mobility score at 6 months" # Final function #### Results <- function.Check_Distribution(Predefined_lists, rv)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(ggplot2) library(cowplot) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Check_Distribution" rv$second_menu_choice <- NA rv$entry[[1]] <- "Mobility score at 6 months" # Final function #### Results <- function.Check_Distribution(Predefined_lists, rv)
Calculates the skewness and kurtosis and results of Shapiro-Wilk test and Kolmogrov-Smirnov tests using DescTools and stats to determine normality. It uses the the appropriate tests from stats to compare groups.It uses ggplot2 to create plots and cowplot to combine multiple plots.
function.Compare_Groups(Predefined_lists, rv)
function.Compare_Groups(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
stats::shapiro.test()
stats::ks.test()
DescTools::Kurt()
DescTools::Skew()
stats::fisher.test()
stats::prop.trend.test()
stats::chisq.test()
stats::t.test()
stats::aov()
stats::wilcox.test()
stats::kruskal.test()
boot::boot()
ggplot2::ggplot()
cowplot::plot_grid()
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) library(ggplot2) library(cowplot) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Compare_Groups" rv$second_menu_choice <- "EQUAL-STATS choice" rv$entry[[1]] <- "Unable to walk independently at 6 weeks" rv$entry[[2]] <- "Treatment" rv$entry[[3]] <- "0.05" # Final function #### Results <- function.Compare_Groups(Predefined_lists, rv)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) library(ggplot2) library(cowplot) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Compare_Groups" rv$second_menu_choice <- "EQUAL-STATS choice" rv$entry[[1]] <- "Unable to walk independently at 6 weeks" rv$entry[[2]] <- "Treatment" rv$entry[[3]] <- "0.05" # Final function #### Results <- function.Compare_Groups(Predefined_lists, rv)
Uses the appropriate tests from stats to compare the sample mean with the population mean.
function.Compare_Sample_Pop_Means(Predefined_lists, rv)
function.Compare_Sample_Pop_Means(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
stats::t.test()
stats::binom.test()
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Compare_Sample_Pop_Means" rv$second_menu_choice <- "Categorical variable" rv$entry[[1]] <- "Obesity status" rv$entry[[2]] <- 0.4 # Final function #### Results <- function.Compare_Sample_Pop_Means(Predefined_lists, rv)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Compare_Sample_Pop_Means" rv$second_menu_choice <- "Categorical variable" rv$entry[[1]] <- "Obesity status" rv$entry[[2]] <- 0.4 # Final function #### Results <- function.Compare_Sample_Pop_Means(Predefined_lists, rv)
Calculates the correlation between two quantitative variables using stats. It uses ggcorrplot to provide a visual representation of the correlation.
function.Correlation(Predefined_lists, rv)
function.Correlation(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
stats::shapiro.test()
stats::ks.test()
DescTools::Kurt()
DescTools::Skew()
stats::cor()
ggcorrplot::ggcorrplot()
data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) library(ggcorrplot) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Correlation" rv$second_menu_choice <- "EQUAL-STATS choice" rv$entry[[1]] <- "Mobility score at 6 months" rv$entry[[2]] <- "Mobility score at 12 months" # Final function #### Results <- function.Correlation(Predefined_lists, rv)
data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) library(ggcorrplot) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Correlation" rv$second_menu_choice <- "EQUAL-STATS choice" rv$entry[[1]] <- "Mobility score at 6 months" rv$entry[[2]] <- "Mobility score at 12 months" # Final function #### Results <- function.Correlation(Predefined_lists, rv)
Uses ggplot2 to create various plots.
function.Create_Plots(Predefined_lists, rv)
function.Create_Plots(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
ggplot2::ggplot()
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(ggplot2) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Create_Plots" rv$second_menu_choice <- "EQUAL-STATS choice" rv$entry[[1]] <- "Mobility score at 6 months" rv$entry[[2]] <- "" rv$entry[[3]] <- "" rv$entry[[4]] <- "" # Final function #### Results <- function.Create_Plots(Predefined_lists, rv)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(ggplot2) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Create_Plots" rv$second_menu_choice <- "EQUAL-STATS choice" rv$entry[[1]] <- "Mobility score at 6 months" rv$entry[[2]] <- "" rv$entry[[3]] <- "" rv$entry[[4]] <- "" # Final function #### Results <- function.Create_Plots(Predefined_lists, rv)
Uses ThresholdROC and pROC to calculate the diagnostic accuracy of a test using a reference standard. This function is used when primary data is available. Use function.Diagnostic_Accuracy_Tables()
when the data is provided as a 2 x 2 contigency table.
function.Diagnostic_Accuracy_Primary(Predefined_lists, rv)
function.Diagnostic_Accuracy_Primary(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
function.Diagnostic_Accuracy_Tables
pROC::roc()
pROC::ggroc()
ThresholdROC::diagnostic()
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(pROC) library(ThresholdROC) library(ggplot2) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Diagnostic_Accuracy_Primary" rv$second_menu_choice <- NA rv$entry[[1]] <- "Treatment" rv$entry[[2]] <- "Unable to walk independently at 6 weeks" # Final function #### Results <- function.Diagnostic_Accuracy_Primary(Predefined_lists, rv)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(pROC) library(ThresholdROC) library(ggplot2) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Diagnostic_Accuracy_Primary" rv$second_menu_choice <- NA rv$entry[[1]] <- "Treatment" rv$entry[[2]] <- "Unable to walk independently at 6 weeks" # Final function #### Results <- function.Diagnostic_Accuracy_Primary(Predefined_lists, rv)
Uses ThresholdROC and pROC to calculate the diagnostic accuracy of a test using a reference standard. This function is used when the data is provided as a 2 x 2 contigency table. Use function.Diagnostic_Accuracy_Primary()
when primary data is available.
function.Diagnostic_Accuracy_Tables(Predefined_lists, rv)
function.Diagnostic_Accuracy_Tables(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
function.Diagnostic_Accuracy_Primary
pROC::roc()
pROC::ggroc()
ThresholdROC::diagnostic()
# Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Load the necessary packages and functions #### library(stringr) library(pROC) library(ThresholdROC) library(ggplot2) rv$first_menu_choice <- "Diagnostic_Accuracy_Tables" rv$second_menu_choice <- NA rv$entry[[1]] <- 30 rv$entry[[2]] <- 2 rv$entry[[3]] <- 1 rv$entry[[4]] <- 40 # Final function #### Results <- function.Diagnostic_Accuracy_Tables(Predefined_lists, rv)
# Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Load the necessary packages and functions #### library(stringr) library(pROC) library(ThresholdROC) library(ggplot2) rv$first_menu_choice <- "Diagnostic_Accuracy_Tables" rv$second_menu_choice <- NA rv$entry[[1]] <- 30 rv$entry[[2]] <- 2 rv$entry[[3]] <- 1 rv$entry[[4]] <- 40 # Final function #### Results <- function.Diagnostic_Accuracy_Tables(Predefined_lists, rv)
Generates the research hypothesis that can be used in grant applications, study protocols, and scientific reports when information is provided in plain language.
function.Generate_Hypothesis(Predefined_lists, rv)
function.Generate_Hypothesis(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
# Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Load the necessary packages and functions #### library(stringr) rv$first_menu_choice <- "Generate_Hypothesis" rv$second_menu_choice <- NA rv$entry[[1]] <- "Intensive rehabilitation" rv$entry[[2]] <- "Standard rehabilitation" rv$entry[[3]] <- "Intervention is better or worse than comparator" rv$entry[[4]] <- "Mobility score" rv$entry[[5]] <- "Higher values of the outcome (or more events) are better for the subject" rv$entry[[6]] <- 10 rv$entry[[7]] <- "" # Final function #### Results <- function.Generate_Hypothesis(Predefined_lists, rv)
# Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Load the necessary packages and functions #### library(stringr) rv$first_menu_choice <- "Generate_Hypothesis" rv$second_menu_choice <- NA rv$entry[[1]] <- "Intensive rehabilitation" rv$entry[[2]] <- "Standard rehabilitation" rv$entry[[3]] <- "Intervention is better or worse than comparator" rv$entry[[4]] <- "Mobility score" rv$entry[[5]] <- "Higher values of the outcome (or more events) are better for the subject" rv$entry[[6]] <- 10 rv$entry[[7]] <- "" # Final function #### Results <- function.Generate_Hypothesis(Predefined_lists, rv)
Generates conclusions when summary information, information used for sample size, and the diffences between the groups are provided. The summary information can be generated from function.Summary_Measures and the difference between the groups can be calculated using function.Compare_Groups. It uses the pwr to calculate the sample size.
function.Make_Conclusions_Effect_size(Predefined_lists, rv)
function.Make_Conclusions_Effect_size(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
function.Summary_Measures
function.Compare_Groups
pwr::pwr.t.test()
pwr::pwr.2p.test()
ggplot2::ggplot()
# Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Load the necessary packages and functions #### library(stringr) library(pwr) library(ggplot2) rv$first_menu_choice <- "Make_Conclusions_Effect_size" rv$second_menu_choice <- "Intervention study (binary outcome)" rv$entry[[1]] <- 0.67 rv$entry[[2]] <- 0.7 rv$entry[[3]] <- -0.12 rv$entry[[4]] <- 0.09 rv$entry[[5]] <- 40 rv$entry[[6]] <- 40 rv$entry[[7]] <- "Intervention is better or worse than comparator" rv$entry[[8]] <- "Independent samples" rv$entry[[9]] <- "Higher values of the outcome (or more events) are better for the subject" rv$entry[[10]] <- 0.05 rv$entry[[11]] <- "0.05" rv$entry[[12]] <- "0.80" # Final function #### Results <- function.Make_Conclusions_Effect_size(Predefined_lists, rv)
# Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Load the necessary packages and functions #### library(stringr) library(pwr) library(ggplot2) rv$first_menu_choice <- "Make_Conclusions_Effect_size" rv$second_menu_choice <- "Intervention study (binary outcome)" rv$entry[[1]] <- 0.67 rv$entry[[2]] <- 0.7 rv$entry[[3]] <- -0.12 rv$entry[[4]] <- 0.09 rv$entry[[5]] <- 40 rv$entry[[6]] <- 40 rv$entry[[7]] <- "Intervention is better or worse than comparator" rv$entry[[8]] <- "Independent samples" rv$entry[[9]] <- "Higher values of the outcome (or more events) are better for the subject" rv$entry[[10]] <- 0.05 rv$entry[[11]] <- "0.05" rv$entry[[12]] <- "0.80" # Final function #### Results <- function.Make_Conclusions_Effect_size(Predefined_lists, rv)
Performs mixed effects regression analysis using lme4 for mixed-effects linear, logistic, and Poisson regression, mclogit for mixed-effects mutinomial logistic regression, ordinal for mixed-effects ordinal regression, and coxme for mixed-effects Cox regression for binary outcomes. It uses lmerTest and MuMIn for performing stepwise regression. For linear, logistic, and Poisson regression, it chooses the best optimizer using lme4::allFit()
.
function.Mixed_Effects_Regression(Predefined_lists, rv)
function.Mixed_Effects_Regression(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
function.Regression_Analysis
function.Multivariate_Regression
DescTools::BoxCox()
lme4::lmer()
lme4::glmer()
mclogit::mblogit()
ordinal::clmm()
coxme::coxme()
lmerTest::step()
MuMIn::dredge()
lme4::allFit()
ggplot2::ggplot()
cowplot::plot_grid()
ggcorrplot::ggcorrplot()
ggsurvfit::ggsurvfit()
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) library(lme4) library(MuMIn) library(ggplot2) library(ggcorrplot) library(cowplot) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Mixed_Effects_Regression" rv$second_menu_choice <- "Logistic regression" rv$entry[[1]] <- "Unable to walk independently at 6 weeks" rv$entry[[2]] <- "" rv$entry[[3]] <- "Centre" rv$entry[[4]] <- "Treatment" rv$entry[[5]] <- "" rv$entry[[6]] <- "" rv$entry[[7]] <- "" rv$entry[[8]] <- "No" # Final function #### Results <- function.Mixed_Effects_Regression(Predefined_lists, rv)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) library(lme4) library(MuMIn) library(ggplot2) library(ggcorrplot) library(cowplot) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Mixed_Effects_Regression" rv$second_menu_choice <- "Logistic regression" rv$entry[[1]] <- "Unable to walk independently at 6 weeks" rv$entry[[2]] <- "" rv$entry[[3]] <- "Centre" rv$entry[[4]] <- "Treatment" rv$entry[[5]] <- "" rv$entry[[6]] <- "" rv$entry[[7]] <- "" rv$entry[[8]] <- "No" # Final function #### Results <- function.Mixed_Effects_Regression(Predefined_lists, rv)
Performs multivariate regression analysis using lme4 for multivariate linear, logistic, and Poisson regression and stats for performing stepwise regression. The user interface accepts multinomial and ordinal variables, but the results for regression types other than multivariate linear and logistic regressions are unverified.
function.Multivariate_Regression(Predefined_lists, rv)
function.Multivariate_Regression(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by ”EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow ”EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
function.Regression_Analysis
function.Mixed_Effects_Regression
DescTools::BoxCox()
stats::lm()
stats::glm()
nnet::multinom()
MASS::polr()
survival::coxph()
ggplot2::ggplot()
ggcorrplot::ggcorrplot()
cowplot::plot_grid()
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) library(ggplot2) library(ggcorrplot) library(cowplot) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Multivariate_Regression" rv$second_menu_choice <- "Linear regression" rv$entry[[1]] <- c("Mobility score at 6 months", "Mobility score at 12 months") rv$entry[[2]] <- "" rv$entry[[3]] <- "Treatment" rv$entry[[4]] <- "" rv$entry[[5]] <- "" rv$entry[[6]] <- "" rv$entry[[7]] <- "No" # Final function #### Results <- function.Multivariate_Regression(Predefined_lists, rv)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) library(ggplot2) library(ggcorrplot) library(cowplot) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Multivariate_Regression" rv$second_menu_choice <- "Linear regression" rv$entry[[1]] <- c("Mobility score at 6 months", "Mobility score at 12 months") rv$entry[[2]] <- "" rv$entry[[3]] <- "Treatment" rv$entry[[4]] <- "" rv$entry[[5]] <- "" rv$entry[[6]] <- "" rv$entry[[7]] <- "No" # Final function #### Results <- function.Multivariate_Regression(Predefined_lists, rv)
Once an analysis has been performed, a plan is automatically generated by 'EQUAL-STATS'. This plan can be used to rerun the analysis allowing transparency and reproducibility of analysis. For this function to run successfully, additional information is provided directly by 'EQUAL-STATS' software. For analysis without requiring data upload, function.plan_upload_no_data is used
function.plan_upload(plan_file_path, Predefined_lists, rv)
function.plan_upload(plan_file_path, Predefined_lists, rv)
plan_file_path |
The path to the plan file. |
Predefined_lists |
A list supplied by EQUAL-STATS application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input. |
Depending upon whether the plan aligned to the data uploaded, either the results of the analysis or message for reason for failure is provided.
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.read_data()
function.plan_upload_no_data()
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) ) # Create a plan file # Several additional functions are necessary to execute the plan. # Therefore, the plan contains wrong field names which are not present in the data plan <- cbind.data.frame( "AN0001", "Check_Distribution", "", "Mobility score at 60 months", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") colnames(plan) <- c( "analysis_number", "first_menu_choice", "second_menu_choice", "entry_1", "entry_2", "entry_3", "entry_4", "entry_5", "entry_6", "entry_7", "entry_8", "entry_9", "entry_10", "entry_11", "entry_12", "entry_13", "entry_14", "entry_15", "same_row_different_row") # Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data and plan in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") plan_file_path = paste0(tempdir(), "/plan.csv") write.csv(plan, file = plan_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions library(stringr) # Read the data rv$import_data <- function.read_data(data_file_path) # Final function #### plan_outcome <- function.plan_upload(plan_file_path, Predefined_lists, rv)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) ) # Create a plan file # Several additional functions are necessary to execute the plan. # Therefore, the plan contains wrong field names which are not present in the data plan <- cbind.data.frame( "AN0001", "Check_Distribution", "", "Mobility score at 60 months", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") colnames(plan) <- c( "analysis_number", "first_menu_choice", "second_menu_choice", "entry_1", "entry_2", "entry_3", "entry_4", "entry_5", "entry_6", "entry_7", "entry_8", "entry_9", "entry_10", "entry_11", "entry_12", "entry_13", "entry_14", "entry_15", "same_row_different_row") # Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data and plan in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") plan_file_path = paste0(tempdir(), "/plan.csv") write.csv(plan, file = plan_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions library(stringr) # Read the data rv$import_data <- function.read_data(data_file_path) # Final function #### plan_outcome <- function.plan_upload(plan_file_path, Predefined_lists, rv)
Once an analysis has been performed, a plan is automatically generated by 'EQUAL-STATS'. This plan can be used to rerun the analysis allowing transparency and reproducibility of analysis. For this function to run successfully, additional information is provided directly by 'EQUAL-STATS' software. For analysis requiring data upload, function.plan_upload()
is used
function.plan_upload_no_data(plan_file_path, Predefined_lists, rv, no_data_choices)
function.plan_upload_no_data(plan_file_path, Predefined_lists, rv, no_data_choices)
plan_file_path |
The path to the plan file. |
Predefined_lists |
A list supplied by EQUAL-STATS application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input. |
no_data_choices |
A list of functions that do not require data upload |
Depending upon whether the plan aligned to the data uploaded, either the results of the analysis or message for reason for failure is provided.
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
# This requires several additional functions to complete successfully. # Therefore, column names was altered to demonstrate the unsuccessful results. # Create plan plan <- cbind.data.frame( "AN0001", "Generate_Hypothesis", "", "Intensive rehabilitation", "Standard rehabilitation", "Intervention is better or worse than comparator", "Mobility score", "Higher values of the outcome (or more events) are better for the subject", "10", "", "", "", "", "", "", "", "", "", "") colnames(plan) <- c( "analysis_number", "menu_choice", "second_menu_choice", "entry_1", "entry_2", "entry_3", "entry_4", "entry_5", "entry_6", "entry_7", "entry_8", "entry_9", "entry_10", "entry_11", "entry_12", "entry_13", "entry_14", "entry_15", "same_row_different_row") # Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) no_data_choices <- c("Generate_Hypothesis", "Sample_Size_Calculations_Effect_size", "Make_Conclusions_Effect_size", "Diagnostic_Accuracy_Tables") # Store the plan plan_file_path = paste0(tempdir(), "/plan.csv") write.csv(plan, file = plan_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions library(stringr) # Final function #### plan_outcome <- function.plan_upload_no_data(plan_file_path, Predefined_lists, rv, no_data_choices)
# This requires several additional functions to complete successfully. # Therefore, column names was altered to demonstrate the unsuccessful results. # Create plan plan <- cbind.data.frame( "AN0001", "Generate_Hypothesis", "", "Intensive rehabilitation", "Standard rehabilitation", "Intervention is better or worse than comparator", "Mobility score", "Higher values of the outcome (or more events) are better for the subject", "10", "", "", "", "", "", "", "", "", "", "") colnames(plan) <- c( "analysis_number", "menu_choice", "second_menu_choice", "entry_1", "entry_2", "entry_3", "entry_4", "entry_5", "entry_6", "entry_7", "entry_8", "entry_9", "entry_10", "entry_11", "entry_12", "entry_13", "entry_14", "entry_15", "same_row_different_row") # Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) no_data_choices <- c("Generate_Hypothesis", "Sample_Size_Calculations_Effect_size", "Make_Conclusions_Effect_size", "Diagnostic_Accuracy_Tables") # Store the plan plan_file_path = paste0(tempdir(), "/plan.csv") write.csv(plan, file = plan_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions library(stringr) # Final function #### plan_outcome <- function.plan_upload_no_data(plan_file_path, Predefined_lists, rv, no_data_choices)
Base function rbind.data.frame
requires that the multiple data frames to be combined must have the same column numbers and names. For producing reports for 'EQUAL-STATS', data frames with different column numbers and names are required. This function allows this combination.
function.rbind_different_column_numbers(list, include_columns)
function.rbind_different_column_numbers(list, include_columns)
list |
A list of data frames to be combined provided as a |
include_columns |
Whether the column names of each data frame should be included as the first row indicated as |
output |
A data frame with the multiple rows combined. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
# Create a simulated data frames df <- cbind.data.frame( Age = rnorm(3000, 40, 10), Height = rnorm(3000,165,15), `Length of hospital stay` = rpois(3000, 8), `Number of infections` = rpois(3000, 3) ) # Calculate means and standard deviations for normally distributed variables # and median and upper and lower quartiles for non-normally distributed variables summary_measures <- lapply(1:ncol(df), function(y) { if (y<=2) { output <- cbind.data.frame( Variable = colnames(df)[y], Mean = mean(df[,y]), `Standard deviation` = sd(df[,y]) ) } else { output <- cbind.data.frame( Variable = colnames(df)[y], Median = quantile(df[,y], probs = 0.5), `Lower quartile` = quantile(df[,y], probs = 0.25), `Upper quartile` = quantile(df[,y], probs = 0.75) ) } return(output) }) # Combine the normally and non-normally distributed variables normally_distributed_variables <- rbind.data.frame(summary_measures[[1]], summary_measures[[2]]) non_normally_distributed_variables <- rbind.data.frame(summary_measures[[3]], summary_measures[[4]]) # Combining the variables in a single data frame using # rbind.data.frame causes error combined_data_frame <- try(rbind.data.frame(normally_distributed_variables, non_normally_distributed_variables)) combined_data_frame # Combining the variables in a single data_frame using # function.rbind_different_column_numbers does not cause error # Note that data frames must be supplied as a list # (any number of data frames can be present in the list) # Final function #### combined_data_frame_new_function <- function.rbind_different_column_numbers( list(normally_distributed_variables, non_normally_distributed_variables) ) combined_data_frame_new_function
# Create a simulated data frames df <- cbind.data.frame( Age = rnorm(3000, 40, 10), Height = rnorm(3000,165,15), `Length of hospital stay` = rpois(3000, 8), `Number of infections` = rpois(3000, 3) ) # Calculate means and standard deviations for normally distributed variables # and median and upper and lower quartiles for non-normally distributed variables summary_measures <- lapply(1:ncol(df), function(y) { if (y<=2) { output <- cbind.data.frame( Variable = colnames(df)[y], Mean = mean(df[,y]), `Standard deviation` = sd(df[,y]) ) } else { output <- cbind.data.frame( Variable = colnames(df)[y], Median = quantile(df[,y], probs = 0.5), `Lower quartile` = quantile(df[,y], probs = 0.25), `Upper quartile` = quantile(df[,y], probs = 0.75) ) } return(output) }) # Combine the normally and non-normally distributed variables normally_distributed_variables <- rbind.data.frame(summary_measures[[1]], summary_measures[[2]]) non_normally_distributed_variables <- rbind.data.frame(summary_measures[[3]], summary_measures[[4]]) # Combining the variables in a single data frame using # rbind.data.frame causes error combined_data_frame <- try(rbind.data.frame(normally_distributed_variables, non_normally_distributed_variables)) combined_data_frame # Combining the variables in a single data_frame using # function.rbind_different_column_numbers does not cause error # Note that data frames must be supplied as a list # (any number of data frames can be present in the list) # Final function #### combined_data_frame_new_function <- function.rbind_different_column_numbers( list(normally_distributed_variables, non_normally_distributed_variables) ) combined_data_frame_new_function
When an user uploads a file in 'EQUAL-STATS' program, the program can automatically classify the variable types based on the nature of the data uploaded. The data and data types are stored in memory. This then determines the options available for questions and the analysis performed. The variable types can be altered using function.read_metadata.
function.read_data(data_file_path)
function.read_data(data_file_path)
data_file_path |
The path to the data file. |
outcome |
Whether the import was successful. |
message |
The message displayed to the user after the processing. This message also contains the reason for failure if the import was unsuccessful. |
data |
Imported data |
any_type |
All variables in the data |
quantitative |
Quantitative variables in the data |
counts |
Count variables in the data |
categorical |
Categorical variables in the data |
nominal |
Categorical variables without any order in the data |
binary |
Categorical variables with only two possible categories (factors/levels) in the data |
ordinal |
Ordered categorical variables |
date |
Any variables that appear like date |
time |
Any variables that appear like time |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) ) # Store this in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages library(stringr) # Final function #### imported_data_types <- function.read_data(data_file_path)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) ) # Store this in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages library(stringr) # Final function #### imported_data_types <- function.read_data(data_file_path)
When an user uploads a file in 'EQUAL-STATS' program, the program classify the variable types based on the nature of the data uploaded using the function function.read_data. However, the levels in the categorical data are determined by alphabetical order, which may not be appropriate in many situations, particularly when needs to compare a new treatment to the standard treatment (reference category) and when the event and no event have to be defined correctly. This can be addressed by uploading metadata.
function.read_metadata(rv, metadata_file_path)
function.read_metadata(rv, metadata_file_path)
rv |
A list supplied by 'EQUAL-STATS' application based on user input. |
metadata_file_path |
The path to the metadata file. |
outcome |
Whether the data types and the order of the categories (levels/factors) were modified successfully. |
message |
The message displayed to the user after the processing. This message also contains the reason for failure if the modification was unsuccessful. |
data |
Imported data (with the structure modified as per the metadata) |
any_type |
All variables in the data |
quantitative |
Quantitative variables in the data |
counts |
Count variables in the data |
categorical |
Categorical variables in the data |
nominal |
Categorical variables without any order in the data |
binary |
Categorical variables with only two possible values (factors/levels) in the data |
ordinal |
Ordered categorical variables |
date |
Any variables that were declared as date and could be convered to date |
date |
Any variables that were declared as time and could be convered to time |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) ) # Create a meta-data file # The first row indicates data type and the second row indicates # the reference category (for all types of categorical variables) metadata_first_two_rows <- cbind.data.frame( c("nominal","S0001"), c("nominal", "C_0001"), c("binary", "Standard rehabilitation"), c("binary", "Non-obese"), c("binary","able"), c("quantitative", NA), c("ordinal", "1_mild"), c("counts", NA), c("quantitative", NA)) colnames(metadata_first_two_rows) <- colnames(data) # The subsequent rows indicate the levels in the user-defined order # for all categorical variables # For this simulation, we will change the reference category # but retain the remaining default order of variable levels # First find the maximum number of levels maximum_number_of_levels <- max(as.numeric(sapply(1:ncol(data), function(y) { if ((metadata_first_two_rows[1,y] == "quantitative") | (metadata_first_two_rows[1,y] == "counts")) { NA } else { nlevels(factor(data[,y])) } })), na.rm = TRUE) metadata_subsequent_rows <- lapply(1:ncol(data), function(y) { if ((metadata_first_two_rows[1,y] == "quantitative") | (metadata_first_two_rows[1,y] == "counts")) { output <- rep(NA,(maximum_number_of_levels-1)) } else { categories <- sort(unique(data[,y])) categories <- categories[categories != metadata_first_two_rows[2,y]] output <- c(categories, rep(NA,(maximum_number_of_levels-1-length(categories)))) } } ) metadata_subsequent_rows <- do.call(cbind.data.frame, metadata_subsequent_rows) colnames(metadata_subsequent_rows) <- colnames(data) metadata <- rbind.data.frame(metadata_first_two_rows, metadata_subsequent_rows) # Simulate lists provided by EQUAL-STATS #### entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = "Summary_Measures", second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data and metadata in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") metadata_file_path = paste0(tempdir(), "/metadata.csv") write.csv(metadata, file = metadata_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions library(stringr) # Read the data rv$import_data <- function.read_data(data_file_path) # Final function #### meta_data_implemented_data_types <- function.read_metadata(rv, metadata_file_path)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) ) # Create a meta-data file # The first row indicates data type and the second row indicates # the reference category (for all types of categorical variables) metadata_first_two_rows <- cbind.data.frame( c("nominal","S0001"), c("nominal", "C_0001"), c("binary", "Standard rehabilitation"), c("binary", "Non-obese"), c("binary","able"), c("quantitative", NA), c("ordinal", "1_mild"), c("counts", NA), c("quantitative", NA)) colnames(metadata_first_two_rows) <- colnames(data) # The subsequent rows indicate the levels in the user-defined order # for all categorical variables # For this simulation, we will change the reference category # but retain the remaining default order of variable levels # First find the maximum number of levels maximum_number_of_levels <- max(as.numeric(sapply(1:ncol(data), function(y) { if ((metadata_first_two_rows[1,y] == "quantitative") | (metadata_first_two_rows[1,y] == "counts")) { NA } else { nlevels(factor(data[,y])) } })), na.rm = TRUE) metadata_subsequent_rows <- lapply(1:ncol(data), function(y) { if ((metadata_first_two_rows[1,y] == "quantitative") | (metadata_first_two_rows[1,y] == "counts")) { output <- rep(NA,(maximum_number_of_levels-1)) } else { categories <- sort(unique(data[,y])) categories <- categories[categories != metadata_first_two_rows[2,y]] output <- c(categories, rep(NA,(maximum_number_of_levels-1-length(categories)))) } } ) metadata_subsequent_rows <- do.call(cbind.data.frame, metadata_subsequent_rows) colnames(metadata_subsequent_rows) <- colnames(data) metadata <- rbind.data.frame(metadata_first_two_rows, metadata_subsequent_rows) # Simulate lists provided by EQUAL-STATS #### entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = "Summary_Measures", second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data and metadata in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") metadata_file_path = paste0(tempdir(), "/metadata.csv") write.csv(metadata, file = metadata_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions library(stringr) # Read the data rv$import_data <- function.read_data(data_file_path) # Final function #### meta_data_implemented_data_types <- function.read_metadata(rv, metadata_file_path)
Performs regression analysis without mixed-effects for a single reponse using stats for linear, logistic, and Poisson regression, nnet for mutinomial logistic regression, MASS for ordinal regression, and survival for Cox regression for binary outcomes. It uses stats for performing stepwise regression.
function.Regression_Analysis(Predefined_lists, rv)
function.Regression_Analysis(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by ”EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow ”EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices()
function.Mixed_Effects_Regression()
function.Multivariate_Regression()
DescTools::BoxCox()
stats::lm()
stats::glm()
nnet::multinom()
MASS::polr()
survival::coxph()
stats::step()
ggplot2::ggplot()
ggcorrplot::ggcorrplot()
cowplot::plot_grid()
data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") rv$import_data <- function.read_data(data_file_path) # Load the necessary packages and functions #### library(stringr) library(DescTools) library(ggplot2) library(ggcorrplot) library(cowplot) # Update choices #### rv$first_menu_choice <- "Regression_Analysis" rv$second_menu_choice <- "EQUAL-STATS choice" rv$entry[[1]] <- "Unable to walk independently at 6 weeks" rv$entry[[2]] <- "" rv$entry[[3]] <- "Treatment" rv$entry[[4]] <- "Obesity status" rv$entry[[5]] <- "" rv$entry[[6]] <- "" rv$entry[[7]] <- "Yes" # Final function #### Results <- function.Regression_Analysis(Predefined_lists, rv)
data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") rv$import_data <- function.read_data(data_file_path) # Load the necessary packages and functions #### library(stringr) library(DescTools) library(ggplot2) library(ggcorrplot) library(cowplot) # Update choices #### rv$first_menu_choice <- "Regression_Analysis" rv$second_menu_choice <- "EQUAL-STATS choice" rv$entry[[1]] <- "Unable to walk independently at 6 weeks" rv$entry[[2]] <- "" rv$entry[[3]] <- "Treatment" rv$entry[[4]] <- "Obesity status" rv$entry[[5]] <- "" rv$entry[[6]] <- "" rv$entry[[7]] <- "Yes" # Final function #### Results <- function.Regression_Analysis(Predefined_lists, rv)
Performs the power and sample size calculations using pwr to calculate the power and sample size for binary and continuous outcomes. It uses ggplot2 to create plots. This functions takes summary information as input. If you want to calculate the sample size based on primary data, use function.Sample_Size_Calculations_Primary.
function.Sample_Size_Calculations_Effect_size(Predefined_lists, rv)
function.Sample_Size_Calculations_Effect_size(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
function.Sample_Size_Calculations_Primary
pwr::pwr.t.test()
pwr::pwr.anova.test()
pwr::pwr.2p.test()
ggplot2::ggplot()
# Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Load the necessary packages and functions #### library(stringr) library(pwr) library(ggplot2) rv$first_menu_choice <- "Sample_Size_Calculations_Effect_size" rv$second_menu_choice <- "Intervention study (binary outcome)" rv$entry[[1]] <- 0.5 rv$entry[[2]] <- 0.4 rv$entry[[3]] <- "Intervention is better or worse than comparator" rv$entry[[4]] <- "Independent samples" # Final function #### Results <- function.Sample_Size_Calculations_Effect_size(Predefined_lists, rv)
# Simulate lists provided by EQUAL-STATS #### Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Load the necessary packages and functions #### library(stringr) library(pwr) library(ggplot2) rv$first_menu_choice <- "Sample_Size_Calculations_Effect_size" rv$second_menu_choice <- "Intervention study (binary outcome)" rv$entry[[1]] <- 0.5 rv$entry[[2]] <- 0.4 rv$entry[[3]] <- "Intervention is better or worse than comparator" rv$entry[[4]] <- "Independent samples" # Final function #### Results <- function.Sample_Size_Calculations_Effect_size(Predefined_lists, rv)
Performs the power and sample size calculations using pwr to calculate the power and sample size for binary and continuous outcomes. It uses ggplot2 to create plots. This functions takes primary data as input. If you want to calculate the sample size based on summary information, use function.Sample_Size_Calculations_Effect_size.
function.Sample_Size_Calculations_Primary(Predefined_lists, rv)
function.Sample_Size_Calculations_Primary(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
function.Sample_Size_Calculations_Effect_size
pwr::pwr.t.test()
pwr::pwr.anova.test()
pwr::pwr.2p.test()
ggplot2::ggplot()
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(pwr) library(ggplot2) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Sample_Size_Calculations_Primary" rv$second_menu_choice <- NA rv$entry[[1]] <- "Mobility score at 6 months" rv$entry[[2]] <- "Treatment" rv$entry[[3]] <- 10 # Final function #### Results <- function.Sample_Size_Calculations_Primary(Predefined_lists, rv)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(pwr) library(ggplot2) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Sample_Size_Calculations_Primary" rv$second_menu_choice <- NA rv$entry[[1]] <- "Mobility score at 6 months" rv$entry[[2]] <- "Treatment" rv$entry[[3]] <- 10 # Final function #### Results <- function.Sample_Size_Calculations_Primary(Predefined_lists, rv)
This function is a wrapper function that chooses the correct analysis function to perform, saves the results in a zip folder, and generates the code for the standalone analysis.
function.submit_choices(Predefined_lists, rv, code_prefix, no_data_choices)
function.submit_choices(Predefined_lists, rv, code_prefix, no_data_choices)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
code_prefix |
Code that forms the start of the standalone code |
no_data_choices |
A list of functions that do not require data upload |
Analysis_results |
Analysis results includes the results of the last called analysis, a plan which includes all previous analysis performed in the session with the data set, and a standard alone R code which allows reproducibility of results. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.Diagnostic_Accuracy_Tables
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA ) no_data_choices <- c("Generate_Hypothesis", "Sample_Size_Calculations_Effect_size", "Make_Conclusions_Effect_size", "Diagnostic_Accuracy_Tables") code_prefix <- "" # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) library(zip) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Summary_Measures" rv$second_menu_choice <- NA rv$entry[[1]] <- "Obesity status" rv$entry[[2]] <- "Treatment" rv$entry[[3]] <- "EQUAL-STATS choice" Results <- function.submit_choices(Predefined_lists, rv, code_prefix, no_data_choices)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA ) no_data_choices <- c("Generate_Hypothesis", "Sample_Size_Calculations_Effect_size", "Make_Conclusions_Effect_size", "Diagnostic_Accuracy_Tables") code_prefix <- "" # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) library(zip) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Summary_Measures" rv$second_menu_choice <- NA rv$entry[[1]] <- "Obesity status" rv$entry[[2]] <- "Treatment" rv$entry[[3]] <- "EQUAL-STATS choice" Results <- function.submit_choices(Predefined_lists, rv, code_prefix, no_data_choices)
Calculates the summary (descriptive) measures of data, such as proportions and the confidence intervals for categorical data and mean, standard deviation, confidence intervals, median, quartiles, skewness and kurtosis. It uses base and DescTools to calculate these measures.
function.Summary_Measures(Predefined_lists, rv)
function.Summary_Measures(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
DescTools::MeanCI()
DescTools::MedianCI()
DescTools::Kurt()
DescTools::Skew()
DescTools::BinomCI()
DescTools::MultinomCI()
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Summary_Measures" rv$second_menu_choice <- NA rv$entry[[1]] <- "Obesity status" rv$entry[[2]] <- "Treatment" rv$entry[[3]] <- "EQUAL-STATS choice" # Final function #### Results <- function.Summary_Measures(Predefined_lists, rv)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(DescTools) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Summary_Measures" rv$second_menu_choice <- NA rv$entry[[1]] <- "Obesity status" rv$entry[[2]] <- "Treatment" rv$entry[[3]] <- "EQUAL-STATS choice" # Final function #### Results <- function.Summary_Measures(Predefined_lists, rv)
Performs analysis of survival data (time-to-event data). It uses the survival to calculate the survival tables and survfit to generate the Kaplan-Meier plot.
function.Survival_Analysis(Predefined_lists, rv)
function.Survival_Analysis(Predefined_lists, rv)
Predefined_lists |
A list supplied by 'EQUAL-STATS' application |
rv |
A list supplied by 'EQUAL-STATS' application based on user input |
analysis_outcome |
Whether the analysis was performed successfullly |
plan |
Plan used for analysis |
code |
Part of code generated for performing the analysis in a standalone version of R |
results |
Analysis results |
results_display |
In order to present a single table, multiple results are combined. This results in some numbers stored as text and can cause very wide tables in the shiny output. This issue is fixed wth some modifications to the results table for display purposes. |
plots_list |
A list of plots generated. Returns "" if no plots are generated. |
plots_list_display |
In the shiny application, only one figure is displayed. Therefore, a composite image is created from the plots for display purposes. Some analysis functions may return |
selections |
Selections made by the user for display. |
display_table |
Whether the results table should be displayed in the shiny app. |
display_plot |
Whether the plot should be displayed in the shiny app. |
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
function.submit_choices
survival::coxph()
ggsurvfit::ggsurvfit()
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(survival) library(ggsurvfit) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Survival_Analysis" rv$second_menu_choice <- NA rv$entry[[1]] <- "Admission to care home" rv$entry[[2]] <- "Follow-up" rv$entry[[3]] <- "Treatment" # Final function #### Results <- function.Survival_Analysis(Predefined_lists, rv)
# Create simulated data #### data <- cbind.data.frame( `Subject ID` = c( "S0001", "S0002", "S0003", "S0004", "S0005", "S0006", "S0007", "S0008", "S0009", "S0010", "S0011", "S0012", "S0013", "S0014", "S0015", "S0016", "S0017", "S0018", "S0019", "S0020", "S0021", "S0022", "S0023", "S0024", "S0025", "S0026", "S0027", "S0028", "S0029", "S0030"), `Centre` = c( "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0001", "C_0001", "C_0003", "C_0001", "C_0003", "C_0001", "C_0002", "C_0002", "C_0001", "C_0003", "C_0002", "C_0002", "C_0003", "C_0001", "C_0002", "C_0002", "C_0002", "C_0002", "C_0003", "C_0002", "C_0001", "C_0003", "C_0001", "C_0001", "C_0001"), `Treatment` = c( "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Standard rehabilitation", "Intensive rehabilitation", "Standard rehabilitation", "Intensive rehabilitation"), `Obesity status` = c( "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Obese", "Non-obese", "Non-obese", "Obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Non-obese", "Non-obese", "Non-obese", "Obese", "Obese", "Non-obese", "Obese", "Obese", "Obese", "Obese"), `Unable to walk independently at 6 weeks` = c( "unable", "able", "able", "unable", "able", "able", "unable", "unable", "unable", "unable", "able", "unable", "able", "unable", "unable", "able", "unable", "unable", "unable", "unable", "able", "able", "able", "able", "unable", "able", "able", "unable", "able", "unable"), `Mobility score at 6 months` = c( 86, 65.1, 48, 99.8, 73.4, 70, 74.7, 36.5, 64.6, 85.4, 41.7, 60.1, 73.3, 42.4, 55.3, 47.3, 85.9, 63, 64.6, 101.8, 108.1, 72.3, 96.4, 87.5, 66.2, 92.9, 47.7, 55.8, 56.4, 133.8), `Pain at 6 weeks` = c( "3_severe", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "2_moderate", "1_mild", "3_severe", "1_mild", "2_moderate", "1_mild", "3_severe", "3_severe", "1_mild", "2_moderate", "3_severe", "2_moderate", "2_moderate", "1_mild", "1_mild", "1_mild", "1_mild", "2_moderate", "1_mild", "1_mild", "2_moderate", "1_mild", "2_moderate"), `Number of falls within 6 months` = c( 3, 2, 3, 2, 2, 1, 4, 2, 2, 5, 3, 2, 2, 2, 5, 3, 2, 2, 3, 4, 3, 1, 2, 2, 2, 7, 2, 1, 1, 8), `Mobility score at 12 months` = c( 90, 69.1, 52, 103.8, 77.4, 74, 78.7, 40.5, 68.6, 89.4, 45.7, 64.1, 77.3, 46.4, 59.3, 51.3, 89.9, 67, 68.6, 105.8, 112.1, 76.3, 100.4, 91.5, 70.2, 96.9, 51.7, 59.8, 60.4, 137.8) , `Admission to care home` = c( "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Admitted", "Not admitted", "Not admitted", "Not admitted", "Admitted", "Not admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Admitted", "Not admitted"), `Follow-up` = c( 10, 8, 8, 8, 12, 12, 11, 10, 8, 7, 8, 6, 9, 6, 9, 8, 10, 8, 11, 9, 6, 9, 12, 9, 8, 11, 12, 9, 10, 11) ) # Simulate lists provided by EQUAL-STATS Predefined_lists <- list( main_menu = c( 'Calculate summary measures', 'Create plots', 'Check distribution', 'Compare sample mean versus population mean', 'Compare groups/variables (independent samples)', 'Compare groups/variables (paired samples or repeated measures)', 'Find the correlation (quantitative variables)', 'Calculate measurement error', 'Find the diagnostic accuracy (primary data)', 'Perform sample size and power calculations (primary data)', 'Perform survival analysis', 'Perform regression analysis', 'Analyse time series', 'Perform mixed-effects regression', 'Perform multivariate regression', 'Generate hypothesis', 'Perform sample size and power calculations (effect size approach)', 'Make correct conclusions (effect size approach)', 'Find the diagnostic accuracy (tabulated data)' ), menu_short = c( 'Summary_Measures', 'Create_Plots', 'Check_Distribution', 'Compare_Sample_Pop_Means', 'Compare_Groups', 'Repeated_Measures', 'Correlation', 'Measurement_Error', 'Diagnostic_Accuracy_Primary', 'Sample_Size_Calculations_Primary', 'Survival_Analysis', 'Regression_Analysis', 'Time_Series', 'Mixed_Effects_Regression', 'Multivariate_Regression', 'Generate_Hypothesis', 'Sample_Size_Calculations_Effect_size', 'Make_Conclusions_Effect_size', 'Diagnostic_Accuracy_Tables' ) ) entry <- list() entry <- lapply(1:15, function(x) entry[[x]] <- '') rv <- list( StorageFolder = tempdir(), first_menu_choice = NA, second_menu_choice = NA, entry = entry, import_data = NULL, same_row_different_row = NA, submit_button_to_appear = FALSE, summary_measures_choices = c("EQUAL-STATS choice", "Total observations", "Missing observations", "Available observations"), analysis_outcome = list(), code = list(), plan = list(), results = list(), plots_list = list(), reports = list() ) # Store the data in a folder data_file_path = paste0(tempdir(), "/data.csv") write.csv(data, file = data_file_path, row.names = FALSE, na = "") # Load the necessary packages and functions #### library(stringr) library(survival) library(ggsurvfit) rv$import_data <- function.read_data(data_file_path) # Update choices #### rv$first_menu_choice <- "Survival_Analysis" rv$second_menu_choice <- NA rv$entry[[1]] <- "Admission to care home" rv$entry[[2]] <- "Follow-up" rv$entry[[3]] <- "Treatment" # Final function #### Results <- function.Survival_Analysis(Predefined_lists, rv)
For some graphs, Base pretty
function may not provide the correct rounding. This is a different algorithm suitable for the graphs produced in 'EQUAL-STATS' software.
round_near(x)
round_near(x)
x |
A numeric variable. |
A "pretty number" suitable for use in graphs.
This is part of a suite of functions required to allow 'EQUAL-STATS' program to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
x <- 7 round_near(x) x <- 754 round_near(x)
x <- 7 round_near(x) x <- 754 round_near(x)