Here's an example that works:
library(dplyr)
set.seed(2053)
df <- data.frame(age = sample(18:80, 6, replace=FALSE),
sex = sample(0:1, 6, replace=TRUE))
for(i in 1:10){
df[[paste0("gene_", i)]] <- runif(6,0,1)
}
genelist <- df %>% select(3:12) #select only genes
pred <- df %>% select(age, sex)
sigs <- NULL
for (i in 1:length(genelist)) {
formula <- reformulate(c("age", "sex"), response=names(genelist)[i])
model <- lm(formula, data = df)
pred[[names(genelist)[i]]] <- predict(model, newdata=pred)
pvals <- summary(model)$coefficients[-1,4]
pvals <- c(pvals, "F" = unname(pf(summary(model)$fstatistic[1],
summary(model)$fstatistic[2],
summary(model)$fstatistic[3],
lower.tail=FALSE)))
sigs <- rbind(sigs, pvals)
}
rownames(sigs) <- colnames(genelist)
pred
#> age sex gene_1 gene_2 gene_3 gene_4 gene_5 gene_6
#> 1 54 0 0.6460394 0.7975062 0.542963150 0.5766314 0.43716321 0.3731399
#> 2 65 0 0.4969311 0.7557411 0.499976012 0.7201710 -0.02954846 0.3392473
#> 3 49 0 0.7138160 0.8164903 0.562502758 0.5113862 0.64930488 0.3885457
#> 4 62 0 0.5375970 0.7671316 0.511699777 0.6810238 0.09773654 0.3484907
#> 5 44 0 0.7815925 0.8354744 0.582042366 0.4461409 0.86144655 0.4039515
#> 6 40 1 0.3976764 0.3673542 0.009429805 0.2500409 0.38185899 0.5017752
#> gene_7 gene_8 gene_9 gene_10
#> 1 0.6990817 0.6336038 0.36330413 0.3146205
#> 2 0.6414371 0.8336259 0.58575121 0.2651734
#> 3 0.7252838 0.5426847 0.26219181 0.3370964
#> 4 0.6571584 0.7790744 0.52508383 0.2786590
#> 5 0.7514859 0.4517656 0.16107950 0.3595723
#> 6 0.1903702 0.9501972 0.09472406 0.6118369
sigs
#> age sex F
#> gene_1 0.5736844190 0.462726187 0.72223654
#> gene_2 0.6526877593 0.079265450 0.12862783
#> gene_3 0.8493679497 0.289034889 0.44026028
#> gene_4 0.6573230145 0.837650010 0.73697690
#> gene_5 0.0004498121 0.001752855 0.00105546
#> gene_6 0.8812687531 0.864282218 0.92669812
#> gene_7 0.7960359480 0.286213514 0.45291886
#> gene_8 0.2845571231 0.190629747 0.35754969
#> gene_9 0.1456621812 0.957422081 0.19649049
#> gene_10 0.7587574987 0.521719609 0.54628975
Created on 2022-10-18 by the reprex package (v2.0.1)
In the example above, pred
is the answer to the original question. In the comments, you asked about identifying whether the models were significant. The object sigs
captures the p-values from both the age
and sex
variables as well as the p-value for the model's omnibus F-statistic.