Я пытаюсь добавить два осложнения к простой линейной регрессии. Во-первых, я хочу выполнить циклическую линейную регрессию для большого набора данных, а во-вторых, я хочу выполнить эту циклическую регрессию внутри групп.
У меня есть фрейм данных (df), который также предоставляет значения столбцов для примерно 18000 генов в качестве столбца для метрики жизнеспособности c. Я хочу выполнить линейную регрессию между показателем жизнеспособности c и каждым из 18000 генов и извлечь коэффициент корреляции и p-значение. Для этого работает следующий код:
n <- 18121 #column corresponding to last gene
my_lms <- lapply(2:n, function(x)
summary(lm(df[ , x] ~ df$`Viability metric`))) #perform iterative linear regressions between each gene and the PRISM score for a given condition
p_value <- sapply(my_lms, coef) # select only the p-value and coef values from summary
colnames(p_value) <- colnames(df[, 2:n]) #re assigning genes to col names
p_value <- as.data.frame(t(p_value[c(2,8), ])) # selecting the row that corresponds to the p-value (8) and coef (2) of the lm for each gene
Есть еще один столбец, который определяет группы родословной. Я могу выполнить линейную регрессию между двумя переменными столбца (ZSWIM4 - одно из имен гена) по группе происхождения, но не могу понять, как сделать это зацикленным, как указано выше. Я использовал этот код для выполнения групповой линейной регрессии:
my_lms_lineage <- df %>%
group_by(lineage) %>%
do(model = lm(ZSWIM4 ~ `Viability metric`, data = . ))
Как я могу объединить эти две спецификации?