数据:顾客对软饮料购买意向。
部分数据:
建立购买意向与除了品牌之外的其他因素的logistic回归模型:
softdrink <- read.table("softdrink.txt",header = T)
softdrink$Choice <- as.factor(softdrink$Choice) #转换为因子fit <- glm(Choice~.-Brand,data = softdrink,family = binomial(link = "logit"))
anova(fit,test = "Chisq")#根据卡方分布进行回归方程的显著性检验
summary(fit) #对回归系数的的显著性检验
#方程的显著性检验结果:
在原假设成立的条件下,自由度为6的卡方分布中,模型的偏差为323.47,这个偏差是显著的,表明解释变量全体与logit P的线性关系是显著的,模型的选择是合理的。
#回归系数的的检验,给出回归系数显著性检验的Word检验结果。
结果表明:在显著性水平0.05时,价格,脂肪含量和年龄对logit P没有显著的线性影响。可以看到,价格首先进入模型时,其系数还是显著的,但随着其他的解释变量的进入变得不再显著。所以当前的模型,需要重新建立。
#重新构建模型
fit2<- glm(Choice~.-Brand -Price -Fat -Age -Vitamin,family = binomial("logit"),data = softdrink)
summary(fit2)
当显著性水平为0.1时,回归系数显著性检验均显著。
结果表明:当果汁的含量不变时,热量每增加一个单位,将导致logitP平均减少0.017091;当热量不变时,果汁含量没增加一个单位时,将导致ligitP平均增大0.354141。
进一步计算优势比:
#计算对应的概率以及混淆矩阵
BuyProb <- predict(fit2,softdrink,type = "response") #计算预测值为1的概率值
BuyOrNot <- ifelse(BuyProb> 0.5,1,0) #计算预测值
(confusionMatrix <- table(softdrink $Choice,BuyOrNot))#生成混淆矩阵
prop.table(confusionMatrix,1)*100
结果表明:实际值为0,预测值也为0的有130,预测错误的有6个,正确率为95.6%;实际值为1;预测值也为1的有147个,预测错误的有9个,正确率为94.2%。总正确率为94.9。