R 中的指数函数返回 0 作为值

Exponential function in R returning 0 as a value

谁能告诉我一个解决方案来避免 R 程序中 y 的结果为 0

y= 1-(1/(1+exp(-x)))

exp(-x) > 0 但对于像 100 这样的 x 值,y 的结果是 0。 我需要获取大于 0 的小数字来应用 log(y) 而不会得到 -Inf 结果。

你可以用一些简单的数学来解决这个问题:

x <- 1
1-(1/(1+exp(-x)))
#[1] 0.2689414
1/(exp(x) + 1)
#[1] 0.2689414

x <- 100
1-(1/(1+exp(-x)))
#[1] 0
1/(exp(x) + 1)
#[1] 3.720076e-44

如果您对大 x 值的 log(y) 感兴趣,请忽略 + 1,y 近似于 exp(-x),对于大 x 有很小的误差。因此,对于大 x.

,log(y) == -x

你的老师可能希望你做数学题。