[R] optim function with meta parameters

Alberto Casetta alberto.casetta at satt.biz
Fri Dec 17 16:07:02 CET 2010


Hi.
I have a dataset with 4 columns. In the first and second column I have 
the same qualitative variable referred to different teams of people. 
There are 10 teams in total and they compete against each other to 
perform a certain task whose result is stored in the third column for 
the team recorded in the first column, and in the fourth column for the 
team in the second column.
For example, the first row of the dataset is:
team1   team2      2     3
that means that team1 performed the task competing against team 2 and 
got 2 points while team 2 got 3 points. Every working team competes 
against all other 9. It's exactly like a soccer league.

I have 190 observations in total and I need to estimate through a MLE 
the parameters of a poisson distribution that drive the results.

Assuming the independency of the results, I wrote the following code 
calculating the log-likelihood of the double poisson derived:

sa0910<-read.csv("c:/csv/sa0910.csv",header=T,sep=",")
est<-c()
poisson.lik<-function(theta,x){
lambda<-theta[1]
mu<-theta[2]
n<-length(data[,1])
logl<-sum(x[,1])*log(lambda)-n*lambda+sum(x[,2])*log(mu)-n*mu
return(-logl)
}
for(i in 1:10){
data<-data.frame(subset(sa0910$FTHG,sa0910$Team1==levels(sa0910$Team1)[i]),subset(sa0910$FTAG,sa0910$Team2==levels(sa0910$Team2)[i])) 

est[i]<-optim(c(1,1),p.lik,x=data,method="BFGS",hessian=T)
}

Now I should be able to do the task defining 
lambda=alfa(i)*beta(j)*gamma and mu=alfa(j)*beta(i) where i indicates 
team1 and j team2, while gamma is some sort of "home" advantage.
I have troubles to estimate alfa, beta and gamma.
Anyone can help?
Thank you so much!
Cordiali saluti / Best regards
Alberto Casetta

--
SATT S.r.l.
Via Magnadola, 56
I-31045 Motta di Livenza (TV)
Tel. +39 (0)422 768529
Fax +39 (0)422 766108
http://www.satt.biz



More information about the R-help mailing list