在 R 中具有 if 条件的向量上执行变换



我正在从PHP脚本在R中运行回归模型。事实上,我正在执行回归...

fit <- lm(VIEWS ~ TREND + STUNDE + WOCHENTAG + MONAT * JAHR)

。然后对结果应用 box-cox-transformation ,在我的情况下有意义的范围内获取"最佳"λ。

bc <- boxcox(fit, lambda = seq(0, 0.5, 0.005))
lambda <- bc$x[which.max(bc$y)]

如果 lamda 不为 0,我应用实际转换,一切正常:

VIEWS_BOX <- VIEWS^lambda - 1

我通过将 VIEWS 替换为 VIEWS_BOX 来重复回归。

我的问题:我需要为 lambda = 0 的情况编写一个 if 条件,我读了很多书并尝试了很多东西,但它就是不起作用。例如,我尝试过:

VIEWS_BOX <- ifelse(rep(lambda = 0, length(VIEWS)), ln(VIEWS), VIEWS^lambda - 1)

谁能帮我?提前感谢!

在你的代码中,你使用了lambda = 0,但=意味着赋值。它应该是lambda == 0的,因为==意味着比较。

ifelse是没有必要的。您可以使用:

VIEWS_BOX <- if (lambda) VIEWS^lambda - 1 else log(VIEWS)

最新更新