Jump to content


Photo

threshold parameter model

threshold natural progression estimate

  • Please log in to reply
3 replies to this topic

#1 P-A Leboeuf

P-A Leboeuf

    Newbie

  • Members
  • Pip
  • 2 posts

Posted 09 March 2018 - 05:17 PM

Hi,
I a new user of Phoenix winNonlin and :

 

I want to model strange and poor data. Someone proposed me to try a hockey stick model.

It just the combination of two linear model, but I want to estimate the threshold. I don't want to set by myself the threshold. I am suspecting a "grammarian" error in my text editor. Unfortunately, it is not estimated in the "theta" table and it is like the initial estimate without variation just like we freeze the parameters

 
 
test(){
covariate©
E = ((C < threshold)? (Alpha * (1 + Beta*C)) : (Alpha * (1 + Beta2*C)) )
error(EEps = 1)
observe(EObs© = E + EEps)
stparm(Alpha = tvAlpha)
stparm(Beta = tvBeta)
stparm(Beta2 = tvBeta2)
stparm(threshold= tvlthreshold)
fixef(tvAlpha = c(, 80, ))
fixef(tvBeta = c(, -1, ))
fixef(tvBeta2 = c(, -2, ))
fixef(tvlthreshold = c(,20,))
}

 

 

thanks, 



#2 smouksassi1

smouksassi1

    Advanced Member

  • Members
  • PipPipPip
  • 231 posts
  • LocationMontreal

Posted 09 March 2018 - 06:43 PM

Hi Paul,
you need to be careful on how to define the joining point between the two parts of the curve:
 
 
test(){
covariate(x)
E =  x<= threshold ? intercept :   (threshold*slope)- x* slope
error(EEps = 1)
observe(y(x) = E + EEps)
stparm(intercept = tvintercept)
stparm(slope = tvslope)
fixef(threshold = c(, 40, ))
fixef(tvintercept = c(, 1, ))
fixef(tvslope = c(, 4.5, ))
}
 
here I show how to fit a curve that start flat then it starts to go down with x see the attached phoenix project.

Attached Files



#3 Simon Davis

Simon Davis

    Advanced Member

  • Administrators
  • 1,318 posts

Posted 12 March 2018 - 11:05 AM

If you're not sure about the inflection/threshold point, here is a simpler log-linear model derived from PD30 in Gabrielsson and Weiner if that helps you any?

 

test(){
    covariate©
    E = m * ln(C0+ C)
    error(EEps = 1)
    observe(EObs© = E + EEps)
    fixef(m = c(, 40, ), C0 = c(, 1.6, ))
}

 

 Simon.



#4 P-A Leboeuf

P-A Leboeuf

    Newbie

  • Members
  • Pip
  • 2 posts

Posted 12 March 2018 - 05:29 PM

Thanks to both of you!

 

I found my solution in the project of M.Mouksassi

 

test(){
covariate©
E =  C<= threshold ? intercept :  (intercept+threshold*slope )  - C*slope
error(EEps = 1)
observe(y© = E + EEps)
stparm(intercept = tvintercept)
stparm(slope = tvslope)
fixef(threshold = c(, 20, ))
fixef(tvintercept = c(, 70, ))
fixef(tvslope = c(, 5, ))
}





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users