我想找到使用R的单变量密度函数的模式(x值) 优化功能
即。对于标准正态函数f(x)~N(3,1),模式应该是均值,即x = 3.
我尝试了以下内容:
# Define the function
g <- function(x) dnorm(x = x, mean = 3, sd = 1)
Dvec <- c(-1000, 1000)
# First get the gradient of the function
gradfun <- function(x){grad(g, x)}
# Find the maximum value
x_mode <- optimize(f=g,interval = Dvec, maximum=TRUE)
x_mode
这会将模式的错误值设为:
$maximum
[1] 999.9999
$objective
[1] 0
哪个不正确,即给出(-1000,1000)区间的最大值,而不是x = 3.
任何人都可以帮助编辑优化代码。
如果这个简单的测试用例可以用来传递x的更多通用函数
答案 0 :(得分:0)
我会对此使用optim,避免提及间隔。您可以通过在原始猜测的时间间隔内取最大值函数来定制种子:
guessedInterval = min(Dvec):max(Dvec)
superStarSeed = guessedInterval[which.max(g(guessedInterval))]
optim(par=superStarSeed, fn=function(y) -g(y))
#$par
#[1] 3
#$value
#[1] -0.3989423
#$counts
#function gradient
# 24 NA
#$convergence
#[1] 0
#$message
#NULL