[R] multinomial conditional logit models

John Hendrickx john_hendrickx at yahoo.com
Thu Jan 30 20:38:03 CET 2003


Thanks, that did the trick. My "mclgen" function can be written as

mclgen <- function (datamat,catvar) {
	ncat <- nlevels(catvar)
	perschoice<-as.data.frame(rep(datamat,ncat))
	perschoice<-reshape(perschoice,direction="long",
	varying=lapply(names(datamat),rep,ncat),
	timevar="newy")
	perschoice<-perschoice[sort.list(perschoice$id),]
	dep<-parse(text=paste("perschoice$",substitute(catvar),sep=""))
	perschoice$depvar<-as.numeric(eval(dep)==perschoice$newy)
	perschoice
}

I'd still appreciate the help of R-listers on how to use the value of
"catvar" on the left-hand side of an expression within a function
(perschoice$"valueof(catvar)"<-perschoice$newy), and how to get R to
drop the reference category of a factor in an interaction effect
without the main effect (in
"clogit(depvar~occ+occ:educ+occ:black+strata(id),data=pc)").

But many thanks for the help so far!

John Hendrickx

--- Thomas Lumley <tlumley at u.washington.edu> wrote:
> On Thu, 30 Jan 2003, John Hendrickx wrote:
> 
> > The only problem though is the last step, specifying a list of
> varying
> > variables. It should be possible to generate this from
> "names(dset)"
> > but I can't get it right. "as.list(rep(names(dset),2))" produces
> a
> > list with four elements rather than a list with 2 components each
> > containing two elements. "dim()" gives a matrix as a result.
> Could
> > someone show me how to create
> "list(x1=c("X1","X1"),x2=c("X2","X2"))"
> > from "names(dset)"?
> 
>    lapply(names(dset),rep,2)
> gives
>  [[1]]
> [1] "X1" "X1"
> 
> [[2]]
> [1] "X2" "X2"
> 
> 	-thomas
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> http://www.stat.math.ethz.ch/mailman/listinfo/r-help




More information about the R-help mailing list