我试图将类别变量更改为虚拟变量。 “季节”,“假日”,“工作日”,“天气”,“温度”,“atemp”,“湿度”,“风速”,“注册”,“计数”,“小时”,“道”都是变量。
这是我的代码:
#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]
生成虚拟变量后,我应该删除旧变量吗? 如果我想进行PCR,我可以使用所有变量,例如
fit = pcr(count~.,data = data.new)
生成线性回归模型? 或者我应该只使用非虚拟变量?
fit = pcr(count~temp+atemp+humidity+windspeed+registered,data = data.new)
很抱歉引起您的误解。我用lm函数作为例子。现在我已将其更改为pcr功能。 感谢您阅读此问题!
答案 0 :(得分:0)
只要您的分类变量是因子,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)