生成虚拟变量后?

时间:2017-12-14 18:51:13

标签: r pca data-analysis dummy-variable

我试图将类别变量更改为虚拟变量。 “季节”,“假日”,“工作日”,“天气”,“温度”,“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功能。 感谢您阅读此问题!

1 个答案:

答案 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)