查找分布的最大值

时间:2016-10-16 02:17:31

标签: r

问题:我有一个函数X,想要找到最大化y的值X(y)

set.seed(8)
A <- seq (1:20)
B <- c(0,rbinom(18,1,0.5),1)

X <- function (y) {
 fx <- prod(1*B-pnorm(A-y)*(-1)^B)
 fx
}

X(10)
[1] 3.615998e-40
X(11)
[1] 5.624095e-53

我知道我可以将X(0)循环到X(20),但这非常耗时。有没有更聪明的方法可以让我需要?

1 个答案:

答案 0 :(得分:0)

optimize()收敛到区间中的最大值:

optimize(X,c(0,20),maximum=TRUE)
## $maximum
## [1] 19.99993
## 
## $objective
## [1] 0

绘制曲线证实了这一点。

x <- seq(0,20,length=1000)
y <- sapply(x,X)
plot(x,y,type="l")

enter image description here