본문 바로가기
공부/IT-R프로그래밍

R프로그래밍 강좌 - [18][추론통계학활용]신차 색상 고객 선호도 분석,홍보이벤트 효과 분석

by 썸볼 2018. 1. 18.

1. 신차 색상 고객 선호도 분석
- 관찰되는 값이 기대되는 값과 일치 하는지를 조사하는 것을 적합도 검정이라 한다.
- 선택항목이 여러개 있을때 동일하게 선택될 것인가, 아니면 다르게 선택될 것인가를 기대하는
  비중이 있다.
- 또한 해당 선택 항목들에 대한 실제 조사관찰치의 선택 비중이 기대한 비중과 일치하는 여부를 
  판단하는 것이라고 할 수 있다.
- 카이제곱 검정기법으로 이행한다.

새롭게 출시하는 신차 색상중 고객이 선호하는 색상은 무엇인가?

귀무가설: 새롭게 출시하는 신차 색상에 대한 고객 선호도 조사 결과는 유의미한 차이가 없다.
대립가설: 새롭게 출시하는 신차 색상에 대한 고객 선호도 조사 결과는 유의미한 차이가 있다.


(1) 실습데이터 준비 및 패키지 설치

- 예제데이터는  A자동차메이커에서 신차 출시전에 우수고객 초청 행사에서 색상 선호도를 조사함
  (mycar.csv)
- 변수명  id : ID번호,  color : 선호색(1:검정색, 2:흰색, 3:쥐색, 4:연청색, 5:연녹색)
-  1) 색상유형별로 빈도수와 비율에 대한 기술통계량 값을 별도로 구한다.
   2) 색상유형별 빈도수의 비율값을 테이블 값으로 동시에 표현하시오
   3) 빈도와 비율의 기술 통계량 분석을 한번에 해주는 기능을 가진 페키지를 이용하여 색상유형에 
      따른 빈도수와 비율의 값을 구하시오
   4) 실제 5가지 색상 유형에 따른 선호도의 차이가 있는지를 검증하시오.


(2) 실습데이터 읽기 및 검증하기


mycar <- read.csv("./data/mycar.csv",header=T)
 
#빈도와 비율의 기술통계량 분석을 한번에 해주는 기능을 가진 패키지 설치
install.packages("Hmisc")
library(Hmisc)
 
#데이터 테이블의 빈도 분석 중심의 기술 통계량 분석을 한번에 해주는 기능함수를 가진
#prettyR 패키지 설치
install.packages("prettyR")
library(prettyR)
 
> table(mycar$color)
 
 1  2  3  4  5 
88 65 52 40 55 
 
> table(mycar[2])
 
 1  2  3  4  5 
88 65 52 40 55 
View(mycar)
 
 
#빈도수를 이용하여 항목별 비율을 출력해준다.
prop.table(table(mycar$color))
 
#백분율을 나타내기 위해 100을 곱한다.
prop.table(table(mycar$color))*100
 
#round함수를 이용해 소수점 첫째자리까지 출력한다.
round(prop.table(table(mycar$color))*100,1)
 
#mycar$color의 항목별 빈도수 및 항목별 백분율 값을 별도의변수에 저장한다
surveyFreq <- c(table(mycar$color))
surveyProp <- c(round(prop.table(table(mycar$color))*100,1))
 
#두변수의 값을 하나의 데이터프레임값으로 저장한다.
surveyTable <- data.frame(Freq=surveyFreq,Prop=surveyProp)
 
>surveyTable
  Freq Prop
1   88 29.3
2   65 21.7
3   52 17.3
4   40 13.3
5   55 18.3
 
#Hmisc의 세부 기능함수 중에서 describe함수로 mycar테이블에 들어있는 변수 및 데이터에
#대한 현황에 대해 기술하는 기술통계량 분석결과를 보여준다.
> describe(mycar)
Description of mycar 
 
 Numeric 
       mean median     var    sd valid.n
id    150.5  150.5 7525.00 86.75     300
color   2.7    2.0    2.17  1.47     300

