Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • cure model using stpm2

    Hi Listers,

    Following relative survival analysis, I am running a cure model on data looking at survival across 2 treatment groups as we spot a plateau of the curves over time. I adjust the model for age group as age is also a predictor for relative survival.

    I am using stpm2 in Stata 15. The model seems to be running OK but when I estimate median survival across the 2 groups by age, I am not able to obtain an estimate for the older group in teh control, which is the larger group of the 2.

    I used the following code:

    stpm2 group agec2 agec3 agec4 agec5, ///
    df(6) scale(hazard) bhazard(rate) ///
    nolog tvc(agec2 agec3 agec4 agec5) dftvc(3) cure

    predict survunc, centile(50) uncured ci

    bysort group agecat: g first = _n==1
    list group agecat survunc if first==1 , noobs

    This is the output

    group agecat survunc

    0 50-64 .86363831
    0 65-69 .80947781
    0 70-74 .7776575
    0 75-79 .72047229
    0 80-84 .

    1 50-64 1.1751034
    1 65-69 1.1392233
    1 70-74 1.1170875
    1 75-79 1.0751083
    1 80-84 .99885943


    There does not seem to be empty/missing cells and I have a rather large dataset (N = 15600). Using a greater centile (60) I am able to obtain an estimate but this does not resolve my issue. Obviously, this does not resolve my issue but I thought it is interesting...

    I am just wondering what could be going wrong with my set up. Any suggestion?

    Thanks,
    Laura

  • #2
    Hi Laura,

    I have just an updated version of stpm2 to SSC that should fix this problem. Hopefully it will be up in the next day or so. The problem was with a poor choice of upper and lower limits when using root finding to obtain estimates of the centiles.

    Paul

    Comment


    • #3
      Hi Paul,

      Thank you for the reply on the update. What's the best way to update the stpm2 command on my machine? uninstall and install again should work?

      Thanks,
      Laura

      Comment


      • #4
        Code:
         adoupdate stpm2, update

        Comment


        • #5
          Thanks!

          Comment


          • #6
            Hi Listers,

            I am still looking into the cure model using stpm2. I specify my stset command in a very straightforward way:

            stset surv, id(id) failure(fail==1) scale(365.24)

            surv is in days so I specify the scale to 365.24 to have years.

            However, when I request survival times in the uncured group the numbers are fractions of years (?)

            predict survunc, centile(50) uncured ci
            egen mean_rs = mean(survunc), by(sex agecat)
            tabdisp sex agecat if first, cellvar(mean_rs) format(%5.3fc)

            0 50-64 .86363831
            0 65-69 .80947781
            0 70-74 .7776575
            0 75-79 .72047229

            Would I be able to get months? I tried specifying the scale = scale(30.4) but the model does not seem to work as I get 0 (very small numbers) for the proportion of cured patients for all the records and the survival time does not appear to be related to the year fraction when using scale(365.24). If I multiply the survival time from the latter by 12 ()or example, based on the output above 0.834*12) the result is not comparable to the model where the scale was set to 30.4

            Any suggestion?

            Comment


            • #7
              Hi,

              You get different results because you are fitting a relative survival model where you have to incorporate expected mortality rates. These are usually in years and thus your analysis timescale should also be in years .

              You have two options (1) Multiply your predictions by 12. (2) Convert your expected mortality information and your analysis timescale to months.

              I think (1) is the easiest.

              Paul

              Comment


              • #8
                Thanks Paul. So would it be correct to multiply the results from Stata by 12. For example based on the output above:

                0 50-64 .86363831

                I could simply multiply .864*12 to identify the months

                is this correct?

                Laura

                Comment

                Working...
                X