用R进行市场调查和消费者感知分析

来源:互联网 时间:2016-07-25

问题到数据

理解问题

理解客户的问题:谁是客户(某航空公司)?交流,交流,交流!

问题要具体

某航空公司: 乘客体验如何?哪方面需要提高?

类别:比较、描述、聚类,判别还是回归

需要什么样的数据:现有数据,数据质量,需要收集的数据,自变量,因变量

哪些方面的满意度?哪些主要竞争对手?

内部数据?外部数据?

领导不关心的问题都是没有未来的!

设计问卷

礼貌(Courtesy)

友善(Friendliness)

能够提供需要的帮助(Helpfulness)

食物饮料服务(Service)

购票容易度(Easy_Reservation)

座椅选择(Preferred_Seats)

航班选择(Flight_Options)

票价(Ticket_Prices)

座椅舒适度(Seat_Comfort)

位置前后空间(Seat_Roominess)

随机行李存放(Overhead_Storage)

机舱清洁(Clean_Aircraft)

总体满意度(Satisfaction)

再次选择次航空公司(Fly_Again)

向朋友推荐此航空公司(Recommend)

数据到信息

流程图:数据准备,数据清理,建模和模型评估

数据预处理:清理、变换、缺失值填补等 (非常重要且耗时)

建模和评估:

分析用户感知:特征提取

PCA,EFA

评估标准:此处不是预测类的评估,是市场类人员等是否能够信服

数据

# 载入了相关包,但是此处不对后面相关

library(readr)

library(dplyr)

library(corrplot)

# gplots是可视化包

library(gplots)

# RColorBrewer包用于设计图形的调色盘

# 相关信息见:http://colorbrewer2.org

library(RColorBrewer)

# 可以从网站下载该数据

airline<-read.csv("AirlineRating.csv")

# install.packages('tibble')

library(tibble)

glimpse(airline)

## Observations: 3,000

## Variables: 17

## $ Easy_Reservation <int> 6, 5, 6, 5, 4, 5, 6, 4, 6, 4, 5, 5, 6, 5, 5, ...

## $ Preferred_Seats <int> 5, 7, 6, 6, 5, 6, 6, 6, 5, 4, 7, 5, 7, 6, 6, ...

## $ Flight_Options <int> 4, 7, 5, 5, 3, 4, 6, 3, 4, 5, 6, 6, 6, 5, 6, ...

## $ Ticket_Prices <int> 5, 6, 6, 5, 6, 5, 5, 5, 5, 6, 7, 7, 6, 7, 7, ...

## $ Seat_Comfort <int> 5, 6, 7, 7, 6, 6, 6, 4, 6, 9, 7, 7, 6, 6, 6, ...

## $ Seat_Roominess <int> 7, 8, 6, 8, 7, 8, 6, 5, 7, 8, 8, 9, 7, 8, 6, ...

## $ Overhead_Storage <int> 5, 5, 7, 6, 5, 4, 4, 4, 5, 7, 6, 6, 7, 5, 4, ...

## $ Clean_Aircraft <int> 7, 6, 7, 7, 7, 7, 6, 4, 6, 7, 7, 7, 7, 7, 6, ...

## $ Courtesy <int> 5, 6, 6, 4, 2, 5, 5, 4, 5, 6, 4, 6, 4, 5, 5, ...

## $ Friendliness <int> 4, 6, 6, 6, 3, 4, 5, 5, 4, 5, 6, 7, 5, 4, 4, ...

## $ Helpfulness <int> 6, 5, 6, 4, 4, 5, 5, 4, 3, 5, 5, 6, 5, 4, 5, ...

## $ Service <int> 6, 5, 6, 5, 3, 5, 5, 5, 3, 5, 6, 6, 5, 5, 4, ...

## $ Satisfaction <int> 6, 7, 7, 5, 4, 6, 5, 5, 4, 7, 6, 7, 6, 4, 4, ...

## $ Fly_Again <int> 6, 6, 6, 7, 4, 5, 3, 4, 7, 6, 8, 6, 5, 4, 6, ...

## $ Recommend <int> 3, 6, 5, 5, 4, 5, 6, 5, 8, 6, 8, 7, 6, 5, 6, ...

## $ ID <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14...

## $ Airline <fctr> AirlineCo.1, AirlineCo.1, AirlineCo.1, Airli...

检查相关性

 # library(dplyr)

# install.packages('corrplot')

# library(corrplot)

# 我们用`corrplot()`函数检查问卷调查问题的相关性:

# 选取其中的问卷调查项

