我是统计学的新手,所以如果这个问题不重要,请原谅我
我有一个正态分布的变量,范围在-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))
但是,此操作对我的归一化变量施加了不必要的约束,因为我的体重影响可能大于2倍,而
为了澄清,在实际数据中,权重的负值完美地反映了权重的正值。理想情况下,一旦我对数据进行了标准化,我希望将相同的数字乘以权重的最大值和最小值,就可以按相同的比例增加/减少该值。 例如,对于我的体重的最大值(10)和最小值,都将响应变量的值设为5,则最小值应为0.1,以便5 * 10和5 * 0.1分别为和成比例地增加/减少是我原始价值的十分之一。
在此先感谢您能提供的所有帮助
最佳