密度函数的模式使用优化

时间:2015-12-11 07:52:42

标签: r optimization

我想找到使用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的更多通用函数

1 个答案:

答案 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