select(airline,Easy_Reservation:Recommend) %>%

# 得到相关矩阵

cor() %>%

# 用corrplot()绘制相关图

# 选项order="hclust"按照变量的相似度,基于系统聚类的结果对行列进行重新排列

corrplot(,order="hclust")

主成分分析

 airline.pc<-select(airline,Easy_Reservation:Recommend) %>%

# prcomp:Principal Components Analysis主成分分析

prcomp()

summary(airline.pc)

## Importance of components:

## PC1 PC2 PC3 PC4 PC5 PC6

## Standard deviation 4.693 4.2836 1.68335 1.03625 0.88896 0.82333

## Proportion of Variance 0.435 0.3624 0.05596 0.02121 0.01561 0.01339

## Cumulative Proportion 0.435 0.7974 0.85338 0.87458 0.89019 0.90358

## PC7 PC8 PC9 PC10 PC11 PC12

## Standard deviation 0.80349 0.78694 0.77536 0.77020 0.74612 0.71831

## Proportion of Variance 0.01275 0.01223 0.01187 0.01172 0.01099 0.01019

## Cumulative Proportion 0.91633 0.92856 0.94043 0.95215 0.96314 0.97333

## PC13 PC14 PC15

## Standard deviation 0.69417 0.66650 0.65131

## Proportion of Variance 0.00952 0.00877 0.00838

## Cumulative Proportion 0.98285 0.99162 1.00000

主成分分析陡坡图

# 主成分分析陡坡图

plot(airline.pc,type="l",main="PCA陡坡图")

主成分分析双标图

# PCA双标图

biplot(airline.pc,main="PCA双标图",cex=c(0.5,1),xlim=c(-0.06,0.04))

数据聚合

# 我们可以用之前介绍的`dplyr`包中的各种函数,以及使用之前讲到的管道操作`%>%`让代码更易读:

# 选取其中的问卷调查项和航空公司因子信息

# 即删除ID项

airline.mean<-select(airline,-ID)%>%

# 按Airline对数据进行分组总结

group_by(Airline)%>%

# 对每个数值

summarise_each(funs(mean))%>%

# 显示数据

glimpse()

## Observations: 3

## Variables: 16

## $ Airline <fctr> AirlineCo.1, AirlineCo.2, AirlineCo.3

## $ Easy_Reservation <dbl> 5.031, 2.939, 2.038

## $ Preferred_Seats <dbl> 6.025, 2.995, 2.019

## $ Flight_Options <dbl> 4.996, 2.033, 2.067

## $ Ticket_Prices <dbl> 5.997, 3.016, 2.058

## $ Seat_Comfort <dbl> 6.988, 5.009, 7.918

## $ Seat_Roominess <dbl> 7.895, 3.970, 7.908

## $ Overhead_Storage <dbl> 5.967, 4.974, 7.924

## $ Clean_Aircraft <dbl> 6.947, 6.050, 7.882

## $ Courtesy <dbl> 5.016, 7.937, 7.942

## $ Friendliness <dbl> 4.997, 7.946, 7.914

## $ Helpfulness <dbl> 5.017, 7.962, 7.954

## $ Service <dbl> 5.019, 7.956, 7.906

## $ Satisfaction <dbl> 5.944, 3.011, 7.903

## $ Fly_Again <dbl> 5.983, 3.008, 7.920

## $ Recommend <dbl> 6.008, 2.997, 7.929

聚合后PCA结果双标图

# 聚合后PCA结果双标图

airline.mean.pc<-select(airline.mean,Easy_Reservation:Recommend)%>%

prcomp()

biplot(airline.mean.pc,main="聚合后PCA结果双标图",

cex=0.7, expand=2,xlim=c(-0.8, 1),ylim=c(-0.7,0.8))

可视化

# 将航空公司设置成行名称然后将对应的字符列删除

row.names(airline.mean)<-airline.mean$Airline

airline.mean<-select(airline.mean,-Airline)

# 绘制热图

heatmap.2(as.matrix(airline.mean),

col=brewer.pal(9,"YlGn"),trace="none",key=FALSE,dend="none",cexCol=0.6,cexRow =1)

title(main="航空公司问卷调查均值热图")

探索性因子分析(EFA)

获取抽样调查中问题之间的构造

结果是一个因子矩阵,其目标是使一小部分变量对应较高的因子载荷,其余的因子载荷都很低

为什么用因子分析:

使结果可实践,PCA很难实现

优化调查项,保留因子载荷高的项

探索调查项之间的联系是不是符合我们的期待

# 因子分析

