我想编写一个适合线性模型的函数。我想用它来建立不同的模型并检查残差的正态性。预测变量相同,但响应列因模型而异。我想使用一个可以指定响应变量是什么的函数。我该怎么做?以下代码不起作用。我想使用相同的功能,并使用response1和response2检查残差的正态性。
=FILTER({calculateOT($G5:$G, $H5:$H, CH5:CH, CI5:CI, CJ3)}, $B5:$B<>"")
答案 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