13
$\begingroup$

I understand the concept of scaling the data matrix to use in a linear regression model. For example, in R you could use:

scaled.data <- scale(data, scale=TRUE)

My only question is, for new observations for which I want to predict the output values, how are they correctly scaled? Would it be, scaled.new <- (new - mean(data)) / std(data)?

$\endgroup$
  • 1
    $\begingroup$ To get the values back just do y = y_esc * sd(y) + mean(y), but that would mess with the model properties i guess, so i'm also waiting a more technical answer too! $\endgroup$ – Fernando Mar 7 '14 at 15:29
  • $\begingroup$ I don't want the values back, I want to know how new instances can be correctly scaled in the same way. I've edited my question based on your comment. $\endgroup$ – SamuelNLP Mar 7 '14 at 15:31
13
$\begingroup$

The short answer to your question is, yes - that expression for scaled.new is correct (except you wanted sd instead of std).

It may be worth noting that scale has optional arguments which you could use:

scaled.new <- scale(new, center = mean(data), scale = sd(data))

Also, the object returned by scale (scaled.data) has attributes holding the numeric centering and scalings used (if any), which you could use:

scaled.new <- scale(new, attr(scaled.data, "scaled:center"), attr(scaled.data, "scaled:scale"))

The advantage of that appears when the original data has more than one column, so there are multiple means and/or standard deviations to consider.

$\endgroup$
  • $\begingroup$ I wish there was a slightly simpler way to do this, like scaled.new <- scale(new, use.attrs = scaled.data) $\endgroup$ – wordsforthewise Mar 25 '19 at 6:32
  • $\begingroup$ @wordsforthewise It wouldn't be hard to write a wrapper for scale.default to achieve that. I doubt that R-core would give it high priority. $\endgroup$ – user20637 Mar 25 '19 at 19:09
  • $\begingroup$ Yeah. If I can figure out how to contribute to R-core and find time to do it, I might do that. $\endgroup$ – wordsforthewise Mar 26 '19 at 0:33

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.