【问题标题】:After generating dummy variables?生成虚拟变量后?
【发布时间】:2018-05-28 22:47:58
【问题描述】:

我正在尝试将类别变量更改为虚拟变量。 "season","holiday","workingday","weather","temp","atemp","humanity","windspeed","re​​gistered","count","hour","dow" 都是变量.

这是我的代码:

#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 函数。 感谢您阅读此问题!

【问题讨论】:

  • 尝试使用dummy.data.frame 在数据集中创建虚拟变量。删除或不删除原始变量取决于您以及您将如何指定公式。
  • 对不起,你的意思是我的代码使用cbind函数和dummy函数有问题吗?我对编码真的很陌生。你能再解释一下吗?
  • 只是如果你指定变量名,这个函数会为你创建多个虚拟变量。运行 ?dummy.data.frame 时查看该函数的工作原理
  • lm 如果您的变量是字符或因子,则会自动为您生成假人,因此无需创建自己的假人。只写fit = lm(count~.,data = data.new) 没有所有dummy 行。
  • @AntoniosK:知道了。谢谢。

标签: r pca data-analysis dummy-variable


【解决方案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)

【讨论】:

  • 知道了。但是如果我不使用 lm 函数,我在生成虚拟变量后使用 PCR 吗?我应该写这样的代码吗? pcr.fit=pcr(count~.,data = train, scale = FALSE, validation = "CV") 或者我应该使用这个代码吗?pcr.fit=pcr(count~temp+atemp+humanity+windspeed+registered,data =火车,规模=假,验证=“CV”)
  • 一般来说,你应该从标准 PCA 中排除分类变量,围绕这个有几个讨论,这里是一个这样的讨论:stats.stackexchange.com/questions/5774/…
猜你喜欢
  • 2012-08-10
  • 2020-06-22
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 2022-07-31
相关资源
最近更新 更多