2015-09-24 2 views
1

Привет, я новичок в R, и я надеялся, что кто-то может дать мне несколько советов по созданию модели регрессии. У меня есть некоторые данные примера, похожие на приведенные ниже примеры данных, которые содержат категориальные переменные, такие как переменная пути. Я хотел бы преобразовать эти категориальные переменные в двоичные переменные, такие как «Transformed Data», показанные ниже, поэтому я могу использовать их для создания модели регрессии для прогнозирования WaitTime на основе Volume на каждом пути. В python есть функция getdummies, которая делает это красиво. Если кто-нибудь может дать мне советы по аналогичной функции в r или способ построить регрессионную модель с категориальными переменными. Буду весьма признателен за это. Моя конечная цель - построить регрессионную модель, а затем найти значение объема для каждого пути, которое минимизирует WaitTIme. Любые советы по этому вопросу, безусловно, будут оценены.
Образец данных: Path WaitTime Volume AD_IB 195 3 GMC_DT 154 4 CD_ADT 192 2 Ord_IB 326 1 Сборка регрессионной модели с категориальной переменной

преобразованных данных:
AD_IB GMC_DT CD_ADT Ord_IB WaitTime Volume 1 0 0 0 195 3 0 1 0 0 154 4 0 0 1 0 192 2 0 0 0 1 326 1

+0

Сколько категорий в пути? Вы можете проверить, используя таблицу (данные $ Path) или уникальную (data $ Path), если это data.frame. Я спрашиваю, потому что из вашего примера нет повторяющихся значений. Если все, что вы хотите сделать, это создать фиктивные переменные, вы можете просто использовать его как есть или создать фактор, а затем запустить модель с помощью lm(). – darwin

+0

Пробовали ли вы, что произойдет, если вы просто добавите свою категориальную переменную в модель? – Heroka

+0

Вам не нужно это делать. Функции регрессии автоматически создадут для вас фиктивные векторы. Если вам нужно посмотреть, какие функции регрессии используются «под капотом», посмотрите на «? Model.matrix». –

ответ

2

R делает это автоматически для вас:

set.seed(1) 
d <- data.frame(cat = factor(LETTERS[sample(3, 100, TRUE)]), y = rnorm(100)) 
lm(y ~ cat, d) 

#  # Call: 
# lm(formula = y ~ cat, data = d) 
# 
# Coefficients: 
# (Intercept)   catB   catC 
#  -0.2385  0.3518  0.2493 
Смежные вопросы