>describe(
)
Description of structure(list(x = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,  1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,  1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,  1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,  1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,  1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,  2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,  2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,  2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,  2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L,  3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,  3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,  3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,  3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,  4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,  4L, 4L, 4L, 4... <truncated>
 
 Numeric 
  mean median  var   sd valid.n
x  2.7      2 2.17 1.47     300
 
#color에 대한 항목별 빈도 및 백분율에 대한 빈도 분석 테이블을 출력해준다.
> freq(mycar)
 
Frequencies for id 
        1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   45   46   47   48   49   50   51   52   53   54   55   56   57   58   59   60   61   62   63   64   65   66   67   68   69   70   71   72   73   74   75   76   77   78   79   80   81   82   83   84   85   86   87   88   89   90   91   92   93   94   95   96   97   98   99  100  101  102  103  104  105  106  107  108  109  110  111  112  113  114  115  116  117  118  119  120  121  122  123  124  125  126  127  128  129  130  131  132  133  134  135  136  137  138  139  140  141  142  143  144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161  162  163  164  165  166  167  168  169  170  171  172  173  174  175  176  177  178  179  180  181  182  183  184  185  186  187  188  189  190  191  192  193  194  195  196  197  198  199 ... <truncated>
        1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 ... <truncated>
%     0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3 ... <truncated>
%!NA  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3  0.3 ... <truncated>
 
 
Frequencies for color 
        1    2    5    3    4   NA
       88   65   55   52   40    0
%    29.3 21.7 18.3 17.3 13.3    0 
%!NA 29.3 21.7 18.3 17.3 13.3 
 
> freq(mycar$color)
 
Frequencies for mycar$color 
        1    2    5    3    4   NA
       88   65   55   52   40    0
%    29.3 21.7 18.3 17.3 13.3    0 
%!NA 29.3 21.7 18.3 17.3 13.3 
 

#여러 개의 선택한목에 대한 실제 선호빈도의 비율 차이를 분석하는 카이제곱 검정을 실시한다.
> chisq.test(surveyFreq)
 
Chi-squared test for given probabilities
 
data:  surveyFreq
X-squared = 21.633, df = 4, p-value = 0.0002371


- 검증결과 유의 값(p-value) 이 유의수준(0.05)보다 낮으므로 귀무가설은 기각되고
  대립가설은 채택된다.
- 이상의 통계적 검정결과, 새롭게 출시되는 신차의 색상에 대한 고객의 선호도는
  유의미한 차이를 보이고 있다고 할 수 있다.




2. 홍보이벤트 효과 분석
- 한집단의 비율이 어떠한 특정한 값과 같은지를 검증하는 것을 단일집단 분석이라 한다.
- 특정변수가 둘 중에 하나를 선택하는 항목으로 구성된 경우 선택한 비율이 사전에 조사된 
  특정한 비율값과 동일한지 아니면 다른지를 비교하는 분석이라 할 수 있다.
- 단일 집단 분석은 통상 이항 분포 검정으로 이루어진다.
- 이항 분포 검정은 이항변수의 관찰치가 기대도수와 일치하는지 또는 특정값이 나타날 기대확률과
  실제로 나타날 확률이 일치하는지를 검정할 때 이용된다.

  매장 입구에서 실시한 홍보이벤트의 효과는 있는 것일까?
  귀무가설: 홍보이벤트로 진행한 구매비율이 일반매장에서 구매한 비율 10%와 같다.
  대립가설: 
홍보이벤트로 진행한 구매비율이 일반매장에서 구매한 비율 10%와 다르다.

- 예제데이터 : A화학의 치약제품B에 대한 표본고객들의 구매여부에 대한 조사 데이터
  *보통의 매장에서 고객들이 구매하는 비율이 10%선으로 알려져 있음
  
*대형매장 입구에 이벤트 부스를 만들어 입장고객들에게 홍보이벤트를 진행해 구매비율을 높이는
     포로모션을 진행함
- 변수명: id :ID번호, buy:구매여부(1:구매함, 0:구매하지 않음)

- 분석문제
  1) 구매여부에 대한 빈도수의 비율에 대한 기술통계량 값을 별도로 구하시오.
  2) 구매여부에 대한 빈도수와 비율값을 테이블 형태로 동시에 표현하시오
  3) 빈도와 비율의 기술통계량 분석을 한 번에 해주는 기능을 가진 패키지를 이용하여 구매여부에
     따른 빈도수와 비율값을 구하시오.
  4) 실제 구매비율이 일반적으로 알려진 10%보다 향상되었는지 아닌지 검증하시오.

(1) 실습데이터 준비및 패키지 설치

#빈도와 비율의 기술통계량 분석을 한번에 해주는 기능을 가진 패키지 설치
install.packages("Hmisc")
library(Hmisc)
 
#데이터 테이블의 빈도 분석 중심의 기술 통계량 분석을 한번에 해주는 기능함수를 가진
#prettyR 패키지 설치
install.packages("prettyR")
library(prettyR)
 
 

 
(2) 실습데이터 읽기와 검증하기

mytooth <- read.csv("./data/mytooth.csv",header=T)

table(mytooth$buy)
table(mytooth[2])
View(mytooth)
 
#빈도수를 이용하여 항목별 비율을 출력해준다.
prop.table(table(mytooth$buy))
#백분율을 나타내기 위해 100을 곱한다.
prop.table(table(mytooth$buy))*100
 
#round함수를 이용해 소수점 첫째자리까지 출력한다.
round(prop.table(table(mytooth$buy))*100,1)
 
#mycar$color의 항목별 빈도수 및 항목별 백분율 값을 별도의변수에 저장한다
buyFreq <- c(table(mytooth$buy))
buyProp <- c(round(prop.table(table(mytooth$buy))*100,1))
 
#두변수의 값을 하나의 데이터프레임값으로 저장한다.
buyTable <- data.frame(Freq=buyFreq,Prop=buyProp)
buyTable
 
#Hmisc의 세부 기능함수 중에서 describe함수로 mytooth 들어있는 변수 및 데이터에
#대한 현황에 대해 기술하는 기술통계량 분석결과를 보여준다.
describe(mytooth)
describe(mytooth$buy)
 
#buy 대한 항목별 빈도 및 백분율에 대한 빈도 분석 테이블을 출력해준다.
> freq(mytooth)
 
Frequencies for id 
        1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   45   46   47   48   49   50   NA
        1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    0
%       2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    0 
%!NA    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2 
 
 
Frequencies for buy 
        0    1   NA
       40   10    0
%      80   20    0 
%!NA   80   20 
 
> freq(mytooth$buy)
 
Frequencies for mytooth$buy 
        0    1   NA
       40   10    0
%      80   20    0 
%!NA   80   20 
 

 

#특정항목이 2개 중의 하나일 때 선택비율이 동일한지(특정비율과 같은지)를 검정하는 
#이항분포를검증을 실시한다.
#일반매장 구매비율 10% 정도를 기준으로 검증을 실시한다.

> binom.test(c(40,10),p=0.10)
 
Exact binomial test
 
data:  c(40, 10)
number of successes = 40, number of trials = 50, p-value < 2.2e-16
alternative hypothesis: true probability of success is not equal to 0.1
95 percent confidence interval:
 0.6628169 0.8996978
sample estimates:
probability of success 
                   0.8 
 
> binom.test(c(40,10),p=0.10, alternative = "two.sided",conf.level = 0.95)
 
Exact binomial test
 
data:  c(40, 10)
number of successes = 40, number of trials = 50, p-value < 2.2e-16
alternative hypothesis: true probability of success is not equal to 0.1
95 percent confidence interval:
 0.6628169 0.8996978
sample estimates:
probability of success 
                   0.8 
 

 
- 유의확률이 유의수준보다 낮으므로 귀무가설 기각하고 
  대립가설 채택한한다.


- 이벤트 매장에서의 구매비률이 일반 매장에서 구매한 비율보다 15% 크다로 이항분포 검정

> binom.test(c(40,10),p=0.15, alternative = "greater",conf.level = 0.95)
 
Exact binomial test
 
data:  c(40, 10)
number of successes = 40, number of trials = 50, p-value <
2.2e-16
alternative hypothesis: true probability of success is greater than 0.15
95 percent confidence interval:
 0.6844039 1.0000000
sample estimates:
probability of success 
                   0.8 
 

- 일반매장에서 구매비율인 10%보다 높은 것으로 이번 홍보 이벤트의 반응 효과가 더 높다고 할 수있다.

댓글