【发布时间】:2018-08-02 01:37:55
【问题描述】:
我写信是为了在这里粘贴我的代码。 我正在学习 R 的在线课程,并试图自动化多变量回归。我试图检查发生了什么,一开始它可以工作,但是当涉及到最后两个变量时,它进入一个循环并且不会消除它们,即使它进入了 if。 最后,我有这个错误
Error in if (maxVar > sl) { : missing value where TRUE/FALSE needed
这里是代码
backwardElimination <-function(training,sl) {
numVar=length(training)
funzRegressor = lm(formula = profit ~.,
data = training)
p = summary(funzRegressor)$coefficients[,4]
maxVar = max(p)
if (maxVar > sl){
for (j in c(1:numVar)){
if (maxVar == p[j]) {
training = training[, -j]
backwardElimination(training,sl)
}
}
}
return(summary(funzRegressor))
}
提前致谢
编辑:这是我的代码的其余部分
#importing dataset
dataset = read.csv('50_Startups.csv')
# Encoding categorical data
dataset$State = factor(dataset$State,
levels = c('New York', 'California', 'Florida'),
labels = c(1, 2, 3))
#splitting in train / test set
library(caTools)
set.seed(123)
split = sample.split(dataset$Profit, SplitRatio = 4/5)
trainingSet = subset(dataset, split == TRUE)
testSet = subset(dataset, split == FALSE)
#Transforming state in dummy variables
trainingSet$State = factor(trainingSet$State)
dummies = model.matrix(~trainingSet$State)
trainingSet = cbind(trainingSet,dummies)
profit = trainingSet$Profit
trainingSet = trainingSet[, -4]
trainingSet = trainingSet[, -4]
trainingSet = cbind(trainingSet,profit)
#calling the function
SL = 0.05
backwardElimination(trainingSet, SL)
【问题讨论】:
-
它给了我这个错误
Error in funzRegressor$coefficients[, 4] : incorrect number of dimensions -
6 我需要准确地获取 p 值的列
标签: r variables linear-regression