数学建模社区-数学中国

标题: 求高手指点写 ell,optim code [打印本页]

作者: HongYu_柳    时间: 2012-12-10 04:20
标题: 求高手指点写 ell,optim code
mu<-01 R# o% r5 D2 c# `
sigma2<-1
8 j+ @% O* \3 L3 v/ I  n<-20
0 z4 n, g6 D1 T  L<--0.25+ Z; O% s8 y- t, h  J
  y<-rnorm(n,mu,sqrt(sigma2))
3 O1 c. ?3 Y, W0 m7 ?, p  x<-y" `' a* g4 S  l' w4 m" F  t
  c<-(y<=L)* t# r2 m( d  _6 p5 A4 H9 S# n5 R
x[c]<-L& Y& T) ^( j8 G3 _! m
x
, a' a# U6 ~, F  _1 t9 |5 i, O+ SQ1:写一个ell function compute log-likelihood od x.% e4 I* c7 D4 l1 e
Q2用 R optim来maximize这个likelihood.
- l5 }5 ^+ A: A3 a! d2 Y. t6 n6 V- c# S: \0 T& x& C. S, v
我现在写了一个ell的试子了,但是怎么也求不出最大值。6 A4 {! k, B  q7 C7 k  y6 j" a% W' n
theta<-c(mu,sigma2)
3 J$ Q2 g: A( m, [ ell<-function(theta,x,L=-0.25){9 i/ B: z" B  h9 ?" S
stopifnot(is.vector(theta),length(theta)==2)/ u+ o+ ^3 `2 |1 U* {. y
if(theta[2]<=0)
% g1 i9 f1 u% p, S" B4 I* P return(NA)) u2 b# Y1 A: c6 j
else(c<-(x==L))/ b7 [/ u8 S. r' |/ b8 e3 }: W
sum(dnorm(x[c],theta[1],sqrt(theta[2]),log=TRUE))& x" V! X+ g9 W3 k5 e3 i" Q
sum2(dnorm(x[!c],theta[1],sqrt(theta[2]),lop=true))}
3 z$ e: ^! [& X+ c/ H& T1 K2 e7 Y3 y' h2 J/ b9 K- J( v
我的求最大值试子是init<-c(mu=0,sigma2=1)
+ D- A& y: |8 O5 n2 B, j2 C0 G2 F; U5 `# H* n' v: {5 m/ v$ k
opt<-optim(par=init,fn=ell,method="L-BFGS-B",0 y8 c% }2 j5 v* u( }8 d# w: _* b
  lower=c(-Inf,0.01),6 `7 ~; |$ E8 U2 u
  upper=c(Inf,Inf),hessian=TRUE,
* G7 D( \6 N- Y/ _) I& j" P* D  control=list(fnscale=-1))* {4 |! u* B9 @2 K- R1 @% A
谁能看看哪里错了。谢谢了。
作者: zxtttxxqm    时间: 2012-12-11 14:05
这个的话你去问版主吧




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5