首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过因子拟合和校准数据帧

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

Stack Overflow用户
提问于 2017-06-30 06:23:18
回答 1查看 107关注 0票数 0

首先,我使用RStudio。我有一个数据帧(APD),我想将w.r.t拟合到因子Serial_number。拟合是一种lm拟合。然后我想使用这个fit来做一个校准(calibrate() out of the investr package)。

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

下面是数据:Data

目前,我使用以下几行代码通过Serial_number进行拟合:

代码语言:javascript
复制
Coefficients<- APD %>% 
  group_by(Serial_number) %>% 
  do(tidy(fit<- lm(log(log(Amplification)) ~ Voltage_transformed, .)))

但是在这里,我不能应用calibrate()-function。Calibrate函数需要一个继承自"lm“的对象。而tidy只适用于S3/S4对象。

你有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-13 03:42:56

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

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

代码语言:javascript
复制
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(...)应该是不言而喻的: group by byvar,在每个子集上使用带有给定公式的lm,并且不要简化结果。简化结果真的只对交互式工作有用。在脚本中,最好确切地知道将返回什么。在本例中,是一个列表。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44835883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档