r语言optim函数给不同的初值为啥结果不同

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了r语言optim函数给不同的初值为啥结果不同相关的知识,希望对你有一定的参考价值。

参考技术A 用内置函数optim()optim(par,fun,lower,upper,method)大致用到这5个参数par是初始值,你选离你峰值差不远的xfun是生成你正弦波的函数lower和upper定义域method用"BFGS"牛顿迭代法,或者"L-BFGS-B"升级版牛顿迭代法。以下是得到的结果,我用f(x)=x^2-2*x+1试了以下>optim(3,fun,lower=-5,upper=5,method="BFGS")$par[1]1#x值$value[1]0#y值$countsfunctiongradient#不知道是什么4444$convergence[1]52#算了多少次收敛 参考技术B -res$value

>##初始似然值

>L0<-sum(s1)*log(0.5)+sum(s2)*log(0.5)

>##拟合度计算

>##结果输出

>##p^2的值

>cat("roh = ",(L0-LL)/L0)

>##修正的p^2值

>cat("rohbar=",(L0-(LL-length(b)))/L0)

>print(res)

>print(tval)
-res$value

>##初始似然值

>L0<-sum(s1)*log(0.5)+sum(s2)*log(0.5)

>##拟合度计算

>##结果输出

>##p^2的值

>cat("roh = ",(L0-LL)/L0)

>##修正的p^2值

>cat("rohbar=",(L0-(LL-length(b)))/L0)

>print(res)

>print(tval)
-res$value

>##初始似然值

>L0<-sum(s1)*log(0.5)+sum(s2)*log(0.5)

>##拟合度计算

>##结果输出

>##p^2的值

>cat("roh = ",(L0-LL)/L0)

>##修正的p^2值

>cat("rohbar=",(L0-(LL-length(b)))/L0)

>print(res)

>print(tval)本回答被提问者采纳

为啥这两个高(64bx64b)函数会给出不同的结果?

【中文标题】为啥这两个高(64bx64b)函数会给出不同的结果?【英文标题】:Why do those two high(64bx64b) functions give different results?为什么这两个高(64bx64b)函数会给出不同的结果? 【发布时间】:2015-07-01 09:44:19 【问题描述】:
static __inline__ uint64_t mulhilo64(uint64_t a, uint64_t b, uint64_t* hip) 
        __uint128_t product = ((__uint128_t)a)*((__uint128_t)b);
        *hip = product>>64;
        return (uint64_t)product;

我正在尝试在 AVX2 上使用 MULX 内在函数编写以下内容(更具体地说,BMI2)。但他们没有给出相同的结果。

static __inline__ uint64_t mulhilo64(uint64_t  a, uint64_t b, uint64_t *c)
     return _mulx_u64(a, b, &c);

【问题讨论】:

你能提供一个简单的测试用例和每个实现的结果吗? 第一个函数是一段很长的代码的一部分。我只是用第二个功能替换它,没有别的。你认为它们也应该是一样的吗? 我在第二个函数中发现了一个可能的错误(见下面的答案)——我只是想把一个简单的测试用例放在一起,看看我是否可以复制这个问题。 【参考方案1】:

看起来这个函数可能是错误的:

static __inline__ uint64_t mulhilo64(uint64_t  a, uint64_t b, uint64_t *c)
     return _mulx_u64(a, b, &c);

应该是这样的:

static __inline__ uint64_t mulhilo64(uint64_t  a, uint64_t b, uint64_t *c)
     return _mulx_u64(a, b, c);
                        // ^

请注意,编译时启用警告(例如gcc -Wall ...)有助于捕捉此类简单错误。

【讨论】:

以上是关于r语言optim函数给不同的初值为啥结果不同的主要内容,如果未能解决你的问题,请参考以下文章

R语言optimize函数一维优化实战

R语言optim函数进行函数优化实战(和lm函数进行对比)

R语言 table()函数

R语言使用OptimalCutpoints包的optimal.cutpoints函数对单变量进行ROC分析计算约登值(约登指数Youden Index)寻找最佳阈值(cutoff)

R语言的方差结果不同[重复]

r语言横坐标设置不同颜色