【发布时间】:2019-04-18 18:08:02
【问题描述】:
我是统计新手,如果这个问题是微不足道的,请原谅
我有一个正态分布的变量,范围在 -15 到 +15 之间,如下所示:
df <- data.frame("weight" = runif(1000, min=-15, max=15), stringsAsFactors = FALSE)
这个变量的中位数和平均值为0。
我需要转换此变量以将其用作回归中的权重。出于实质性原因,在我的变量中包含负值没有任何意义(它本身是先前转换的结果)。 我的变量的负值应该简单地减少我的主要解释变量的影响(因此应该在 0 和 1 之间),而正值应该对我的解释变量产生乘法效应(大于 1)。虽然接近我体重 0 的值对我的解释变量(接近 1)没有影响。
因此我想将我的变量居中,使我的体重的最小值为 0,中值变为 1,而我不想限制最大值认为这必然改变平均值(它将变得大于 1)。只要中位数保持在 1,我就不会担心这一点。
到目前为止,我已经考虑将 0 到 2 之间的变量标准化
library(BBmisc)
df$normalizedweight <- normalize(df$weight, method = "range",
range = c(0, 2))
但是,此操作对我的标准化变量施加了不必要的约束,因为我的体重的影响可能大于两倍,而
澄清一下,在实际数据中,权重的负值完全反映了权重的正值。理想情况下,一旦我对数据进行了标准化,我希望将相同的数字乘以权重的最大值和最小值,以相同的比例增加/减少值。 例如,对于我的体重的最大值(10)和最小值,取响应变量的值 5,最小值应该是 0.1,这样 5*10 和 5*0.1 将是成比例的增加/减少是我原来价值的 10 倍。
提前感谢您提供的所有帮助
最好的
【问题讨论】: