- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试优化 R 中的一个函数
该函数是仅估计 mu
参数时负二项式的似然函数。这应该不是问题,因为该函数显然只有一个最大值。但是,我无法达到理想的结果。
需要优化的功能是:
EMV <- function(data, par) {
Mi <- par
Phi <- 2
N <- NROW(data)
Resultado <- log(Mi/(Mi + Phi))*sum(data) + N*Phi*log(Phi/(Mi + Phi))
return(Resultado)
}
数据是负二项式变量的向量,参数为2和2
data <- rnegbin(10000, mu = 2, theta = 2)
当我使用以下代码绘制具有 mu
作为变量的函数时:
x <- seq(0.1, 100, 0.02)
z <- EMV(data,0.1)
for (aux in x) {z <- rbind(z, EMV(data,aux))}
z <- z[2:NROW(z)]
plot(x,z)
我得到以下曲线:
并且z的最大值接近于参数值--> 2
x[which.max(z)]
但优化不适用于 BFGS
Error in optim(par = theta, fn = EMV, data = data, method = "BFGS") :
non-finite finite-difference value [1]
并且不会使用 SANN 来正确计算值,例如:
$par
[1] 5.19767e-05
$value
[1] -211981.8
$counts
function gradient
10000 NA
$convergence
[1] 0
$message
NULL
问题是:
optim
参数应该大于 0? optim
我要最大化函数? (我担心 optim
正在尝试最小化并且会变成一个非常小的值,函数返回最小值)最佳答案
最小化还是最大化?
虽然 ?optim
说它可以做最大化,但那是在括号里,所以默认是最小化:
fn: A function to be minimized (or maximized) ...
因此,如果我们想最大化一个目标函数,我们需要将一个-1
乘以它,然后最小化它。这是很常见的情况。在统计中,我们经常想找到最大对数似然,因此要使用 optim()
,我们别无选择,只能最小化负对数似然。
使用哪种方法?
如果我们只做一维最小化,我们应该使用方法"Brent"
。此方法允许我们指定搜索区域的下限和上限。搜索将从一个边界开始,并向另一个边界搜索,直到达到最小值或到达边界。这样的规范可以帮助您限制参数。比如你不希望mu
小于0,那么就设置lower = 0
即可。
当我们移动到二维或更高维度时,我们应该求助于“BFGS”
。在这种情况下,如果我们想限制我们的参数之一,比如 a
,为正数,我们需要进行对数变换 log_a = log(a)
,并重新参数化我们的目标函数使用 log_a
。现在,log_a
不受约束。当我们希望将多个参数约束为正数时也是如此。
如何更改代码?
EMV <- function(data, par) {
Mi <- par
Phi <- 2
N <- NROW(data)
Resultado <- log(Mi/(Mi + Phi))*sum(data) + N*Phi*log(Phi/(Mi + Phi))
return(-1 * Resultado)
}
optim(par = theta, fn = EMV, data = data, method = "Brent", lower = 0, upper = 1E5)
关于r - optim() 错误 : searching for global minimum for a univariate function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37738423/
我是 Haskell 术语的初学者。我必须做一个显示所有最低位置的练习。 例如: [1,2,3,1,1] => 0,3,4 这些是最小位置。 我尝试用两种方法来做到这一点,但这些都不起作用。 请有人帮
我需要找到整个矩阵的最小值,它是“坐标”。在像 这样的矩阵中 matrix = 8 7 6 5 4 3 2 1 最小值为 (2, 4) 处的 1。 最佳答案 这可以很简单地通过使用
给定一个正整数“l”和“r”。找到最小的数字“n”,使得 l r: cnt = 32 for i in range(l, r+1): s = bi
numpy.minimum 似乎不适用于复数: np.minimum(5+3*1j,4+30*1j) (4+30j) 我想保持最大幅度的值。它只比较实部。元素最小比较的任何其他功能? MATLAB m
鉴于数据库中的以下事实: foo(a, 3). foo(b, 2). foo(c, 4). foo(d, 3). foo(e, 2). foo(f, 6). foo(g, 3). foo(h, 2).
假设我们给出了给定图 G 的最小生成树 T(有 n 个顶点和 m 个边)和一条权重为 w 的新边 e = (u, v),我们将添加到 G 中。 I) 检查 T 是否仍然是 MST。II) 如果不是,请
我有一个名为“posts”的elasticsearch索引。 http://127.0.0.1:9200/posts/doc/_count返回{"count":240000,"_shards":{"t
我在 MySQL 中有一个表,名称如下 我有两件事要处理 1- 停用所有未使用的书籍 isActive = 1 - Active isActive = 0 - Inactive is_inuse =
我的站点位于 www.ethoma.com/wd/ . 如您所见,我已经使用自己的代码实现了主题和所有菜单。我想在我的网站上安装 WordPress,这样我就可以简单地在 WordPress 上输入我
当我在 bool 数组上使用 numpy 函数 minimum() 和 maximum() 时,结果类型打印为 numpy.int32。但是,与 numpy.int32 类型的比较失败(即使在转换之后
我在分布式系统中遇到分片移动问题。 【问题】 最初每个分区负责任意数量的分片。 (这个数字可以是任意的,因为系统支持将分片从一个分区移动到另一个分区) 然后一个新的分区来了,系统需要重新分片。目标是使
我有 3 个这样的观点: 我需要定义一个约束,以便在蓝色或芥末色垂直调整大小时,红色 View 将保持在任一上 View 的最小距离处,例如 或者 那么我怎样才能达到那个结果呢??? 最佳答案 建立从
题目地址:https://leetcode.com/problems/minimum-area-rectangle/description/ 题目描述 Given a set of points
题目地址:https://leetcode-cn.com/problems/path-with-minimum-effort/ 题目描述 你准备参加一场远足活动。给你一个二维 rows x col
题目地址:https://leetcode.com/problems/minimum-absolute-difference/ 题目描述 Given an array of distinct in
题目地址:https://leetcode.com/problems/minimum-height-trees/description/ 题目描述 Fora undirected graph wi
题目地址:https://leetcode.com/problems/minimum-time-difference/description/ 题目描述: Given a list of 24-h
题目地址: https://leetcode.com/problems/minimum-genetic-mutation/description/ 题目描述 Agene string can be
你们能帮我解决一些我被困的家庭作业问题吗? 完整二叉树中的局部最小值被定义为小于其所有邻居(邻居 = 父、左子、右子)的节点。 我需要在给定的完整二叉树中找到一个局部最小值,它的每个节点都有不同的数字
(defun *smaller* (x y) ( if (> x y) y x)) (defun *minimum* (lst) (do ((numbers lst (cdr
我是一名优秀的程序员,十分优秀!