数学建模社区-数学中国
标题:
求高手指点写 ell,optim code
[打印本页]
作者:
HongYu_柳
时间:
2012-12-10 04:20
标题:
求高手指点写 ell,optim code
mu<-0
6 H: l, s: G/ g/ ]" a8 i
sigma2<-1
; o( A4 p2 ~3 y( y6 {0 j6 I
n<-20
4 [6 D3 d0 ?( j
L<--0.25
# m7 n# Z4 O4 Z5 {
y<-rnorm(n,mu,sqrt(sigma2))
1 A6 C7 u5 \7 F; {
x<-y
" K8 l! o0 S( T2 p/ Z2 M
c<-(y<=L)
8 k/ R1 d3 Q( k1 [) e; z
x[c]<-L
, R Q' o1 v, G& L
x
* ^8 A+ o1 N9 f9 l
Q1:写一个ell function compute log-likelihood od x.
% }1 y: V' a5 y9 _4 J1 Q
Q2用 R optim来maximize这个likelihood.
& }7 d l1 P- F# X3 X1 T, }
: R* x: n4 U! \) W
我现在写了一个ell的试子了,但是怎么也求不出最大值。
/ z- U2 _: F. G, s+ q
theta<-c(mu,sigma2)
. Y$ ]: @) B* L% H! H
ell<-function(theta,x,L=-0.25){
) i0 j% M2 c( f) \ `' \
stopifnot(is.vector(theta),length(theta)==2)
g7 N* w4 |' N" S5 C
if(theta[2]<=0)
) c& K( t# |0 u( q3 Q# T
return(NA)
$ V' r8 ~2 s4 ^$ j8 X5 D( E# T
else(c<-(x==L))
" ` F K+ w0 O$ @! r0 m0 Z) ^
sum(dnorm(x[c],theta[1],sqrt(theta[2]),log=TRUE))
6 v' |1 w. j& q; |& u6 K/ o
sum2(dnorm(x[!c],theta[1],sqrt(theta[2]),lop=true))}
* O/ B7 P$ \8 m7 v
1 |# w( S: h4 T" L: y l
我的求最大值试子是init<-c(mu=0,sigma2=1)
G7 w, O4 n2 p P2 x) I+ }8 d
! l* u2 O$ T! ~7 Z" z
opt<-optim(par=init,fn=ell,method="L-BFGS-B",
7 D+ [1 N& B! Y
lower=c(-Inf,0.01),
1 U: G. ^; s1 d
upper=c(Inf,Inf),hessian=TRUE,
0 F d1 O y1 f: p$ o! f
control=list(fnscale=-1))
$ Q7 o7 t- V" h9 k8 B
谁能看看哪里错了。谢谢了。
作者:
zxtttxxqm
时间:
2012-12-11 14:05
这个的话你去问版主吧
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5