Say I want to compare some measure before and after a treatment. To my understanding, I should use a paired t-test. But, if I manually normalise the data so that each before measurement is 1 and each after is something like 1.2 and do a paired t-test, should the result not be the same? I thought the paired t-test already dealt with only with the difference within a pair so whether it is normalised or not makes no difference.

Edit: by normalise I mean divide each value before treatment by itself to get 1, then divide each value after treatment by the same value, that is divide by the value for that individual before treatment.

  • 3
    $\begingroup$ It depends on what you mean by "normalize." If you separately change the before values and the after values, then you will destroy any evidence of a difference. Could you therefore explain more precisely what you mean by this term? $\endgroup$
    – whuber
    Commented May 3, 2019 at 16:57
  • $\begingroup$ Please visit stats.stackexchange.com/help/merging-accounts to merge your accounts. $\endgroup$
    – whuber
    Commented May 3, 2019 at 19:49

1 Answer 1


"Normalization" typically refers to centering and scaling the data so that the mean is 0 and the SD is 1 (it's best to be clear on this point because there are other statistical and discipline specific ways to do that). As @whuber mentions, if you subtract off the pre-mean from the pre sample and the post-mean from the post-sample you have removed any possible effect, as the mean difference will be 0. On the other hand, you may calculate a pooled mean and pooled SD by "stacking" the pre- and post- samples into a $2n$ vector. If you normalize all the sample using this approach, you will obtain an identical significance test to the untransformed data... although it begs the question... why?

At any rate, a little R simulation showing that this is indeed the way to do it:

pre <- rnorm(20)
post <- rnorm(20, pre*0.2)
t.test(pre, post, paired=T)
pooled <- c(pre, post)
t.test({pre-mean(pooled)}/sd(pooled), {post-mean(pooled)}/sd(pooled), paired=T)

Gives identical p-values for their output: 0.5432


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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