R在市场调查中的应用--主成分分析

我想写一点R在市场分析中的应用,一方面巩固自己对Chris Chpaman的《R for Marketing Research》(见参考1)的学习记忆,同时我也会用自己新近学习的数据处理技巧来重演书中的一些话题,尽量保证使用最新、最常用的R包。接下来,我还会围绕市场调查这一主题陆续地写一些文章。

1主成分分析(PCA)即其应用场景

本文章偏应用,所以不会展示太多的关于PCA的技术细节。如果你对PCA的具体算法感兴趣的话,建议你看一下这篇文章。如果要简单地概括一下PCA的话,可以把PCA理解为一种减少数据维度的方法。有时候我们的数据包含了很多变量,但是有些变量之间存在着很强的相关性,所以完全可以用新的维度来替代原有的维度,来减少数据的复杂程度,以便我们跟好地理解和可视化数据。通过PCA改变数据的维度,让新生成的几个维度(主成分)尽可能地保留了原有维度的方差,这样只需要几个维度就能大致还原原有数据的信息。
我们在做问卷调查的时候经常会使用一些客户满意度的调查,即客户对某一产品的某一项指标的主观评分。这些评分可以用来帮我们比较各种产品的优劣,同时也能为我们在改善产品对客户满意度时提供相应的数据支撑。在实际的应用中,你或许可以这样设计问卷的问题:
“请问您会给a产品的潮流度打几分(1到10分)?”
当然为了方便比较,你也会对产品b,c.etc进行相同的调查,同时除了产品的潮流度,你也可以增加其它度评分项。下面我们会利用一个假想的数据(见参考1),来演示一下之后的一系列的操作,从数据的清洗、整理到可视化,再到建模。

2观察数据和整理数据

观察数据

下面我们将会:

  • 用read_csv()获取所在url的csv数据。
  • str()确定数据的结构,summary()查看数据的统计概况,用dim()来确定维度。
  • 用head()查看头6行数据,如果你使用Rstudio作为你的集成开发工具的话,可以使用View()函数来查看数据。
#获取训练数据
library(readr)
brand.rating<-read_csv("http://r-marketing.r-forge.r-project.org/data/rintro-chapter8.csv") 

#str(brand.rating)
#summary(brand.rating)
dim(brand.rating)#是一个1000*10的数据表

head(brand.rating)#查看数据表的前6行

整理数据

有时候,我们需要把很多变量合并成一个变量,即把数据表变成一个长数据表,结合ggplot2的facet.wrap()就能同时查看某一产品在不同维度上对表现。
下面我们将会使用tidyr包(整理数据的神奇)中的gather()进行合并变量。

library(dplyr)
library(tidyr)
newdata<-brand.rating%>%
  gather(key=VAR,value=rating,-brand)#把各个评分项目合并成一列

str(newdata)#数据从原来的1000*10变成了9000*3(除去branding一项

3数据可视化

用数据可视化的技巧让数据说话往往是数据分析的精髓所在,这样可以方便把调查结果更好地展示给别人。
因为原有的数据量比较大,所以进行可视化前,首先对数据按产品进行合并整理分类,在用平均值来代替每个产品在不同维度对表现,这样就大大地减少了数据对复杂度,方便后面度可视化。下面,我们将会

  • 用dplyr包的group_by()进行分类。
  • 用summarise()结合mean()对分类好度数据取均值。
newdata_summary<-newdata%>%
  group_by(brand,VAR)%>%
  summarise(meanvalue=mean(rating))

str(newdata_summary)#变成了90*3的数据

下面我们应用ggplot2让数据说话。不过数据可视化是一个很大的话题,如果想要深入了解,建议看一下ggplot2包的制作者Hadley Wickham的书(见参考3)。
其实你只需几行代码,就能得到下图的结果,这就是ggplot2的威力所在。

library(ggplot2)
p<-ggplot(newdata_summary,aes(x=brand,y=meanvalue))+
  geom_col(aes(fill=meanvalue))+facet_wrap(~VAR,nrow=3)

p

这里写图片描述
虽然看上去还不错,但似乎还不够简练易懂。

# 让上图变的更为简练易懂
p<-p+scale_fill_gradient2( low = "blue",high = "red",mid = "white",midpoint = 5)+coord_flip()+labs(x=NULL,y=NULL,fill="Rating")
p

这里写图片描述

这下,各个产品(a到j,在y轴)的各属性的平均得分(x轴)变的一目了然吧!

4主成分分析的应用

终于来到了这篇文章的中心内容。事实上,数据的前期处理往往会耗费大量的时间和精力。
下面我们将使用

  • slect()选取需要的变量。
  • prcomp()进行PCA的建模。
  • summary()对模型进行查看,重点看新生成度主成分对原有数据的还原程度–即保留方差的比例。
#use PCA
data_PCA<-select(brand.rating,-brand)#投入PCA模型之前,先把brand列去掉
head(data_PCA)

PCA<-prcomp(data_PCA)#因为原始数据度度量单位一样,所以不用使用scale参数,但是很多时候,各维度度单位会大不相同,这样度情况下就一定要对数据进行scale。 

