通过因子拟合和校准数据帧

时间:2017-06-29 22:23:18

标签: r

首先,我使用RStudio。 我有一个数据框(APD),我想将w.r.t与因子Serial_number相匹配。合身是合身的。然后我想用这个拟合进行校准(校准()来自investr-package。

以下是我的数据的示例图片:

Data

以下是数据:Data

目前我通过Serial_number使用以下行:

Coefficients<- APD %>% 
  group_by(Serial_number) %>% 
  do(tidy(fit<- lm(log(log(Amplification)) ~ Voltage_transformed, .)))

但是在这里,我不能应用calibrate() - 函数。校准函数需要一个继承自&#34; lm&#34;的对象。并且整洁仅适用于S3 / S4对象。

你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在您发布的代码中,您尝试从每个模型中rbind 预测值,而不是系数。系数函数只是coefficients(object)

我还建议取消嵌套代码,因为这会使以后难以阅读和更改。这里有两个通用函数(每个都做出假设,因此根据需要进行编辑):

lm_by_variable <- function(data_, formula_, byvar) {
  by(
    data_,
    data_[[byvar]],
    FUN      = lm,
    formula  = formula_,
    simplify = FALSE
  )
}


combine_coefficients <- function(fit_list) {
  all_coefficients <- lapply(fit_list, coefficients)
  do.call('rbind', all_coefficients)
}

lm_by_variable(...)应该是不言自明的:按byvar分组,在每个子集上使用给定公式的lm,而不是简化结果。简化结果实际上只对交互式工作有用。在脚本中,最好确切地知道将返回什么。在这种情况下,列表。

下一个函数combine_coefficients(...)返回拟合系数的matrix。它假设fit_list中的每个拟合模型都具有相同的术语。我们可以添加逻辑以使其更加健壮,但在这种情况下似乎没有必要。