小编r.s*_*ent的帖子

为什么R中的optimx没有给出这个简单的非参数似然最大化的正确解?

optimx()是否提供了错误的解决方案,或者我错过了一个简单的观点?谢谢!

我试图最大化一个非常简单的可能性.在参数上未指定F的分布的意义上,这是非参数似然性.相反,对于每个观察到的xi,f(xi)=pi因此log(Likelihood)=Sum(log(f(xi)))=Sum(log(pi)).

我试图最大化的函数是:sum(log(pi))+lamda(sum(pi-1)) where sum(pi)=1(即这是一个约束最大化问题,可以使用拉格朗日乘数来解决).

这个问题的答案是数据点的数量pi=1/n在哪里n.但是,optimx似乎没有给出这个解决方案.有没有人有任何想法.如果n=2,我正在最大化的功能是log(p1)+log(p2)+lamda(p1+p2-1).

这是我的代码和R的输出:

n=2
log.like=function(p)
{
  lamda=p[n+1]
  ll=0
  for(i in 1:n){
    temp = log(p[i])+lamda*p[i]-lamda/(n)
    ll=ll+temp
  }
  return(-ll)
}


mle = optimx(c(0.48,.52,-1.5),
             log.like,
             lower=c(rep(0.1,2),-3),
             upper=c(rep(.9,2),-1),
             method = "L-BFGS-B")

> mle
             par  fvalues   method fns grs itns conv  KKT1 KKT2 xtimes
1 0.9, 0.9, -1.0 1.010721 L-BFGS-B   8   8 NULL    0 FALSE   NA      0
Run Code Online (Sandbox Code Playgroud)

等式的解决方案n=2p1=p2=1/2lamda=-2.但是,使用optimx时我没有得到这个.任何的想法?

optimization r maximization

9
推荐指数
1
解决办法
5709
查看次数

确定R中另一个列表中包含哪些列表对象(子集)

感谢您对我以前的问题的回复.我有两个列表:list1和list2.我想知道list1的每个对象是否包含在list2的每个对象中.例如:

> list1
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

> list2
[[1]]
[1] 1 2 3

[[2]]
[1] 2 3

[[3]]
[1] 2 3
Run Code Online (Sandbox Code Playgroud)

以下是我的问题:1.)我如何要求R检查对象是否是列表中另一个对象的子集?例如,我想检查是否list2[[3]]={2,3}包含在(子集)中list1[[2]]={2}.当我这样做时list2[[3]] %in% list1[[2]],我明白了[1] TRUE FALSE.但是,这不是我想做的事情?!我只想检查是否list2[[3]]list1[[2]]集合理论概念中的{3}的{2,3} \子集?我不想执行元素检查,因为R似乎正在使用%in%命令.有什么建议?

2.)是否有某种方法可以有效地进行所有成对子集比较(即,对于所有组合的list1[[i]]子集?一旦问题1的问题可以解决吗?感谢您的反馈!list2[[j]]i,jouter(list1,list2, func.subset)

comparison r list

3
推荐指数
1
解决办法
4899
查看次数

标签 统计

r ×2

comparison ×1

list ×1

maximization ×1

optimization ×1