传递要在模型公式中使用的列名

时间:2019-07-20 05:30:25

标签: r

我想编写一个适合线性模型的函​​数。我想用它来建立不同的模型并检查残差的正态性。预测变量相同,但响应列因模型而异。我想使用一个可以指定响应变量是什么的函数。我该怎么做?以下代码不起作用。我想使用相同的功能,并使用response1和response2检查残差的正态性。

=FILTER({calculateOT($G5:$G, $H5:$H, CH5:CH, CI5:CI, CJ3)}, $B5:$B<>"")

1 个答案:

答案 0 :(得分:2)

我们可以使用as.formula将字符串转换为formula

check_normality =  function(df, response) {
   lm1 = lm(as.formula(paste0(response, "~ var1 + var2 + var3")), data = df)
   normality_test = shapiro.test(lm1$residuals)
   p_value = normality_test$p.value
   p_value >= 0.05
}

check_normality(df, "response1")
#[1] TRUE
check_normality(df, "response2")
#[1] TRUE