[R] significant difference between Gompertz hazard parameters?

T-Bone ekt.batey at gmail.com
Sun Jul 8 00:06:30 CEST 2012


Hi, David.

Thank you for the suggestions.  If it makes a difference, I've included more
information on the data and how the Gompertz model was fit to each sample
below.  I'm sure my methods are inefficient, and I should utilizing R's
process of vectorization.  Thanks, again.

--Trey


David Winsemius wrote
> 
> If you supply some data, possibly generated through simulations, you can
> test for differences in fit using parametric fits.
> 

The data come from two assemblages of skeletons (each from a different
cemetery), a type of dataset common for anthropologists/archaeologists.  The
model was fit to counts of skeletons assigned to one of four age-range
categories (based on observed skeletal morphology).  For example:

pop1 <-
structure(c(15,20,35,50,20,35,50,Inf,50,166,88,24),.Dim=as.integer(c(4,3)),.Dimnames=list(NULL,c("age.start","age.end","dead")))    
## age-structure of the cemetery

pop1_Gomp <- function(x,deaths=pop1)
	{
		a3=x[1]
		b3=x[2]
		shift<-15
		nrow<-NROW(deaths)
		
		S.t<-function(t)
			{
				return(exp(a3/b3*(1-exp(b3*(t-shift)))))
			}
		
		d<-S.t(deaths[1:nrow,1])-S.t(deaths[1:nrow,2])
    obs<-deaths[,3]
    lnlk<-as.numeric(crossprod(obs,log(d)))
    return(lnlk)
}
optim(c(0.01, 0.01),pop1_Gomp,control=list(fnscale=-1))

## output...
$par
[1] 0.03286343    0.04271132

$value
[1] -386.2922

$counts
function gradient 
     129       NA 

$convergence
[1] 0

$message
NULL
##################

In the original message, "pop2," representing a separate cemetery, had the
following age structure:

pop2 <-
structure(c(15,20,35,50,20,35,50,Inf,46,310,188,101),.Dim=as.integer(c(4,3)),.Dimnames=list(NULL,c("age.start","age.end","dead")))

...and the Gompertz parameters estimated using the function:

pop2_Gomp <- function(x,deaths=pop2)	
	{
		a3=x[1]
		b3=x[2]
		shift<-15
		nrow<-NROW(deaths)
		
		S.t<-function(t)
			{
				return(exp(a3/b3*(1-exp(b3*(t-shift)))))
			}
		
		d<-S.t(deaths[1:nrow,1])-S.t(deaths[1:nrow,2])
    obs<-deaths[,3]
    lnlk<-as.numeric(crossprod(obs,log(d)))
    return(lnlk)
}

optim(c(0.01, 0.01),pop2_Gomp,control=list(fnscale=-1))
#######################
$par
[1] 0.02207778     0.04580059

$value
[1] -781.7549

$counts
function gradient 
      71       NA 

$convergence
[1] 0

$message
NULL


-----
Trey Batey---Anthropology Instructor
Division of Social Sciences
Mt. Hood Community College
Gresham, OR  97030
Alt. Email:  trey.batey[at]mhcc[dot]edu
--
View this message in context: http://r.789695.n4.nabble.com/significant-difference-between-Gompertz-hazard-parameters-tp4635018p4635736.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list