具有分类预测因子的R中的Logistic回归

时间:2014-05-13 02:20:43

标签: r logistic-regression

我已经创建了一个预测销售业绩的模型,但预测结果与实际结果并不接近。所有的预测因子都是绝对的,所以我想知道这是不是问题呢?以下是我正在使用的代码。

setwd("c:/Users/xxxxx/Desktop/SalesPredict/")
trainData <- read.csv("train3.csv", header = TRUE)
testData <- read.csv("test3.csv", header = TRUE)
train.column.types <- c('character', # Prospect
                    'factor', # Sls_Office
                    'factor', # Month
                    'factor', # Sls_Rep
                    'factor', # Fin_Type
                    'factor', # Competitor
                    'integer', # Prospect_Size
                    'factor' , # Prospect_Segment
                    'factor' # Sold
)

test.column.types <- train.column.types[-9]

train.glm <- glm(Sold ~ Competitor + Prospect_Segment + Sls_Office + Month + Fin_Type  , family = binomial(link=logit), data = trainData)

summary(train.glm)

p.hats <- predict.glm(train.glm, newdata = testData, type = "response")

Sold <- vector()
for(i in 1:length(p.hats)) {
  if(p.hats[i] > .5) {
Sold[i] <- 1
 } else {
Sold[i] <- 0
 }
}

Enrolled_Segment = testData[8]
Month = testData[3]
Enrolled_EE = testData[7]
predict.sub <- cbind(Prospect_Segment, Sold, Month,Prospect_Size)
colnames(predict.sub) <- c("Segment","Predicted Disposition","Month","Size")
write.csv(predict.sub, file = "SalesPredictions.csv", row.names = FALSE)

我是否需要将分类变量转换为其他变量?列车数据集大约有1650行 - 这是实际的实际结果,而我试图预测结果的测试大约有540行。这540也是真实的,所以我知道应该是什么样的预期结果。在列车数据中,大约11%的时间出售= 1。在测试数据中,预测结果在售出=“1”0次。如何改进这一点的任何帮助或指示将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您的问题是,我需要在使用glm时将因子变量转换为其他变量,答案是否定的。如果变量真正代表一个分类变量,那么将它们作为一个因素是正确的事情。默认情况下,R将使用参考级编码来按要求执行统计分析。

如果你没有得到你期望的结果,变量类不是问题。正如@josiber所指出的,在数据​​不平衡的情况下,它可能只是逻辑回归的一个缺点。但是,由于您没有生成足够的数据来使您的示例可重现,因此很难确定这一点。

相关问题