-
Notifications
You must be signed in to change notification settings - Fork 91
Expand file tree
/
Copy pathindex.qmd
More file actions
86 lines (75 loc) · 3.8 KB
/
index.qmd
File metadata and controls
86 lines (75 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
---
title: "CAMIS - A PHUSE DVOST Working Group"
execute:
freeze: false
---
# Introduction to CAMIS
[Comparing Analysis Method Implementations in Software](about.qmd) (CAMIS) is a cross-industry PHUSE DVOST Working Group, run in collaboration with members from [PHUSE](https://phuse.global/), [PSI](https://psiaims.github.io/website/), ASA and IASCT. In addition to issue comments, which are hosted in the [GitHub Repository](https://github.com/PSIAIMS/CAMIS/issues), we meet monthly on the 2nd Monday of each month. If you would like to join us please contact us at [workinggroups\@phuse.global](mailto:workinggroups@phuse.global).
### Motivation
The goal of this project is to demystify conflicting results in statistical analysis methods and results between primarily **SAS**, **R**, and **Python** programming languages by providing comparisons and comprehensive explanations of similarities and differences. Many discrepancies have been discovered in statistical analysis results between these and other programming languages. The differences in results are due to fundamental approaches implemented by each language, which are each correct in their own right. The fact that these differences exist is a challenge, especially related to sponsor companies when submitting to a regulatory agency.
In its [Statistical Software Clarifying Statement](https://fda.report/media/109552/Statistical-Software-Clarifying-Statement-PDF.pdf), the US Food and Drug Administration (FDA) states that it "FDA does not require use of any specific software for statistical analyses" and that "the computer software used for data management and statistical analysis should be reliable." Observing differences across languages can reduce the analyst's confidence in reliability and, by understanding the source of any discrepancies, one can reinstate confidence in reliability. CAMIS seeks to explore and explain some of the differences and similarities in statical analysis methods between these languages to ease these concerns.
### Repository
The repository below provides examples of statistical methodology in different software and languages, along with a comparison of the results obtained and description of any discrepancies.
```{r}
#| echo: false
#| message: false
#| html-table-processing: none
library(gt)
library(tidyverse)
method_tbl <- read_csv("data/stat_method_tbl.csv", show_col_types = FALSE) |>
filter(!is.na(method_grp)) |>
pivot_longer(cols = ends_with("links")) |>
mutate(
link_name = str_extract(value, "(?<=^\\[).*(?=\\])"),
link_loc = str_extract(value, "(?<=\\().*(?=\\)$)"),
link = if_else(
!is.na(value),
paste0('<a href=\"', link_loc, '.html">', link_name, '</a>'),
""
)
) |>
select(-value, -link_name, -link_loc) |>
pivot_wider(names_from = name, values_from = link) |>
mutate(across(ends_with("links"), ~ map(., html)))
gt(
method_tbl,
groupname_col = "method_grp",
rowname_col = "method_subgrp"
) |>
cols_label(
r_links = "R",
sas_links = "SAS",
python_links = "Python",
comparison_links = "Comparison"
) |>
tab_stubhead("Statistical Methodology") |>
tab_stub_indent(rows = method_subgrp, indent = 5) |>
cols_hide(method_grp) |>
cols_width(3:6 ~ px(100)) |>
tab_style(
style = list(
cell_text(weight = "bold"),
cell_borders(
sides = c("top", "bottom"),
color = "#000000",
weight = px(2.5)
)
),
locations = list(
cells_row_groups(),
cells_column_labels(),
cells_stubhead()
)
) |>
tab_style(
style = list(
cell_fill(color = "transparent")
),
locations = cells_body(columns = everything(), rows = everything())
) |>
tab_options(
table_body.border.bottom.style = "solid",
table_body.border.bottom.width = px(2.5),
table_body.border.bottom.color = "#000000"
)
```