Given a hazard ratio($HR$) as $$𝐻𝑅_{b}=ℎ𝑎𝑧𝑎𝑟𝑑(b)/ℎ𝑎𝑧𝑎𝑟𝑑(a)$$ and another hazard ratio as $$𝐻𝑅_{c}=ℎ𝑎𝑧𝑎𝑟𝑑(c)/ℎ𝑎𝑧𝑎𝑟𝑑(a)$$ How can we obtain the hazard ratio between $b$ and $c$ from $HR_{b}$ and $HR_{c}$ ?

Here $hazard(a),hazard(b),hazard(c)$ are hazards for three subgroups consisting of samples of a bigger data-set on which cluster analysis was applied to find the 3 subgroups(of samples). The model was decribed here before

  • 1
    $\begingroup$ Write out the full models (you're probably conditioning on something, e.g. covariates) and sample characteristics/study design, e.g., are HRb and HRc estimated using the same dataset so that a single protocol is in place? $\endgroup$ – Frank Harrell Apr 6 at 12:26
  • 1
    $\begingroup$ If my answer(s) clarify your questions consider marking them as answered. $\endgroup$ – user213325 Apr 6 at 12:37
  • 1
    $\begingroup$ Using cluster analysis to find groups to test is almost always problematic. You either need to use the continuous distance from cluster centers for each observations, or directly analyze the measurements that went into the clustering and drop the clustering. $\endgroup$ – Frank Harrell Apr 9 at 4:13
  • 1
    $\begingroup$ I wasn't clear on whether you were clustering observations or clustering variables. It seems you are clustering observations, which is the more problematic situation. Clustering, at least the kind I'm familiar with, groups observations but within each cluster there is too much heterogeneity of the observations to consider them as a homogeneous group as you are doing. Continuous distances or non-clustering methods will fix this. (Imagine 2 clusters as touching circles; a subject at the edge of one may be more like obs. in the other cluster than in her own cluster.) $\endgroup$ – Frank Harrell Apr 9 at 12:16
  • 1
    $\begingroup$ I don't have a reference at my fingertips for the distance from cluster center, but it is motivated by the need to take into account heterogeneity within clusters, i.e., clusters don't have a radius of zero. For non-cluster methods see my RMS book and course notes. $\endgroup$ – Frank Harrell Apr 9 at 19:03

You can do it with HR(c)/HR(b)

The great thing about R is that you can try it if you are not sure. Like this here:

# firstly, load some data

# creating some factor
# number of each cluster (I use 3 clusters)
nk <- nrow(lung)/3
# create some factor
lung$cluster <- factor(c(rep("cluster1", nk), rep("cluster2", 
nk), rep("cluster3", nk)))

# fit models
# Here reference level is cluster1
m1 <- coxph(Surv(time, status) ~ cluster, data=lung)

# with cluster 2 as reference
# change reference level to cluster2
lung$cluster <- relevel(lung$cluster, "cluster2")
# fit a model with cluster2 as reference
m2 <- coxph(Surv(time, status) ~ cluster, data=lung)

# calculating hazard ratio for cluater2 vs. cluster3 from m1
exp(m1$coefficients["clustercluster3"]) / 

# comparing it to the hazard ratio cluster2 vs. cluster3. from model fit

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.