Accommodating Multiple Radii
SPOT.Rmd
Introduction
To apply spatial summary statistics, like Ripley’s K, in analyses of
multiplexed spatial proteomics imaging data, the user is required to
select a radius in which to quantify the degree of clustering,
repulsion, or lack thereof. The optimal radius, however, is typically
unknown beforehand. To this end, it can be helpful to consider a range
of candidate radii at which to calculate Ripley’s K and test for an
association at each radius, aggregating the resulting p-values. This is
the idea behind the SPatial Omnibus Test (SPOT) (@samorodnitsky2024spatial). In this vignette, we
discuss integrating spagg
with SPOT using the associated R
package, SPOT
. This will allow us to compute Ripley’s K at
several candidate radii, aggregate the resulting spatial summary
statistics for a given radius within a sample across regions-of-interest
(ROIs), test for an association between the aggregated spatial summary
and an outcome, and combine the results across radii.
We first load in the necessary packages, including the
SPOT
package, which is available on Github.
Loading in the Data
For this analysis, we will use the non-small cell lung cancer dataset
used in the Non-Small Cell Lung Cancer Analysis
vignette.
As described there, we will downloaded the data from http://juliawrobel.com/MI_tutorial/MI_Data.html but is
also available from the VectraPolarisData
R package. For
the purposes of this illustration, we do some basic tidying of the data
prior to analysis. The steps to this are similar to those given in the
link given above. These steps are shown below.
# Load in the data
load(url("http://juliawrobel.com/MI_tutorial/Data/lung.RDA"))
# Label the immune cell types
lung_df <- lung_df %>%
mutate(type = case_when(
phenotype_cd14 == "CD14+" ~ "CD14+ cell",
phenotype_cd19 == "CD19+" ~ "CD19+ B cell",
phenotype_cd4 == "CD4+" ~ "CD4+ T cell",
phenotype_cd8 == "CD8+" ~ "CD8+ T cell",
phenotype_other == "Other+" ~ "Other",
phenotype_ck == "CK+" ~ "Tumor"
))
# Add a column indicating if a sample has >=5% MHCII+ tumor cells
lung_df <- lung_df %>%
dplyr::group_by(patient_id) %>%
dplyr::mutate(mhcII_high = as.numeric(mhcII_status == "high"))
# Change colnames
colnames(lung_df)[colnames(lung_df) == "patient_id"] <- "PID"
# Add a PID column
colnames(lung_df)[colnames(lung_df) == "image_id"] <- "id"
# Filter to just cells detected within the tumor
lung_df_tumor <- lung_df %>% filter(tissue_category == "Tumor")
# Remove grouping
lung_df_tumor <- lung_df_tumor %>% dplyr::ungroup()
# Remove NA types
lung_df_tumor <- lung_df_tumor %>% filter(!is.na(type))
# Show the first few rows of the data
head(lung_df_tumor)
#> # A tibble: 6 × 39
#> id PID cell_id x y gender mhcII_status age_at_diagnosis
#> <chr> <chr> <dbl> <dbl> <dbl> <chr> <chr> <dbl>
#> 1 #01 0-889-121 … #01 … 5 453 2.5 F low 85
#> 2 #01 0-889-121 … #01 … 6 463 2.5 F low 85
#> 3 #01 0-889-121 … #01 … 11 464 8.5 F low 85
#> 4 #01 0-889-121 … #01 … 12 538 10 F low 85
#> 5 #01 0-889-121 … #01 … 21 522 20.5 F low 85
#> 6 #01 0-889-121 … #01 … 22 566. 25 F low 85
#> # ℹ 31 more variables: stage_at_diagnosis <chr>, stage_numeric <dbl>,
#> # pack_years <dbl>, survival_days <dbl>, survival_status <dbl>,
#> # cause_of_death <chr>, adjuvant_therapy <chr>,
#> # time_to_recurrence_days <dbl>, recurrence_or_lung_ca_death <dbl>,
#> # tissue_category <chr>, cd19 <dbl>, cd3 <dbl>, cd14 <dbl>, cd8 <dbl>,
#> # hladr <dbl>, ck <dbl>, dapi <dbl>, entire_cell_axis_ratio <dbl>,
#> # entire_cell_major_axis <dbl>, entire_cell_minor_axis <dbl>, …
There are four immune cell types available in this dataset: CD14+ cell, CD4+ T cell, CD8+ T cell, and CD19+ B cell. We will examine the pairwise colocalization of CD4+ T cells and tumor cells as well as CD8+ T cells and tumor cells and their associations with a sample exhibiting an MHCII-high tumor microenvironment (TME).
Weighted Aggregations
As described in the introductory vignette, spagg
contains five approaches for aggregating spatial summaries at a given
radius. Three of these approaches are weighted means and the other three
are ensemble approaches. Currently, the SPOT
package does
not accommodate incorporating ensemble testing into the framework. This
feature is in development. For now, we will focus on applying the first
three weighted means to test for an association with MHCII-high TME.
The first three approaches are weighted means of the summary statistics are given below:
Incorporating Weighted Aggregations into SPOT
The steps to our analysis are as follows:
We will determine a range of candidate radii in advance. For this analysis, we will use Ripley’s rule of thumb and consider radii between and times the shortest length of any image in the dataset.
We will compute Ripley’s K for each radius and for each ROI. Within each sample, we will aggregate the spatial summaries across ROIs using an arithmetic mean, the Diggle mean, the Landau mean, and the Baddeley mean. We will then test for an association between the aggregated spatial summaries and MHCII-high status. At the end, we will aggregate the p-values using the Cauchy combination test (CCT) (@liu2020cauchy).
We will also use the ensemble approaches to aggregate the spatial summaries and test for an association with the outcome. This will involve two nested p-value combination steps: (1) at the ensemble testing level, we will aggregate the p-values using the CCT across ensemble replications; (2) at the SPOT level, we will aggregate the ensemble p-values across radii using the CCT again.
At the end, we will assess which cell type pairs have significant associations with MHCII-high status.
We first start by computing the range of radii to consider.
# Calculate the radii
smallest.dim <- lung_df_tumor %>%
dplyr::group_by(PID) %>%
dplyr::summarize(x.range = abs(max(x) - min(x)),
y.range = abs(max(y) - min(y)),
min = min(x.range, y.range))
# Set the radii by Ripley's rule
radii <- seq(0, 0.25 * min(smallest.dim$min), length.out = 100)
Next, we iterate through the two pairs of cell types, calculating
Ripley’s K for each radius value, and computing each of our weighted
averages (and a standard arithmetic mean) for each sample. At the end,
we will test for an association between each average and MHCII-status.
All of this can be done using the SPOT
package which allows
the user to select an aggregation method to average spatial summary
statistics across ROIs.
We first consider the colocalization of CD4+ T cells and tumor cells for each aggregation method. We also adjust for patient age in our analysis.
# Using an arithmetic mean
cd4.tumor.mean.res <- SPOT::spot(data = lung_df_tumor,
radii = radii,
outcome = "mhcII_high",
censor = NULL,
model.type = "logistic",
use.K = TRUE,
homogeneous = TRUE,
adjustments = "age_at_diagnosis",
marked = TRUE,
cell.type = c("CD4+ T cell", "Tumor"),
pick.roi = "average")
#> Progress: 0% Progress: 0% Progress: 0% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 100% Progress: 100% Progress: 100% Progress: 100%
# Using the Diggle mean
cd4.tumor.diggle.res <- SPOT::spot(data = lung_df_tumor,
radii = radii,
outcome = "mhcII_high",
censor = NULL,
model.type = "logistic",
use.K = TRUE,
homogeneous = TRUE,
adjustments = "age_at_diagnosis",
marked = TRUE,
cell.type = c("CD4+ T cell", "Tumor"),
pick.roi = "diggle")
#> Progress: 0% Progress: 0% Progress: 0% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 100% Progress: 100% Progress: 100% Progress: 100%
#> Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
# Using the Baddeley mean
cd4.tumor.baddeley.res <- SPOT::spot(data = lung_df_tumor,
radii = radii,
outcome = "mhcII_high",
censor = NULL,
model.type = "logistic",
use.K = TRUE,
homogeneous = TRUE,
adjustments = "age_at_diagnosis",
marked = TRUE,
cell.type = c("CD4+ T cell", "Tumor"),
pick.roi = "baddeley")
#> Progress: 0% Progress: 0% Progress: 0% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 100% Progress: 100% Progress: 100% Progress: 100%
#> Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
# Using the Landau mean
cd4.tumor.landau.res <- SPOT::spot(data = lung_df_tumor,
radii = radii,
outcome = "mhcII_high",
censor = NULL,
model.type = "logistic",
use.K = TRUE,
homogeneous = TRUE,
adjustments = "age_at_diagnosis",
marked = TRUE,
cell.type = c("CD4+ T cell", "Tumor"),
pick.roi = "landau")
#> Progress: 0% Progress: 0% Progress: 0% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 1% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 2% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 3% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 4% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 5% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 6% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 7% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 8% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 9% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 10% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 11% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 12% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 13% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 14% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 15% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 16% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 17% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 18% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 19% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 20% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 21% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 22% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 23% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 24% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 25% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 26% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 27% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 28% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 29% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 30% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 31% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 32% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 33% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 34% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 35% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 36% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 37% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 38% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 39% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 40% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 41% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 42% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 43% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 44% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 45% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 46% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 47% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 48% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 49% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 50% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 51% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 52% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 53% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 54% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 55% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 56% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 57% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 58% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 59% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 60% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 61% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 62% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 63% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 64% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 65% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 66% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 67% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 68% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 69% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 70% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 71% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 72% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 73% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 74% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 75% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 76% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 77% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 78% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 79% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 80% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 81% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 82% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 83% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 84% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 85% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 86% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 87% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 88% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 89% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 90% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 91% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 92% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 93% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 94% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 95% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 96% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 97% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 98% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 99% Progress: 100% Progress: 100% Progress: 100% Progress: 100%
# Create a data.frame to show the p-values
cd4.tumor.df <- data.frame(
Method = c("Mean", "Diggle", "Baddeley", "Landau"),
P.Value = c(cd4.tumor.mean.res$overall.pval, cd4.tumor.diggle.res$overall.pval,
cd4.tumor.baddeley.res$overall.pval, cd4.tumor.landau.res$overall.pval)
)
# Display
cd4.tumor.df
#> Method P.Value
#> 1 Mean 0.08080625
#> 2 Diggle 0.04128158
#> 3 Baddeley 0.03202144
#> 4 Landau 0.09480697
We can also examine how the p-values associated with each aggregated method varied across radii. Below, we plot the log10-transformed p-value as a function of the radius to examine how significance varies.
# First, combine the results together across methods
results <- dplyr::bind_rows(
cd4.tumor.mean.res$pval.df %>% dplyr::select(radius, pval),
cd4.tumor.diggle.res$pval.df %>% dplyr::select(radius, pval),
cd4.tumor.baddeley.res$pval.df %>% dplyr::select(radius, pval),
cd4.tumor.landau.res$pval.df %>% dplyr::select(radius, pval),
.id = "source"
)
# Rename the "source" column, which indicates the mean type
colnames(results)[1] <- "Mean"
# Rename the values of the Mean column
results$Mean <- factor(results$Mean)
levels(results$Mean) <- c("Mean", "Diggle", "Baddeley", "Landau")
# Plot the log10-transformed p-values
results %>%
dplyr::mutate(log10.pval = -log10(pval)) %>%
ggplot(aes(x = radius, y = log10.pval, color = Mean)) +
geom_point() +
theme_bw() +
xlab("Radius") + ylab("-log10(P-Value)") +
geom_hline(yintercept = -log10(0.05), linetype = "dashed") +
ggtitle("P-Values for Association Between Tumor and CD4+ T Cell \n Colocalization and MHCII-High Status Across Radii")
The above plot illustrates how the significance of the association
between tumor-CD4+ T cell colocalization and MHCII-high status varies as
a function of aggregation method (arithmetic mean, Diggle mean, Baddeley
mean, or Landau mean) and as a function of radius. The dashed line
indicates significance at an
level. Log10-transformed p-values greater than this line are
significant. Between a radius of approximately
and
,
all four means show significance. After approximately a radius of
,
only the Baddeley mean shows consistent significance. This aligns with
the omnibus p-value for the Baddeley mean being the lowest among the
four options shown above.