我正在做一个线性回归,我想修复一些输入。我找到了使用offset
. 让我们在示例中查看它:
set.seed(145)
df <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10), d = rnorm(10))
summary(lm(formula = a ~ . + offset(0.1*c) - c + offset(0.05*d) - d, data = df))
问题是我有更多的变量,我想自动生成我的 lm 公式。
假设,我想传递输入的名称(即 lm 中的数据列)和它的 coefs 的值,例如以下面的方式:
inputs_fix <- c("c", "d")
inputs_fix_coef <- c(0.1, 0.05)
然后我需要一个函数来为我编写上面的公式,但我不知道如何编写offset(0.1*c) - c + offset(0.05*d) - d
具有inputs_fix
和inputs_fix_coef
对象的表达式。
可能吗?还有另一种固定系数的方法(更优雅)?感谢任何帮助
更新paste
:使用@Jan as.formula
van der Laan 建议创建公式
my.formula <- paste0(" + offset(", inputs_fix_coef, "*", inputs_fix, ") - ", inputs_fix, collapse = " ")
lm.fit <- lm(formula = as.formula(paste0("a ~ .", mi.expresion)), data = df))
这不是很清楚,但它将所有输入保存到 lm 对象lm.fit$model
中,这些输入在@Jan van der Laan 答案中丢失。并且不需要复制 data.frame