library(GPArotation)

airline.fa<-airline%>%

subset(select=Easy_Reservation:Recommend)%>%

factanal(factors=3,rotation="oblimin")

因子载荷热图

Factor 1: 乘客的总体感觉

Factor 2: 机舱服务感知

Factor 3: 购票体验感知

# library(gplots)

# library(RColorBrewer)

# 绘制热图

heatmap.2(airline.fa$loadings,

col=brewer.pal(9,"YlGn"),trace="none",key=FALSE,dend="none",cexCol=0.6,cexRow =1)

title(main="航空公司满意度因子载荷")

平均因子分值热图

Factor 1: 乘客的总体感觉

Factor 2: 机舱服务感知

Factor 3: 购票体验感知

# 因子得分

airline.fa<-airline%>%

subset(select=Easy_Reservation:Recommend)%>%

factanal(factors=3,rotation="oblimin",scores="Bartlett")

airline.fa

##

## Call:

## factanal(x = ., factors = 3, scores = "Bartlett", rotation = "oblimin")

##

## Uniquenesses:

## Easy_Reservation Preferred_Seats Flight_Options Ticket_Prices

## 0.233 0.157 0.222 0.173

## Seat_Comfort Seat_Roominess Overhead_Storage Clean_Aircraft

## 0.251 0.165 0.253 0.495

## Courtesy Friendliness Helpfulness Service

## 0.219 0.191 0.153 0.161

## Satisfaction Fly_Again Recommend

## 0.151 0.111 0.113

##

## Loadings:

## Factor1 Factor2 Factor3

## Easy_Reservation 0.941

## Preferred_Seats 0.880

## Flight_Options 0.167 0.803

## Ticket_Prices 0.887

## Seat_Comfort 0.865

## Seat_Roominess 0.844 -0.242

## Overhead_Storage 0.833 0.137 -0.142

## Clean_Aircraft 0.708

## Courtesy 0.818

## Friendliness 0.868

## Helpfulness 0.953

## Service 0.922

## Satisfaction 0.921

## Fly_Again 0.943

## Recommend 0.942

##

## Factor1 Factor2 Factor3

## SS loadings 5.316 3.285 3.135

## Proportion Var 0.354 0.219 0.209

## Cumulative Var 0.354 0.573 0.782

##

## Factor Correlations:

## Factor1 Factor2 Factor3

## Factor1 1.0000 -0.0494 0.0188

## Factor2 -0.0494 1.0000 -0.7535

## Factor3 0.0188 -0.7535 1.0000

##

## Test of the hypothesis that 3 factors are sufficient.

## The chi square statistic is 769.65 on 63 degrees of freedom.

## The p-value is 3.9e-122

fa.score<-airline.fa$scores%>%

data.frame()

fa.score$Airline<-airline$Airline

fa.score.mean<-fa.score%>%

group_by(Airline)%>%

summarise(Factor1=mean(Factor1),

Factor2=mean(Factor2),

Factor3=mean(Factor3))

row.names(fa.score.mean)<-as.character(fa.score.mean$Airline)

fa.score.mean<-select(fa.score.mean,-Airline)

heatmap.2(as.matrix(fa.score.mean),

col=brewer.pal(9,"YlGn"),trace="none",key=FALSE,dend="none",cexCol=0.6,cexRow =1)

title(main="航空公司满意度平均因子分值")

得到的信息

公司在很多方面具有竞争优势,客户满意度总体高于竞争对手

公司在购票体验上有明显劣势,这是需要努力改进的地方

我们为什么在购票体验上满意度高的乘客更不满空航服务?是因为乘客本身的特质,或是由于某种原因重视空航服务的公司容易忽视购票体验?

需要进一步研究购票体验差的原因,以及评估其可能带来的影响:如果购票体验差并不会影响当前总体满意度以及票的销售情况,那我们需要投入多少改进该问题?

信息到行动

行业知识:

解释购票体验和空航服务体验的关系

信息的接收者:哪些人员真正实践这些改进?交流、倾听和尊重

讲故事的能力

转自:

http://www.xueqing.tv/course/69

原文作者:

林荟,现任美国杜邦公司商业数据科学家,毕业于爱荷华州立大学,统计学博士,先后担任该校兽医学院统计咨询师及商学院统计咨询师,研究兴趣在预测模型,机器学习,数据可视化,市场营销调查分析,消费者行为分析,自然语义处理和文本挖据,健康与疾病统计分析等方面。

本文链接:

http://www.cnblogs.com/homewch/p/5703091.html

相关阅读:
Top