summary(PCA)#重点看Proportion of Variance和Cumulative Proportion这两项,我前面说过了,方差代表了信息,所以这个比例越高对元数据的还原程度就越高,可以看到前三个大累计方差值接近7成,遂可以选取前三个作为主成分。
#再结合使用特征值来查看
sum(eigen(cor(data_PCA))$value>1)#有3个特征值大于1,所以一般选取前三个主成分即可
#用R自带的可视化工具对上面的结果进行可视化
biplot(PCA)#啥也看不清,但这个图后面还有用

这里写图片描述

因为数据太多,所以没办法直接获取太多有效信息,所以需要对原数据进行整理。

#用aggregate()让数据按brand项取均值
data_PCA2 <- aggregate(.~brand, data=brand.rating, mean)

#用brand添加rownames,方便后面可视化度呈现
rownames(data_PCA2)<-data_PCA2$brand

#去掉brand列
data_PCA2<-data_PCA2[,-1]

PCA2<-prcomp(data_PCA2)

biplot(PCA2)

这里写图片描述

这样事情就变的清楚多了,从这张图中我们可以知道产品a、j比较有趣,b、c比较严肃刚好和a所处的位置相反。
但是还需要比较一下这张图和原来那张图有没有较大的出入,因为我们用每个产品的平均得分取代里原来的各个单一评分,然而由于有时候数据的形态不太正常,或者严重偏离“钟形”,那么平均值是不能够很好地反应原始数据的,相应地由此得到的知觉图也会和原始的大相径庭。

5对非度量数据的降维度处理

PCA能够在尽可能保留原始数据信息对情况下,减少数据对维度,但是又一个问题是,PCA不能用于对类似排名这样的非度量数据进行处理。我们在做市场调查或者别的问卷调查时,常常会进行如下设问:

“请您对以下产品的潮流度进行排序(从低到高):”

在这样对情况下,我们只能得到排名而非度量数据。我们可以使用多维尺度分析(MDS)来作为替代。不同于PCA,MDS通过计算数据之间的距离(比如欧几里得距离)来确定数据的相对位置,当然MDS也可用作对度量数据度处理,那种情况下一般都可以选用PCA,这里就不细说。
下面我们将

  • 用rank()把原变量转化为排名。

  • 用cluster包的daisy()来计算数据点之间对距离。

  • 用MASS包中的isoMDS() 进行建模。

data_MDS<-as.data.frame(lapply(data_PCA2,function(x)
  {ordered(rank(x))}))#和直观有所不同的是,评分最低排名为1,评分最高排名为10


str(data_MDS)

library(cluster)
data_MDS.dist<-daisy(data_MDS,metric="gower")


library(MASS)
data_MDS.r<-isoMDS(data_MDS.dist)#isoMDS()生成了有两个维度的数据表
#利用data_MDS.r进行数据可视化可视化
#先给数据增加一个产品名称的变量
data_MDS.r$brand<-letters[1:10]#原数据按“a-j”的产品顺序进行排列的,所以可以直接选取letters(26英文字母)的前10个作为每一个数据点的代替

ggplot(as.data.frame(data_MDS.r),aes(points.1,points.2))+geom_text(aes(label=brand),size=10)

这里写图片描述

如果拿上图同前面的PCA的结果相对比,可以看到两图中数据点的相对位置还是类似的,比如a和j的位置相近,且在b、c的对面。

参考文献

1、Chris Chapman&Elea McDonnell Feit(2015)R for Marketing Research and Analytics,Springer
2、张洋(2013)PCA的数学原理:http://blog.codinglabs.org/articles/pca-tutorial.html
3、Hadley Wickham(2016)ggplot2 Elegant Graphics for Data Analysis second edition,Springer

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
This book is a complete introduction to the power of R for marketing research practitioners. The text describes statistical models from a conceptual point of view with a minimal amount of mathematics, presuming only an introductory knowledge of statistics. Hands-on chapters accelerate the learning curve by asking readers to interact with R from the beginning. Core topics include the R language, basic statistics, linear modeling, and data visualization, which is presented throughout as an integral part of analysis. Later chapters cover more advanced topics yet are intended to be approachable for all analysts. These sections examine logistic regression, customer segmentation, hierarchical linear modeling, market basket analysis, structural equation modeling, and conjoint analysis in R. The text uniquely presents Bayesian models with a minimally complex approach, demonstrating and explaining Bayesian methods alongside traditional analyses for analysis of variance, linear models, and metric and choice-based conjoint analysis. With its emphasis on data visualization, model assessment, and development of statistical intuition, this book provides guidance for any analyst looking to develop or improve skills in R for marketing applications. Table of Contents Part I Basics of R Chapter 1 Welcome to R Chapter 2 An Overview of the R Language Part II Fundamentals of Data Analysis Chapter 3 Describing Data Chapter 4 Relationships Between Continuous Variables Chapter 5 Comparing Groups: Tables and Visualizations Chapter 6 Comparing Groups: Statistical Tests Chapter 7 Identifying Drivers of Outcomes: Linear Models Part III Advanced Marketing Applications Chapter 8 Reducing Data Complexity Chapter 9 Additional Linear Modeling Topics Chapter 10 Confirmatory Factor Analysis and Structural Equation Modeling Chapter 11 Segmentation: Clustering and Classification Chapter 12 Association Rules for Market Basket Analysis Chapter 13 Choice Modeling Chapter A Appendix: R Versions and R

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值