После создания фиктивных переменных?

Я пытаюсь заменить переменные категории фиктивными переменными. «сезон», «праздник», «рабочий день», «погода», «температура», «атем.», «влажность», «скорость ветра», «зарегистрированный», «счетчик», «час», «доу» - все переменные. .

Вот мой код:

#dummy
library(dummies)
#set up new dummy variables
data.new = data.frame(data)
data.new = cbind(data.new,dummy(data.new$season, sep = "_"))
data.new = cbind(data.new,dummy(data.new$holiday, sep = "_"))
data.new = cbind(data.new,dummy(data.new$weather, sep = "_"))
data.new = cbind(data.new,dummy(data.new$dow, sep = "_"))
data.new = cbind(data.new,dummy(data.new$hour, sep = "_"))
data.new = cbind(data.new,dummy(data.new$workingday, sep = "_"))
#delete the old variables
data.new = data.new[,-1]
data.new = data.new[,-1]
data.new = data.new[,-2]
data.new = data.new[,-8]
data.new = data.new[,-8]
data.new = data.new[,-1]

Должен ли я удалить старые переменные после создания фиктивных переменных? Если я хочу провести ПЦР, могу ли я использовать все переменные, например

fit = pcr(count~.,data = data.new) 

создать модель линейной регрессии? Или мне просто использовать не фиктивные переменные?

fit = pcr(count~temp+atemp+humidity+windspeed+registered,data = data.new)

Извините за ваше недоразумение. В качестве примера я использовал функцию lm. Теперь я изменил его на функцию pcr. Спасибо, что прочитали этот вопрос!


person grace    schedule 14.12.2017    source источник
comment
Попробуйте использовать dummy.data.frame для создания фиктивных переменных в наборе данных. Удаление или неиспользование исходных переменных зависит от вас и от того, как вы собираетесь указать формулу.   -  person AntoniosK    schedule 14.12.2017
comment
Извините, но вы имеете в виду, что мой код неверен для использования функции cbind и фиктивной функции? Я новичок в программировании. Не могли бы вы объяснить немного подробнее?   -  person grace    schedule 14.12.2017
comment
Просто эта функция создаст для вас несколько фиктивных переменных, если вы укажете имена переменных. Посмотрите, как работает функция при запуске ?dummy.data.frame   -  person AntoniosK    schedule 14.12.2017
comment
lm автоматически генерирует для вас манекены, если ваши переменные являются символьными или факторными, поэтому нет необходимости создавать свои собственные манекены. Просто напишите fit = lm(count~.,data = data.new) без всех dummy строк.   -  person acylam    schedule 14.12.2017
comment
@ AntoniosK: Понял. Спасибо.   -  person grace    schedule 14.12.2017


Ответы (1)


Пока ваши категориальные переменные являются факторами, функция lm будет обрабатывать за вас создание фиктивных переменных.

Я бы порекомендовал вам сначала убедиться, что ваши данные - это data.frame, а категориальные предикторы действительно являются факторами.

class(data)
sapply(data, class)

Или проще

str(data)

Затем просто введите их в формулу в вызове lm.

fit = lm(count ~ season + holiday + workingday + weather + temp + atemp + humidity + windspeed + registered + hour + dow, data=data)

Или, если столбцы в формуле единственные в вашем data.frame, вы можете использовать сокращение.

fit = lm(count ~ ., data=data)
person jmuhlenkamp    schedule 14.12.2017
comment
Понятно. Но если я не использую функцию lm, я использую PCR после создания фиктивных переменных? Стоит ли писать такой код? pcr.fit = pcr (count ~., data = train, scale = FALSE, validation = CV) Или мне следует использовать этот код? pcr.fit = pcr (count ~ temp + atemp + влажность + скорость ветра + зарегистрированный, data = train , масштаб = ЛОЖЬ, проверка = CV) - person grace; 14.12.2017
comment
В общем, вы должны исключить категориальные переменные из стандартного PCA, вокруг этого есть несколько дискуссий, вот одно из таких: stats.stackexchange.com/questions/5774/ < / а> - person jmuhlenkamp; 14.12.2017