Error in prediction in ROCR : Number of cross-validation runs must be equal for predictions and labels

Viewed 16
brfssLRCleanData <- read.csv('E:\\IEC\\Project 2\\BRFSS Data\\brfssLRCleanData.csv')
selected_brfss <- brfssLRCleanData %>%
  select( X_RFBMI5 , X_RFSMOK3, DRNKANY5)

selected_brfss <- na.delete(selected_brfss)

corr.matrix <- cor(selected_brfss)
corrplot(corr.matrix, main="\n\nCorrelation Plot of BMI, Smokers, Alcohol Drinkers and Age", method="number")

#No any two numeric variables seem to have strong correlations

#Logistic Regression to Predict Stroke

stroke <- brfssLRCleanData%>%
  select( X_RFBMI5 , X_RFSMOK3, DRNKANY5, CVDSTRK3)

stroke$X_RFBMI5 <- as.factor(recode(stroke$X_RFBMI5, '1' = 'Yes', '2' = 'No', .missing = NULL,.default = NULL))
stroke$X_RFSMOK3 <- as.factor(recode(stroke$X_RFSMOK3, '1' = 'Yes', '2' = 'No', .missing = NULL,.default = NULL))
stroke$DRNKANY5 <- as.factor(recode(stroke$DRNKANY5, '1' = 'Yes', '2' = 'No', .missing = NULL,.default = NULL))
stroke$CVDSTRK3 <- as.factor(recode(stroke$CVDSTRK3, '1' = 'Yes', '2' = 'No', .missing = NULL,.default = NULL))
stroke <- na.delete(stroke)

summary(stroke)

#Logistic Regression Model Fitting


#Use 80% of dataset as training set and remaining 30% as testing set
sample <- sample.split(stroke, SplitRatio = 0.8)
train  <- subset(stroke, sample == TRUE)
test   <- subset(stroke, sample == FALSE)

model <- glm(CVDSTRK3~., family=binomial(link = 'logit'), data=train)
summary(model)

anova(model, test="Chisq")
 
fitted.results <- predict(model,newdata=test,type='response')
fitted.results <- ifelse(fitted.results > 0.5,"Yes","No")

misClasificError <- mean(fitted.results != test$CVDSTRK3)
print(paste('Accuracy',1-misClasificError))

#ROC-curve using pROC library
library(pROC)
library(ROCR)
p <- predict(model, newdata=test, type="response")
p <- as.data.frame(p)
pr <- ROCR::prediction(p, test)
prf <- performance(pr, measure = "tpr", x.measure = "fpr")[,2]
plot(prf)
auc <- performance(pr, measure = "auc")
auc <- auc@y.values[[1]]
auc

Error in line: pr <- ROCR::prediction(p, test) is: Error in ROCR::prediction(p, test) : Number of cross-validation runs must be equal for predictions and labels.

BRFSS is a survey data. it has values in Yes or NO only or 1 and 2. I am getting this error. can anyone help please?

0 Answers
Related