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: wgu@uab.edu
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]]

