Масштабируйте переменную с медианой 1, минимальным значением 0 и без ограничения максимального значения - PullRequest
0 голосов
/ 18 апреля 2019

Я новичок в статистике, поэтому извиняюсь, если этот вопрос тривиален

У меня есть переменная, которая обычно распределяется в диапазоне от -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)) 

, однако эта операция накладывает ненужные ограничения на моинормализованная переменная как влияние моего веса может быть больше, чем в два раза, в то время как

Для уточнения, в реальных данных отрицательные значения веса идеально отражают положительные значения веса.В идеале, после того, как я стандартизировал данные, я хотел бы, чтобы умножение одного и того же числа на максимальное и минимальное значение веса увеличивало / уменьшало значение в той же пропорции.Например, принимая значение переменной отклика 5 как для максимального (10), так и для минимального значения моего веса, минимальное значение должно быть 0,1, так что 5 * 10 и 5 * 0,1 будут пропорционально увеличиваться / уменьшатьсяв 10 раз больше моей первоначальной стоимости.

Заранее благодарю за помощь, которую вы можете оказать

Лучший

1 Ответ

1 голос
/ 18 апреля 2019

Один из вариантов - использовать экспоненциальное преобразование.Все ваши отрицательные значения будут между 0 и 1, и все ваши положительные значения будут больше 1. И ваша медиана будет близка к 1. Более того, так как exp() создаст очень большое значение (exp(15) = 3 269 017), вы можете сначаларазделите ваши значения на его максимум.

sample <- runif(10000, min=-15, max=15)

sample_transform = exp(sample / max(sample))
median(sample_transform)
# [1] 0.9930663
hist(sample_transform)

enter image description here

...