Hi,
I am at the end of my wit to figure out how to run the optim function on
a list.
Basically, I have a data set of three columns as "Site", "Pool" and
"Positivity" ( the full data set is copied at the end). I want to run
the maximal likelihood estimation separately on subsets split by "Site"
data<-read.table(...)
sp<-split(data,data$Site)
# My likelihood function is
like<-function(p,...){
for(i in 1:length(Pool)){
if(Positivity[i]==1)
log.l[i]<-log(1-(1-p)^Pool[i])
else log.l[i]<-Pool[i]*log(1-p)
}
return(sum(log.l))
}
# Then I run
lapply(sp,function(x) optim (0.1,like,control=list(fnscale=-1)))
#But it gives an estimation based on the full data, not separately on
sp[[1]], sp[[2]],... I tried do.call without success. So, your help
would be appreciated.
Weidong Gu
Department of Medicine
University of Alabama, Birmingham
1900 University Blvd., Birmingham, Alabama 35294
Email: [EMAIL PROTECTED]
PH: (205)-975-9053
Site Pool Positivity
UBA_1
22
0
UBA_1
50
0
UBA_1
23
0
UBA_1
25
0
UBA_1
35
0
UBA_1
24
0
UBA_1
26
0
Cham_res
43
0
Cham_res
45
0
Cham_res
34
0
Cham_res
24
0
Cham_res
21
0
Cham_res
16
0
Cham_res
28
0
Cham_res
50
0
Cham_res
50
1
Cham_res
39
1
UBA_2
16
0
UBA_2
18
1
UBA_2
42
1
UBA_2
35
1
UBA_2
50
1
UBA_2
26
0
UBA_2
20
0
UBA_2
16
0
UBA_2
19
0
UBA_2
50
0
UBA_2
26
0
UBA_2
13
1
UBA_2
30
1
UBA_3
17
0
UBA_3
20
0
UBA_3
19
0
UBA_3
50
0
UBA_3
24
1
UBA_3
18
1
UBA_3
16
1
UBA_3
14
0
UBA_3
12
0
UBA_3
15
0
UBA_3
11
0
UBA_3
20
1
UBA_3
19
1
UBA_3
31
1
UBA_4
12
0
UBA_4
11
0
UBA_4
12
0
UBA_4
21
0
UBA_4
33
0
UBA_4
15
0
UBA_4
10
0
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.