数学建模社区-数学中国
标题:
求高手指点写 ell,optim code
[打印本页]
作者:
HongYu_柳
时间:
2012-12-10 04:20
标题:
求高手指点写 ell,optim code
mu<-0
1 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+ S
Q1:写一个ell function compute log-likelihood od x.
% e4 I* c7 D4 l1 e
Q2用 R optim来maximize这个likelihood.
- l5 }5 ^+ A: A3 a! d
2 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 e
7 Y3 y' h2 J/ b9 K- J( v
我的求最大值试子是init<-c(mu=0,sigma2=1)
+ D- A& y: |8 O5 n2 B, j2 C
0 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