将数据子集为分析和评估数据,以在 R 中生成和应用分组预测模型

问题描述 投票:0回答:1

这个问题与以下问题相关,但我无法使其工作

R 中的线性回归模型构建和分组预测

在每个组上拟合模型,并使用不属于该组的所有行的数据对其进行评估,R

基本上我有一个结构如下的数据框。 这是通过在“多重”机器上分析我的不同实验条件而生成的,本质上是为多个不同的感兴趣的“细胞因子”生成强度读数。作为该测试的一部分,我使用每种细胞因子的标准浓度来生成标准曲线(通过拟合 5 参数模型生成)。在我的数据中,这些标准保存在“条件”列中,并标记为(标准1、标准2等)。 然后,我想将这些模型应用于我的“实验”条件的强度数据,以为我的实验生成预测“值”。

test <- data.frame(
  condition = as.factor(c("standard1", "standard2", "standard3", "standard4", "standard5", "standard6", "standard1", "standard2", "standard3", "standard4", "standard5", "standard6", "experiment1", "experiment2", "experiment3")),
  cytokine = as.factor(c("IL1", "IL1", "IL1", "IL1", "IL1", "IL1", "CXCL1", "CXCL1", "CXCL1", "CXCL1", "CXCL1", "CXCL1", "IL1", "IL1", "CXCL1")),
  value = as.numeric(c(1000, 500, 200, 100, 50, 25, 1500, 1000, 400, 300, 50, 20, NA, NA, NA)),
intensity = as.numeric(c(1.00, 0.6, 0.3, 0.2, 0.1, 0.05, 0.95, 0.87, 0.50, 0.4, 0.2, 0.1, 0.5, 0.7, 0.1)))

我的真实数据更长,有更多的条件和细胞因子

我已经尝试了以下方法,并认为到目前为止它有效


# Make a function to fit the 5PL model
fit_5pl <- function(data) {
  drc::drm(
     value ~ intensity, 
    data = data, 
    fct = drc::LL.5(names = c("Slope", "Lower", "Upper", "EC50", "Asym"))
  )
}

# generate model for each cytokine
test_fit <- test %>% 
  nest(-cytokine) %>% 
  mutate(fit = map(data, fit_5pl))

然后,我在尝试将这些模型应用于实验数据时陷入困境。我尝试创建一个循环并模拟给定示例中的工作,但无法管理它!

任何建议,特别是使用 tidyverse 或 tidymodels 将不胜感激!很高兴还包括我尝试过的方法,但到目前为止还没有奏效。非常感谢!

r dplyr model tidymodels
1个回答
0
投票

也许您正在寻找类似的东西,并得到

broom::augment
的帮助。

test |> 
  # make a variable that separates the standards from the experimental data
  mutate(type = ifelse(str_detect(condition, "standard"), "standard", "experiment")) |> 
  nest(.by = c(cytokine, type)) |> 
  # we want 1 row per cytokine
  pivot_wider(names_from = type, values_from = data) |> 
  mutate(
    # fit the standard curve
    fit = map(standard, fit_5pl),
    # then predict the values for the experimental condition
    predicted = map2(fit, experiment, \(m, nd) broom::augment(m, newdata = nd))
  ) |> 
  unnest(predicted) |> 
  select(cytokine, condition, intensity, .fitted)
# A tibble: 3 × 4
  cytokine condition   intensity .fitted
  <fct>    <fct>           <dbl>   <dbl>
1 IL1      experiment1       0.5   389. 
2 IL1      experiment2       0.7   621. 
3 CXCL1    experiment3       0.1    41.7
© www.soinside.com 2019 - 2024. All rights reserved.