Análise Conjunta

Neste capítulo, você aprenderá como realizar uma análise conjunta. A análise conjunta começa a partir de uma pesquisa na qual as pessoas avaliam ou escolhem entre produtos (por exemplo, carros) que diferem em vários atributos (por exemplo, segurança, eficiência de combustível, conforto etc.). A partir dessas classificações ou escolhas, a análise determina o valor que as pessoas atribuem aos diferentes atributos do produto (por exemplo, quanto peso as pessoas atribuem à segurança ao escolher entre carros). Essas informações podem ser usadas no desenvolvimento de produtos.

Dados

Importação

Analisaremos os dados de uma pesquisa em que 15 consumidores foram convidados a avaliar dez sorvetes. Cada sorvete tinha um ‘perfil’ diferente, ou seja, uma combinação diferente de níveis de quatro atributos: sabor (framboesa, chocolate, morango, manga, baunilha), embalagem (waffle caseiro, casquinha, caneca), leve (com pouca gordura ou não) e orgânico (orgânico ou não). Todos os 15 entrevistados classificaram os dez perfis, fornecendo uma pontuação entre 1 e 10.

Usamos os dados fornecidos pelo www.xlstat.com, descritos em seu tutorial sobre como fazer análises conjuntas no Excel. Faça o download dos dados aqui.

library(tidyverse)
## -- Attaching packages -------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2     v purrr   0.3.4
## v tibble  3.0.3     v dplyr   1.0.0
## v tidyr   1.1.2     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.5.0
## -- Conflicts ----------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(readxl)


url<-"http://users.telenet.be/samuelfranssens/tutorial_data/icecream.xlsx"
icecream <- tempfile()
download.file(url, icecream, mode="wb")
icecream<-read_excel(path = icecream, sheet = 1)

Manipulação

icecream[1:10,]
## # A tibble: 10 x 20
##    Observations Flavor Packaging Light Organic `Individual 1` `Individual 2`
##    <chr>        <chr>  <chr>     <chr> <chr>            <dbl>          <dbl>
##  1 Profile 1    Raspb~ Homemade~ No l~ Not or~              1              6
##  2 Profile 2    Choco~ Cone      No l~ Organic              4              7
##  3 Profile 3    Raspb~ Pint      Low ~ Organic              2              1
##  4 Profile 4    Straw~ Pint      No l~ Organic              7              5
##  5 Profile 5    Straw~ Cone      Low ~ Not or~              9              8
##  6 Profile 6    Choco~ Homemade~ No l~ Not or~              3              2
##  7 Profile 7    Vanil~ Pint      Low ~ Not or~              5              9
##  8 Profile 8    Mango  Homemade~ Low ~ Organic             10             10
##  9 Profile 9    Mango  Pint      No l~ Not or~              6              4
## 10 Profile 10   Vanil~ Homemade~ No l~ Organic              8              3
## # ... with 13 more variables: `Individual 3` <dbl>, `Individual 4` <dbl>,
## #   `Individual 5` <dbl>, `Individual 6` <dbl>, `Individual 7` <dbl>,
## #   `Individual 8` <dbl>, `Individual 9` <dbl>, `Individual 10` <dbl>,
## #   `Individual 11` <dbl>, `Individual 12` <dbl>, `Individual 13` <dbl>,
## #   `Individual 14` <dbl>, `Individual 15` <dbl>

Quando inspecionamos os dados, vemos que temos uma coluna para cada entrevistado. Essa é uma maneira incomum de armazenar dados (normalmente temos uma linha por respondente), então vamos reestruturar nosso conjunto de dados com a função de coleta (como fizemos https://bookdown.org/content/1340/rmanova.html#rmanova):

icecream <- icecream %>% 
  gather(respondent, rating, starts_with("Individual")) %>% # o entrevistado acompanha o respondente, a classificacao armazena as classificacoes do entrevistado e queremos empilhar todas as variaveis que comecam com Individual
  rename("profile" = "Observations") %>% # renomeia Observations para profile
  mutate(profile = factor(profile), respondent = factor(respondent),  # fatorar identificadores
         Flavor = factor(Flavor), Packaging = factor(Packaging), Light = factor(Light), Organic = factor(Organic)) # fatorar os atributos do sorvete

# Amplo conjunto de dados: uma linha por unidade de observacao (aqui: perfil) e varias colunas para as diferentes observacoes (aqui: respondentes)
# Conjunto de dados longo: uma linha por observacao (aqui: combinacao de perfil x respondente)

# Converter de grande para longo significa que estamos empilhando varias colunas umas sobre as outras. Para isso, precisamos de uma variavel extra para acompanhar qual coluna estamos lidando.
# A funcao de coleta converte conjuntos de dados de amplos para longos.
# O primeiro argumento (respondente) nos dira com qual coluna estamos lidando. Essa eh a variavel que armazenara os nomes das colunas que estamos empilhando.
# O segundo argumento (classificacao) armazenara as colunas reais empilhadas umas sobre as outras.
# Os argumentos a seguir (todas as variaveis com nomes que comecam com Individual) sao as colunas que queremos empilhar.

icecream[1:10,]
## # A tibble: 10 x 7
##    profile    Flavor     Packaging       Light     Organic    respondent  rating
##    <fct>      <fct>      <fct>           <fct>     <fct>      <fct>        <dbl>
##  1 Profile 1  Raspberry  Homemade waffle No low f~ Not organ~ Individual~      1
##  2 Profile 2  Chocolate  Cone            No low f~ Organic    Individual~      4
##  3 Profile 3  Raspberry  Pint            Low fat   Organic    Individual~      2
##  4 Profile 4  Strawberry Pint            No low f~ Organic    Individual~      7
##  5 Profile 5  Strawberry Cone            Low fat   Not organ~ Individual~      9
##  6 Profile 6  Chocolate  Homemade waffle No low f~ Not organ~ Individual~      3
##  7 Profile 7  Vanilla    Pint            Low fat   Not organ~ Individual~      5
##  8 Profile 8  Mango      Homemade waffle Low fat   Organic    Individual~     10
##  9 Profile 9  Mango      Pint            No low f~ Not organ~ Individual~      6
## 10 Profile 10 Vanilla    Homemade waffle No low f~ Organic    Individual~      8

É melhor usar o Visualizador aqui (clique duas vezes no icecream} objeto no painel Ambiente ou digite View(icecream))} para ver que existem dez linhas (10 perfis) por respondente agora.

As demais variáveis são:

  • profile é um identificador para os diferentes sorvetes
  • Flavor, Packaging, Light, Organic são os quatro atributos que compõem o perfil de um sorvete

Recapitulando: importação e manipulação

Aqui está o que fizemos até agora, em uma sequência ordenada de operações canalizadas (faça o download dos dados http://users.telenet.be/samuelfranssens/tutorial_data/icecream.xlsx:)

#library(tidyverse)
#library(readxl)

#icecream <- read_excel("icecream.xlsx") %>% 
 # gather(respondent, rating, starts_with("Individual")) %>% # o entrevistado acompanha o respondente, a classificacao armazena as classificacoes do entrevistado e queremos empilhar todas as variaveis que comecam com Individual
#  rename("profile" = "Observations") %>% 
#  mutate(profile = factor(profile), respondent = factor(respondent),
 #        Flavor = factor(Flavor), Packaging = factor(Packaging), Light = factor(Light), Organic = factor(Organic))

Design de experimentos

Quando inspecionamos nosso conjunto de dados, vemos que o flavor possui 5 níveis (framboesa, chocolate, morango, manga, baunilha), packaging possui 3 níveis (waffle caseiro, cone, cerveja), a Light possui 2 níveis (baixo teor de gordura versus não), e Organic} tem 2 níveis (orgânico vs. não). O objetivo de uma análise conjunta é estimar até que ponto cada nível de atributo afeta a classificação do sorvete.

Para fazer isso, o fabricante de sorvete poderia criar 5×3×2x2 = 60 sorvetes diferentes e peça às pessoas para avaliarem tudo isso. Isso fornecerá ao fabricante uma boa estimativa da importância de cada atributo e de todas as possíveis interações. No entanto, classificar 60 sorvetes é difícil para os participantes e um estudo tão grande seria caro para o fabricante financiar. Na prática, os pesquisadores nessa situação solicitarão que as pessoas classifiquem um subconjunto desses 60 sorvetes. Nesta seção, discutiremos como selecionar um subconjunto (por exemplo, 10 sorvetes) de todas as combinações possíveis de nível de atributo (ou seja, 60 sorvetes) que ainda nos permitirão obter boas estimativas dos efeitos mais importantes.

No conjunto de dados, já temos as classificações para dez perfis, portanto a decisão de quais sorvetes para teste já foi tomada. No entanto, vamos desconsiderar o fato de já termos os dados e considerar as decisões que precisam ser tomadas antes da coleta de dados. Em outras palavras, vamos discutir como passamos de um fatorial completo (todas as 60 combinações) para um design fracionário (menos de 60 combinações).

A função doe (projeto de experimentos) do pacote radiant} nos ajudará a decidir sobre os projetos de estudo. Radiant é um pacote do R para business analytics.

A discussão a seguir da função doe é baseada na discussão da Radiant sobre essa função.

#install.packages("radiant")
library(radiant)
## Loading required package: radiant.data
## Loading required package: magrittr
## 
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
## 
##     set_names
## The following object is masked from 'package:tidyr':
## 
##     extract
## Loading required package: lubridate
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
## 
## Attaching package: 'radiant.data'
## The following objects are masked from 'package:lubridate':
## 
##     month, wday
## The following object is masked from 'package:forcats':
## 
##     as_factor
## The following objects are masked from 'package:purrr':
## 
##     is_double, is_empty, is_numeric
## The following object is masked from 'package:ggplot2':
## 
##     diamonds
## The following object is masked from 'package:base':
## 
##     date
## Loading required package: radiant.design
## Loading required package: mvtnorm
## Loading required package: radiant.basics
## Loading required package: radiant.model
## Loading required package: radiant.multivariate

Para usar a doe, precisamos inserir as informações sobre nossos atributos e seus níveis de uma maneira específica:

# attribute1, attribute2, etc. sao vetores com um elemento no qual fornecemos primeiro o nome do atributo seguido por um ponto e virgula e depois fornecemos todos os niveis dos atributos separados por ponto e virgula
attribute1 <- "Flavor; Raspberry; Chocolate; Strawberry; Mango; Vanilla"
attribute2 <- "Package; Homemade waffle; Cone; Pint"
attribute3 <- "Light; Low fat; No low fat"
attribute4 <- "Organic; Organic; Not organic"

# agora combine esses diferentes atributos em um vetor com c()
attributes <- c(attribute1, attribute2, attribute3, attribute4)

Agora podemos pedir possíveis projetos experimentais:

summary(doe(attributes, seed = 123)) # Seed: fixa o gerador de numeros aleatorios
## Experimental design
## # trials for partial factorial: 60 
## # trials for full factorial   : 60 
## Random seed                   : 123 
## 
## Attributes and levels:
## Flavor: Raspberry, Chocolate, Strawberry, Mango, Vanilla 
## Package: Homemade_waffle, Cone, Pint 
## Light: Low_fat, No_low_fat 
## Organic: Organic, Not_organic 
## 
## Design efficiency:
##  Trials D-efficiency Balanced
##       9        0.105    FALSE
##      10        0.389    FALSE
##      11        0.411    FALSE
##      12        0.614    FALSE
##      13        0.542    FALSE
##      14        0.479    FALSE
##      15        0.762    FALSE
##      16        0.738    FALSE
##      17        0.748    FALSE
##      18        0.756    FALSE
##      19        0.644    FALSE
##      20        0.895    FALSE
##      21        0.848    FALSE
##      22        0.833    FALSE
##      23        0.790    FALSE
##      24        0.827    FALSE
##      25        0.787    FALSE
##      26        0.768    FALSE
##      27        0.759    FALSE
##      28        0.736    FALSE
##      29        0.702    FALSE
##      30        0.984     TRUE
##      31        0.952    FALSE
##      32        0.933    FALSE
##      33        0.928    FALSE
##      34        0.900    FALSE
##      35        0.871    FALSE
##      36        0.893    FALSE
##      37        0.866    FALSE
##      38        0.843    FALSE
##      39        0.836    FALSE
##      40        0.922    FALSE
##      41        0.899    FALSE
##      42        0.904    FALSE
##      43        0.882    FALSE
##      44        0.861    FALSE
##      45        0.949    FALSE
##      46        0.919    FALSE
##      47        0.912    FALSE
##      48        0.911    FALSE
##      49        0.891    FALSE
##      50        0.959    FALSE
##      51        0.939    FALSE
##      52        0.944    FALSE
##      53        0.925    FALSE
##      54        0.924    FALSE
##      55        0.906    FALSE
##      56        0.902    FALSE
##      57        0.884    FALSE
##      58        0.872    FALSE
##      59        0.855    FALSE
##      60        1.000     TRUE
## 
## Partial factorial design correlations:
## ** Note: Variables are assumed to be ordinal **
##         Flavor Package Light Organic
## Flavor       1       0     0       0
## Package      0       1     0       0
## Light        0       0     1       0
## Organic      0       0     0       1
## 
## Partial factorial design:
##  trial     Flavor         Package      Light     Organic
##      1  Raspberry Homemade_waffle    Low_fat     Organic
##      2  Raspberry Homemade_waffle    Low_fat Not_organic
##      3  Raspberry Homemade_waffle No_low_fat     Organic
##      4  Raspberry Homemade_waffle No_low_fat Not_organic
##      5  Raspberry            Cone    Low_fat     Organic
##      6  Raspberry            Cone    Low_fat Not_organic
##      7  Raspberry            Cone No_low_fat     Organic
##      8  Raspberry            Cone No_low_fat Not_organic
##      9  Raspberry            Pint    Low_fat     Organic
##     10  Raspberry            Pint    Low_fat Not_organic
##     11  Raspberry            Pint No_low_fat     Organic
##     12  Raspberry            Pint No_low_fat Not_organic
##     13  Chocolate Homemade_waffle    Low_fat     Organic
##     14  Chocolate Homemade_waffle    Low_fat Not_organic
##     15  Chocolate Homemade_waffle No_low_fat     Organic
##     16  Chocolate Homemade_waffle No_low_fat Not_organic
##     17  Chocolate            Cone    Low_fat     Organic
##     18  Chocolate            Cone    Low_fat Not_organic
##     19  Chocolate            Cone No_low_fat     Organic
##     20  Chocolate            Cone No_low_fat Not_organic
##     21  Chocolate            Pint    Low_fat     Organic
##     22  Chocolate            Pint    Low_fat Not_organic
##     23  Chocolate            Pint No_low_fat     Organic
##     24  Chocolate            Pint No_low_fat Not_organic
##     25 Strawberry Homemade_waffle    Low_fat     Organic
##     26 Strawberry Homemade_waffle    Low_fat Not_organic
##     27 Strawberry Homemade_waffle No_low_fat     Organic
##     28 Strawberry Homemade_waffle No_low_fat Not_organic
##     29 Strawberry            Cone    Low_fat     Organic
##     30 Strawberry            Cone    Low_fat Not_organic
##     31 Strawberry            Cone No_low_fat     Organic
##     32 Strawberry            Cone No_low_fat Not_organic
##     33 Strawberry            Pint    Low_fat     Organic
##     34 Strawberry            Pint    Low_fat Not_organic
##     35 Strawberry            Pint No_low_fat     Organic
##     36 Strawberry            Pint No_low_fat Not_organic
##     37      Mango Homemade_waffle    Low_fat     Organic
##     38      Mango Homemade_waffle    Low_fat Not_organic
##     39      Mango Homemade_waffle No_low_fat     Organic
##     40      Mango Homemade_waffle No_low_fat Not_organic
##     41      Mango            Cone    Low_fat     Organic
##     42      Mango            Cone    Low_fat Not_organic
##     43      Mango            Cone No_low_fat     Organic
##     44      Mango            Cone No_low_fat Not_organic
##     45      Mango            Pint    Low_fat     Organic
##     46      Mango            Pint    Low_fat Not_organic
##     47      Mango            Pint No_low_fat     Organic
##     48      Mango            Pint No_low_fat Not_organic
##     49    Vanilla Homemade_waffle    Low_fat     Organic
##     50    Vanilla Homemade_waffle    Low_fat Not_organic
##     51    Vanilla Homemade_waffle No_low_fat     Organic
##     52    Vanilla Homemade_waffle No_low_fat Not_organic
##     53    Vanilla            Cone    Low_fat     Organic
##     54    Vanilla            Cone    Low_fat Not_organic
##     55    Vanilla            Cone No_low_fat     Organic
##     56    Vanilla            Cone No_low_fat Not_organic
##     57    Vanilla            Pint    Low_fat     Organic
##     58    Vanilla            Pint    Low_fat Not_organic
##     59    Vanilla            Pint No_low_fat     Organic
##     60    Vanilla            Pint No_low_fat Not_organic
## 
## Estimable effects from partial factorial design:
## 
##   Flavor|Chocolate
##   Flavor|Strawberry
##   Flavor|Mango
##   Flavor|Vanilla
##   Package|Cone
##   Package|Pint
##   Light|No_low_fat
##   Organic|Not_organic
##   Flavor|Chocolate:Package|Cone
##   Flavor|Strawberry:Package|Cone
##   Flavor|Mango:Package|Cone
##   Flavor|Vanilla:Package|Cone
##   Flavor|Chocolate:Package|Pint
##   Flavor|Strawberry:Package|Pint
##   Flavor|Mango:Package|Pint
##   Flavor|Vanilla:Package|Pint
##   Flavor|Chocolate:Light|No_low_fat
##   Flavor|Strawberry:Light|No_low_fat
##   Flavor|Mango:Light|No_low_fat
##   Flavor|Vanilla:Light|No_low_fat
##   Package|Cone:Light|No_low_fat
##   Package|Pint:Light|No_low_fat
##   Flavor|Chocolate:Organic|Not_organic
##   Flavor|Strawberry:Organic|Not_organic
##   Flavor|Mango:Organic|Not_organic
##   Flavor|Vanilla:Organic|Not_organic
##   Package|Cone:Organic|Not_organic
##   Package|Pint:Organic|Not_organic
##   Light|No_low_fat:Organic|Not_organic
##   Flavor|Chocolate:Package|Cone:Light|No_low_fat
##   Flavor|Strawberry:Package|Cone:Light|No_low_fat
##   Flavor|Mango:Package|Cone:Light|No_low_fat
##   Flavor|Vanilla:Package|Cone:Light|No_low_fat
##   Flavor|Chocolate:Package|Pint:Light|No_low_fat
##   Flavor|Strawberry:Package|Pint:Light|No_low_fat
##   Flavor|Mango:Package|Pint:Light|No_low_fat
##   Flavor|Vanilla:Package|Pint:Light|No_low_fat
##   Flavor|Chocolate:Package|Cone:Organic|Not_organic
##   Flavor|Strawberry:Package|Cone:Organic|Not_organic
##   Flavor|Mango:Package|Cone:Organic|Not_organic
##   Flavor|Vanilla:Package|Cone:Organic|Not_organic
##   Flavor|Chocolate:Package|Pint:Organic|Not_organic
##   Flavor|Strawberry:Package|Pint:Organic|Not_organic
##   Flavor|Mango:Package|Pint:Organic|Not_organic
##   Flavor|Vanilla:Package|Pint:Organic|Not_organic
##   Flavor|Chocolate:Light|No_low_fat:Organic|Not_organic
##   Flavor|Strawberry:Light|No_low_fat:Organic|Not_organic
##   Flavor|Mango:Light|No_low_fat:Organic|Not_organic
##   Flavor|Vanilla:Light|No_low_fat:Organic|Not_organic
##   Package|Cone:Light|No_low_fat:Organic|Not_organic
##   Package|Pint:Light|No_low_fat:Organic|Not_organic
##   Flavor|Chocolate:Package|Cone:Light|No_low_fat:Organic|Not_organic
##   Flavor|Strawberry:Package|Cone:Light|No_low_fat:Organic|Not_organic
##   Flavor|Mango:Package|Cone:Light|No_low_fat:Organic|Not_organic
##   Flavor|Vanilla:Package|Cone:Light|No_low_fat:Organic|Not_organic
##   Flavor|Chocolate:Package|Pint:Light|No_low_fat:Organic|Not_organic
##   Flavor|Strawberry:Package|Pint:Light|No_low_fat:Organic|Not_organic
##   Flavor|Mango:Package|Pint:Light|No_low_fat:Organic|Not_organic
##   Flavor|Vanilla:Package|Pint:Light|No_low_fat:Organic|Not_organic 
## 
## Full factorial design:
##  trial     Flavor         Package      Light     Organic
##      1  Raspberry Homemade_waffle    Low_fat     Organic
##      2  Raspberry Homemade_waffle    Low_fat Not_organic
##      3  Raspberry Homemade_waffle No_low_fat     Organic
##      4  Raspberry Homemade_waffle No_low_fat Not_organic
##      5  Raspberry            Cone    Low_fat     Organic
##      6  Raspberry            Cone    Low_fat Not_organic
##      7  Raspberry            Cone No_low_fat     Organic
##      8  Raspberry            Cone No_low_fat Not_organic
##      9  Raspberry            Pint    Low_fat     Organic
##     10  Raspberry            Pint    Low_fat Not_organic
##     11  Raspberry            Pint No_low_fat     Organic
##     12  Raspberry            Pint No_low_fat Not_organic
##     13  Chocolate Homemade_waffle    Low_fat     Organic
##     14  Chocolate Homemade_waffle    Low_fat Not_organic
##     15  Chocolate Homemade_waffle No_low_fat     Organic
##     16  Chocolate Homemade_waffle No_low_fat Not_organic
##     17  Chocolate            Cone    Low_fat     Organic
##     18  Chocolate            Cone    Low_fat Not_organic
##     19  Chocolate            Cone No_low_fat     Organic
##     20  Chocolate            Cone No_low_fat Not_organic
##     21  Chocolate            Pint    Low_fat     Organic
##     22  Chocolate            Pint    Low_fat Not_organic
##     23  Chocolate            Pint No_low_fat     Organic
##     24  Chocolate            Pint No_low_fat Not_organic
##     25 Strawberry Homemade_waffle    Low_fat     Organic
##     26 Strawberry Homemade_waffle    Low_fat Not_organic
##     27 Strawberry Homemade_waffle No_low_fat     Organic
##     28 Strawberry Homemade_waffle No_low_fat Not_organic
##     29 Strawberry            Cone    Low_fat     Organic
##     30 Strawberry            Cone    Low_fat Not_organic
##     31 Strawberry            Cone No_low_fat     Organic
##     32 Strawberry            Cone No_low_fat Not_organic
##     33 Strawberry            Pint    Low_fat     Organic
##     34 Strawberry            Pint    Low_fat Not_organic
##     35 Strawberry            Pint No_low_fat     Organic
##     36 Strawberry            Pint No_low_fat Not_organic
##     37      Mango Homemade_waffle    Low_fat     Organic
##     38      Mango Homemade_waffle    Low_fat Not_organic
##     39      Mango Homemade_waffle No_low_fat     Organic
##     40      Mango Homemade_waffle No_low_fat Not_organic
##     41      Mango            Cone    Low_fat     Organic
##     42      Mango            Cone    Low_fat Not_organic
##     43      Mango            Cone No_low_fat     Organic
##     44      Mango            Cone No_low_fat Not_organic
##     45      Mango            Pint    Low_fat     Organic
##     46      Mango            Pint    Low_fat Not_organic
##     47      Mango            Pint No_low_fat     Organic
##     48      Mango            Pint No_low_fat Not_organic
##     49    Vanilla Homemade_waffle    Low_fat     Organic
##     50    Vanilla Homemade_waffle    Low_fat Not_organic
##     51    Vanilla Homemade_waffle No_low_fat     Organic
##     52    Vanilla Homemade_waffle No_low_fat Not_organic
##     53    Vanilla            Cone    Low_fat     Organic
##     54    Vanilla            Cone    Low_fat Not_organic
##     55    Vanilla            Cone No_low_fat     Organic
##     56    Vanilla            Cone No_low_fat Not_organic
##     57    Vanilla            Pint    Low_fat     Organic
##     58    Vanilla            Pint    Low_fat Not_organic
##     59    Vanilla            Pint No_low_fat     Organic
##     60    Vanilla            Pint No_low_fat Not_organic

Observe a saída no cabeçalho Design efficiency. Mostra 52 linhas. As linhas representam projetos experimentais com diferentes números de Trials ou diferentes números de sorvetes (ou seja, combinações de nível de atributo) que seriam testados. Uma palavra melhor para julgamento é perfil. Para cada projeto experimental, ele mostra a D-efficiency do projeto - uma medida de como poderemos estimar com clareza os efeitos do interesse após a execução do experimento (pontuações mais altas são melhores) - e se o projeto está ou não equilibrado - se cada nível está incluído no mesmo número de tentativas ou perfis. Idealmente, procuramos projetos balanceados com alta D-efficiency (acima de 0,80 é considerado razoável). Temos dois candidatos, um delineamento experimental com 60 perfis, que é apenas o delineamento fatorial completo ou um delineamento com 30 perfis. Vamos dar uma olhada no design com 30 perfis:

summary(doe(attributes, seed = 123, trials = 30))
## Experimental design
## # trials for partial factorial: 30 
## # trials for full factorial   : 60 
## Random seed                   : 123 
## 
## Attributes and levels:
## Flavor: Raspberry, Chocolate, Strawberry, Mango, Vanilla 
## Package: Homemade_waffle, Cone, Pint 
## Light: Low_fat, No_low_fat 
## Organic: Organic, Not_organic 
## 
## Design efficiency:
##  Trials D-efficiency Balanced
##      30        0.984     TRUE
## 
## Partial factorial design correlations:
## ** Note: Variables are assumed to be ordinal **
##         Flavor Package  Light Organic
## Flavor       1       0  0.000   0.000
## Package      0       1  0.000   0.000
## Light        0       0  1.000  -0.105
## Organic      0       0 -0.105   1.000
## 
## Partial factorial design:
##  trial     Flavor         Package      Light     Organic
##      1  Raspberry Homemade_waffle    Low_fat     Organic
##      4  Raspberry Homemade_waffle No_low_fat Not_organic
##      6  Raspberry            Cone    Low_fat Not_organic
##      7  Raspberry            Cone No_low_fat     Organic
##     10  Raspberry            Pint    Low_fat Not_organic
##     11  Raspberry            Pint No_low_fat     Organic
##     13  Chocolate Homemade_waffle    Low_fat     Organic
##     14  Chocolate Homemade_waffle    Low_fat Not_organic
##     19  Chocolate            Cone No_low_fat     Organic
##     20  Chocolate            Cone No_low_fat Not_organic
##     22  Chocolate            Pint    Low_fat Not_organic
##     23  Chocolate            Pint No_low_fat     Organic
##     26 Strawberry Homemade_waffle    Low_fat Not_organic
##     28 Strawberry Homemade_waffle No_low_fat Not_organic
##     29 Strawberry            Cone    Low_fat     Organic
##     32 Strawberry            Cone No_low_fat Not_organic
##     33 Strawberry            Pint    Low_fat     Organic
##     35 Strawberry            Pint No_low_fat     Organic
##     39      Mango Homemade_waffle No_low_fat     Organic
##     40      Mango Homemade_waffle No_low_fat Not_organic
##     41      Mango            Cone    Low_fat     Organic
##     42      Mango            Cone    Low_fat Not_organic
##     46      Mango            Pint    Low_fat Not_organic
##     47      Mango            Pint No_low_fat     Organic
##     49    Vanilla Homemade_waffle    Low_fat     Organic
##     51    Vanilla Homemade_waffle No_low_fat     Organic
##     53    Vanilla            Cone    Low_fat     Organic
##     56    Vanilla            Cone No_low_fat Not_organic
##     58    Vanilla            Pint    Low_fat Not_organic
##     60    Vanilla            Pint No_low_fat Not_organic
## 
## Estimable effects from partial factorial design:
## 
##   Flavor|Chocolate
##   Flavor|Strawberry
##   Flavor|Mango
##   Flavor|Vanilla
##   Package|Cone
##   Package|Pint
##   Light|No_low_fat
##   Organic|Not_organic
##   Flavor|Chocolate:Package|Cone
##   Flavor|Strawberry:Package|Cone
##   Flavor|Mango:Package|Cone
##   Flavor|Vanilla:Package|Cone
##   Flavor|Chocolate:Package|Pint
##   Flavor|Strawberry:Package|Pint
##   Flavor|Mango:Package|Pint
##   Flavor|Vanilla:Package|Pint
##   Flavor|Chocolate:Light|No_low_fat
##   Flavor|Strawberry:Light|No_low_fat
##   Flavor|Mango:Light|No_low_fat
##   Flavor|Vanilla:Light|No_low_fat
##   Package|Cone:Light|No_low_fat
##   Package|Pint:Light|No_low_fat
##   Flavor|Chocolate:Organic|Not_organic
##   Flavor|Strawberry:Organic|Not_organic
##   Flavor|Mango:Organic|Not_organic
##   Flavor|Vanilla:Organic|Not_organic
##   Package|Cone:Organic|Not_organic
##   Light|No_low_fat:Organic|Not_organic
##   Flavor|Strawberry:Package|Pint:Light|No_low_fat 
## 
## Full factorial design:
##  trial     Flavor         Package      Light     Organic
##      1  Raspberry Homemade_waffle    Low_fat     Organic
##      2  Raspberry Homemade_waffle    Low_fat Not_organic
##      3  Raspberry Homemade_waffle No_low_fat     Organic
##      4  Raspberry Homemade_waffle No_low_fat Not_organic
##      5  Raspberry            Cone    Low_fat     Organic
##      6  Raspberry            Cone    Low_fat Not_organic
##      7  Raspberry            Cone No_low_fat     Organic
##      8  Raspberry            Cone No_low_fat Not_organic
##      9  Raspberry            Pint    Low_fat     Organic
##     10  Raspberry            Pint    Low_fat Not_organic
##     11  Raspberry            Pint No_low_fat     Organic
##     12  Raspberry            Pint No_low_fat Not_organic
##     13  Chocolate Homemade_waffle    Low_fat     Organic
##     14  Chocolate Homemade_waffle    Low_fat Not_organic
##     15  Chocolate Homemade_waffle No_low_fat     Organic
##     16  Chocolate Homemade_waffle No_low_fat Not_organic
##     17  Chocolate            Cone    Low_fat     Organic
##     18  Chocolate            Cone    Low_fat Not_organic
##     19  Chocolate            Cone No_low_fat     Organic
##     20  Chocolate            Cone No_low_fat Not_organic
##     21  Chocolate            Pint    Low_fat     Organic
##     22  Chocolate            Pint    Low_fat Not_organic
##     23  Chocolate            Pint No_low_fat     Organic
##     24  Chocolate            Pint No_low_fat Not_organic
##     25 Strawberry Homemade_waffle    Low_fat     Organic
##     26 Strawberry Homemade_waffle    Low_fat Not_organic
##     27 Strawberry Homemade_waffle No_low_fat     Organic
##     28 Strawberry Homemade_waffle No_low_fat Not_organic
##     29 Strawberry            Cone    Low_fat     Organic
##     30 Strawberry            Cone    Low_fat Not_organic
##     31 Strawberry            Cone No_low_fat     Organic
##     32 Strawberry            Cone No_low_fat Not_organic
##     33 Strawberry            Pint    Low_fat     Organic
##     34 Strawberry            Pint    Low_fat Not_organic
##     35 Strawberry            Pint No_low_fat     Organic
##     36 Strawberry            Pint No_low_fat Not_organic
##     37      Mango Homemade_waffle    Low_fat     Organic
##     38      Mango Homemade_waffle    Low_fat Not_organic
##     39      Mango Homemade_waffle No_low_fat     Organic
##     40      Mango Homemade_waffle No_low_fat Not_organic
##     41      Mango            Cone    Low_fat     Organic
##     42      Mango            Cone    Low_fat Not_organic
##     43      Mango            Cone No_low_fat     Organic
##     44      Mango            Cone No_low_fat Not_organic
##     45      Mango            Pint    Low_fat     Organic
##     46      Mango            Pint    Low_fat Not_organic
##     47      Mango            Pint No_low_fat     Organic
##     48      Mango            Pint No_low_fat Not_organic
##     49    Vanilla Homemade_waffle    Low_fat     Organic
##     50    Vanilla Homemade_waffle    Low_fat Not_organic
##     51    Vanilla Homemade_waffle No_low_fat     Organic
##     52    Vanilla Homemade_waffle No_low_fat Not_organic
##     53    Vanilla            Cone    Low_fat     Organic
##     54    Vanilla            Cone    Low_fat Not_organic
##     55    Vanilla            Cone No_low_fat     Organic
##     56    Vanilla            Cone No_low_fat Not_organic
##     57    Vanilla            Pint    Low_fat     Organic
##     58    Vanilla            Pint    Low_fat Not_organic
##     59    Vanilla            Pint No_low_fat     Organic
##     60    Vanilla            Pint No_low_fat Not_organic

Em Projeto fatorial parcial (ou projeto fatorial fracionário), encontramos os perfis que poderíamos executar em um experimento com 30 em vez de 60 perfis. Sob correlações parciais do projeto fatorial, vemos que dois atributos estão correlacionados, a saber, Light e Organic (\(r = -0,105\)). Esse sempre será o caso em projetos fatoriais fracionários. Isso significa que algumas combinações de níveis de atributo serão mais prevalentes que outras. Somente em um planejamento fatorial completo todos os atributos serão não correlacionados ou ortogonais.

Um design possível com apenas 10 perfis seria desequilibrado e teria a seguinte aparência:

summary(doe(attributes, seed = 123, trials = 10))
## Experimental design
## # trials for partial factorial: 10 
## # trials for full factorial   : 60 
## Random seed                   : 123 
## 
## Attributes and levels:
## Flavor: Raspberry, Chocolate, Strawberry, Mango, Vanilla 
## Package: Homemade_waffle, Cone, Pint 
## Light: Low_fat, No_low_fat 
## Organic: Organic, Not_organic 
## 
## Design efficiency:
##  Trials D-efficiency Balanced
##      10        0.389    FALSE
## 
## Partial factorial design correlations:
## ** Note: Variables are assumed to be ordinal **
##         Flavor Package Light Organic
## Flavor   1.000   0.121 0.000   0.000
## Package  0.121   1.000 0.000   0.000
## Light    0.000   0.000 1.000   0.309
## Organic  0.000   0.000 0.309   1.000
## 
## Partial factorial design:
##  trial     Flavor         Package      Light     Organic
##      4  Raspberry Homemade_waffle No_low_fat Not_organic
##      5  Raspberry            Cone    Low_fat     Organic
##     20  Chocolate            Cone No_low_fat Not_organic
##     21  Chocolate            Pint    Low_fat     Organic
##     25 Strawberry Homemade_waffle    Low_fat     Organic
##     36 Strawberry            Pint No_low_fat Not_organic
##     39      Mango Homemade_waffle No_low_fat     Organic
##     46      Mango            Pint    Low_fat Not_organic
##     50    Vanilla Homemade_waffle    Low_fat Not_organic
##     59    Vanilla            Pint No_low_fat     Organic
## 
## Estimable effects from partial factorial design:
## 
##   Flavor|Chocolate
##   Flavor|Strawberry
##   Flavor|Mango
##   Flavor|Vanilla
##   Package|Cone
##   Package|Pint
##   Light|No_low_fat
##   Organic|Not_organic
##   Flavor|Chocolate:Package|Cone 
## 
## Full factorial design:
##  trial     Flavor         Package      Light     Organic
##      1  Raspberry Homemade_waffle    Low_fat     Organic
##      2  Raspberry Homemade_waffle    Low_fat Not_organic
##      3  Raspberry Homemade_waffle No_low_fat     Organic
##      4  Raspberry Homemade_waffle No_low_fat Not_organic
##      5  Raspberry            Cone    Low_fat     Organic
##      6  Raspberry            Cone    Low_fat Not_organic
##      7  Raspberry            Cone No_low_fat     Organic
##      8  Raspberry            Cone No_low_fat Not_organic
##      9  Raspberry            Pint    Low_fat     Organic
##     10  Raspberry            Pint    Low_fat Not_organic
##     11  Raspberry            Pint No_low_fat     Organic
##     12  Raspberry            Pint No_low_fat Not_organic
##     13  Chocolate Homemade_waffle    Low_fat     Organic
##     14  Chocolate Homemade_waffle    Low_fat Not_organic
##     15  Chocolate Homemade_waffle No_low_fat     Organic
##     16  Chocolate Homemade_waffle No_low_fat Not_organic
##     17  Chocolate            Cone    Low_fat     Organic
##     18  Chocolate            Cone    Low_fat Not_organic
##     19  Chocolate            Cone No_low_fat     Organic
##     20  Chocolate            Cone No_low_fat Not_organic
##     21  Chocolate            Pint    Low_fat     Organic
##     22  Chocolate            Pint    Low_fat Not_organic
##     23  Chocolate            Pint No_low_fat     Organic
##     24  Chocolate            Pint No_low_fat Not_organic
##     25 Strawberry Homemade_waffle    Low_fat     Organic
##     26 Strawberry Homemade_waffle    Low_fat Not_organic
##     27 Strawberry Homemade_waffle No_low_fat     Organic
##     28 Strawberry Homemade_waffle No_low_fat Not_organic
##     29 Strawberry            Cone    Low_fat     Organic
##     30 Strawberry            Cone    Low_fat Not_organic
##     31 Strawberry            Cone No_low_fat     Organic
##     32 Strawberry            Cone No_low_fat Not_organic
##     33 Strawberry            Pint    Low_fat     Organic
##     34 Strawberry            Pint    Low_fat Not_organic
##     35 Strawberry            Pint No_low_fat     Organic
##     36 Strawberry            Pint No_low_fat Not_organic
##     37      Mango Homemade_waffle    Low_fat     Organic
##     38      Mango Homemade_waffle    Low_fat Not_organic
##     39      Mango Homemade_waffle No_low_fat     Organic
##     40      Mango Homemade_waffle No_low_fat Not_organic
##     41      Mango            Cone    Low_fat     Organic
##     42      Mango            Cone    Low_fat Not_organic
##     43      Mango            Cone No_low_fat     Organic
##     44      Mango            Cone No_low_fat Not_organic
##     45      Mango            Pint    Low_fat     Organic
##     46      Mango            Pint    Low_fat Not_organic
##     47      Mango            Pint No_low_fat     Organic
##     48      Mango            Pint No_low_fat Not_organic
##     49    Vanilla Homemade_waffle    Low_fat     Organic
##     50    Vanilla Homemade_waffle    Low_fat Not_organic
##     51    Vanilla Homemade_waffle No_low_fat     Organic
##     52    Vanilla Homemade_waffle No_low_fat Not_organic
##     53    Vanilla            Cone    Low_fat     Organic
##     54    Vanilla            Cone    Low_fat Not_organic
##     55    Vanilla            Cone No_low_fat     Organic
##     56    Vanilla            Cone No_low_fat Not_organic
##     57    Vanilla            Pint    Low_fat     Organic
##     58    Vanilla            Pint    Low_fat Not_organic
##     59    Vanilla            Pint No_low_fat     Organic
##     60    Vanilla            Pint No_low_fat Not_organic

Comparado ao design com 30 perfis, agora existem mais e mais fortes correlações entre os atributos.

Observe que os perfis não são exatamente iguais aos da experiência usada para coletar os dados do sorvete. Isso ocorre porque, para projetos desequilibrados, existe alguma aleatoriedade na definição das combinações reais de nível de atributo. É também por isso que definimos seed = 123. seed é usado para consertar o gerador de números aleatórios do R. Configurá-lo para um número fixo (123 ou 456 ou qualquer outra coisa) garantirá que o R gere sempre a mesma saída. Sem definir a seed, doe com trials = 10 não daria o mesmo design fracionário toda vez que você a executar.

Observe também que o pacote radiant} instala um suplemento que você pode acessar por meio de suplementos (encontre este botão à direita da linha abaixo de “Arquivo” etc.) -> Iniciar radiant (navegador). Isso abrirá um aplicativo no seu navegador que permitirá executar as etapas acima em uma interface visual intuitiva. Para obter ajuda, confira a discussão da Radiant} sobre o módulo Design de experiências aqui

Um respondente

Estimar valores de peça e pesos de importância

Embora alguns softwares exijam que você primeiro crie variáveis fictícias representando os níveis de atributo e execute uma regressão, o Radiant} não exige que você faça isso. Você pode simplesmente usar os atributos (cada um com vários níveis) como variáveis. Primeiro, faremos uma análise conjunta dos dados de um respondente (indivíduo 1):

respondent1 <- icecream %>% filter(respondent == "Individual 1")

# salve a analise conjunta em um objeto, porque a usaremos como entrada para summary(), plot(), and predict()

conjoint_respondent1 <- conjoint(respondent1, rvar = "rating", evar = c("Flavor","Packaging","Light","Organic")) 

summary(conjoint_respondent1)
## Conjoint analysis
## Data                 : respondent1 
## Response variable    : rating 
## Explanatory variables: Flavor, Packaging, Light, Organic 
## 
## Conjoint part-worths:
##    Attributes          Levels     PW
##  Flavor       Chocolate        0.000
##  Flavor       Mango            5.000
##  Flavor       Raspberry       -1.500
##  Flavor       Strawberry       5.000
##  Flavor       Vanilla          3.500
##  Packaging    Cone             0.000
##  Packaging    Homemade waffle  0.000
##  Packaging    Pint            -2.000
##  Light        Low fat          0.000
##  Light        No low fat      -1.000
##  Organic      Not organic      0.000
##  Organic      Organic          1.400
##  Base utility ~                3.800
## 
## Conjoint importance weights:
##  Attributes    IW
##   Flavor    0.596
##   Packaging 0.183
##   Light     0.092
##   Organic   0.128
## 
## Conjoint regression results:
## 
##                            coefficient
##  (Intercept)                     3.800
##  Flavor|Mango                    5.000
##  Flavor|Raspberry               -1.500
##  Flavor|Strawberry               5.000
##  Flavor|Vanilla                  3.500
##  Packaging|Homemade waffle       0.000
##  Packaging|Pint                 -2.000
##  Light|No low fat               -1.000
##  Organic|Organic                 1.400

A saída fornece valores de peça, pesos de importância e coeficientes de regressão. Os valores das partes e os coeficientes de regressão fornecem as mesmas informações: comparado ao nível de referência (o primeiro nível de um atributo; você verá que os valores das partes são sempre zero para este nível), quanto aumenta cada nível de atributo ou diminuir a classificação de um sorvete? Podemos traçar estes resultados:

plot(conjoint_respondent1)

E então vemos facilmente que essa pessoa desfrutaria de um sorvete com baixo teor de gordura, orgânico, manga ou morango em um cone ou em um waffle caseiro.

Observe que os resultados da regressão conjunta são simplesmente os resultados de uma regressão linear múltipla:

# Execute essa regressao se estiver interessado em aprender qual preditor eh significativo ou qual eh o R quadrado do modelo geral.

summary(lm(rating ~ Flavor + Packaging + Light + Organic, data = respondent1))
## 
## Call:
## lm(formula = rating ~ Flavor + Packaging + Light + Organic, data = respondent1)
## 
## Residuals:
##    1    2    3    4    5    6    7    8    9   10 
## -0.3 -0.2  0.3 -0.2  0.2  0.2 -0.3 -0.2  0.2  0.3 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)
## (Intercept)               3.800e+00  8.426e-01   4.510    0.139
## FlavorMango               5.000e+00  9.747e-01   5.130    0.123
## FlavorRaspberry          -1.500e+00  9.747e-01  -1.539    0.367
## FlavorStrawberry          5.000e+00  8.660e-01   5.774    0.109
## FlavorVanilla             3.500e+00  9.747e-01   3.591    0.173
## PackagingHomemade waffle  1.570e-15  8.944e-01   0.000    1.000
## PackagingPint            -2.000e+00  8.660e-01  -2.309    0.260
## LightNo low fat          -1.000e+00  5.916e-01  -1.690    0.340
## OrganicOrganic            1.400e+00  4.899e-01   2.858    0.214
## 
## Residual standard error: 0.7746 on 1 degrees of freedom
## Multiple R-squared:  0.9927,	Adjusted R-squared:  0.9345 
## F-statistic: 17.06 on 8 and 1 DF,  p-value: 0.1852

Finalmente, os pesos de importância nos dizem com que intensidade cada atributo determina a classificação de um sorvete. Para esse respondente, sabor é o atributo mais importante e luz é o atributo menos importante. A classificação deste respondente é determinada em 59,6% por sabor e em 9,2% por luz.

Profiles: utilitários previstos

Prever as classificações (utilitários) dos diferentes sorvetes é muito fácil em R. Primeiro, verifique se temos um conjunto de dados com os diferentes perfis que foram testados:

profiles <- icecream %>% 
  filter(respondent == "Individual 1") %>% 
  select(Flavor,Packaging,Light,Organic)

profiles
## # A tibble: 10 x 4
##    Flavor     Packaging       Light      Organic    
##    <fct>      <fct>           <fct>      <fct>      
##  1 Raspberry  Homemade waffle No low fat Not organic
##  2 Chocolate  Cone            No low fat Organic    
##  3 Raspberry  Pint            Low fat    Organic    
##  4 Strawberry Pint            No low fat Organic    
##  5 Strawberry Cone            Low fat    Not organic
##  6 Chocolate  Homemade waffle No low fat Not organic
##  7 Vanilla    Pint            Low fat    Not organic
##  8 Mango      Homemade waffle Low fat    Organic    
##  9 Mango      Pint            No low fat Not organic
## 10 Vanilla    Homemade waffle No low fat Organic

Em seguida, pedimos à função predict para prever as classificações dos perfis com base na função de regressão:

predict(conjoint_respondent1, profiles) # prever as classificacoes para os perfis com base na analise conjunta
## Conjoint Analysis
## Data                 : respondent1 
## Response variable    : rating 
## Explanatory variables: Flavor, Packaging, Light, Organic 
## Prediction dataset   : profiles 
## 
##      Flavor       Packaging      Light     Organic Prediction
##   Raspberry Homemade waffle No low fat Not organic      1.300
##   Chocolate            Cone No low fat     Organic      4.200
##   Raspberry            Pint    Low fat     Organic      1.700
##  Strawberry            Pint No low fat     Organic      7.200
##  Strawberry            Cone    Low fat Not organic      8.800
##   Chocolate Homemade waffle No low fat Not organic      2.800
##     Vanilla            Pint    Low fat Not organic      5.300
##       Mango Homemade waffle    Low fat     Organic     10.200
##       Mango            Pint No low fat Not organic      5.800
##     Vanilla Homemade waffle No low fat     Organic      7.700

A classificação prevista é mais alta para sorvetes orgânicos com pouca gordura e manga em um waffle caseiro. Mas essas são previsões para sorvetes que o entrevistado realmente classificou. Se quiséssemos saber qual sorvete o entrevistado mais gostava, poderíamos apenas olhar para as classificações observadas (em vez das previstas). É mais interessante obter previsões para sorvetes que o entrevistado não avaliou. Para isso, precisamos dos perfis para todos os sorvetes possíveis. Podemos criar esses perfis com a função expand.grid}. A função expand.grid} usa dois ou mais vetores e cria todas as combinações possíveis de elementos desses vetores:

Flavor <- c("Raspberry","Chocolate","Mango","Strawberry","Vanilla")
Organic <- c("Organic","Not organic")

expand.grid(Flavor, Organic)
##          Var1        Var2
## 1   Raspberry     Organic
## 2   Chocolate     Organic
## 3       Mango     Organic
## 4  Strawberry     Organic
## 5     Vanilla     Organic
## 6   Raspberry Not organic
## 7   Chocolate Not organic
## 8       Mango Not organic
## 9  Strawberry Not organic
## 10    Vanilla Not organic

Vamos fazer isso para todos os nossos níveis de atributo:

# existe uma maneira mais facil de obter niveis de atributo do que criar os vetores manualmente:

levels(icecream$Flavor) # certifique-se de que o sabor seja fatorado primeiro!
## [1] "Chocolate"  "Mango"      "Raspberry"  "Strawberry" "Vanilla"
## [1] "Chocolate"  "Mango"      "Raspberry"  "Strawberry" "Vanilla"
# agora crie todos os profiles

profiles.all <- expand.grid(levels(icecream$Flavor),levels(icecream$Packaging),levels(icecream$Light),levels(icecream$Organic)) %>% 
  rename("Flavor" = "Var1", "Packaging" = "Var2", "Light" = "Var3", "Organic" = "Var4") # rename the variables created by expand.grid (don't forget this, otherwise predict won't know where to look for each attribute)

# prever as classificações de todos os perfis

predict(conjoint_respondent1, profiles.all) %>% 
  arrange(desc(Prediction)) # mostrar os sorvetes com a classificação mais alta prevista no topo
## Conjoint Analysis
## Data                 : respondent1 
## Response variable    : rating 
## Explanatory variables: Flavor, Packaging, Light, Organic 
## Prediction dataset   : profiles.all 
## Rows shown           : 20 of 60 
## 
##      Flavor       Packaging      Light     Organic Prediction
##  Strawberry Homemade waffle    Low fat     Organic     10.200
##  Strawberry            Cone    Low fat     Organic     10.200
##       Mango Homemade waffle    Low fat     Organic     10.200
##       Mango            Cone    Low fat     Organic     10.200
##  Strawberry Homemade waffle No low fat     Organic      9.200
##  Strawberry            Cone No low fat     Organic      9.200
##       Mango Homemade waffle No low fat     Organic      9.200
##       Mango            Cone No low fat     Organic      9.200
##  Strawberry Homemade waffle    Low fat Not organic      8.800
##  Strawberry            Cone    Low fat Not organic      8.800
##       Mango Homemade waffle    Low fat Not organic      8.800
##       Mango            Cone    Low fat Not organic      8.800
##     Vanilla Homemade waffle    Low fat     Organic      8.700
##     Vanilla            Cone    Low fat     Organic      8.700
##  Strawberry            Pint    Low fat     Organic      8.200
##       Mango            Pint    Low fat     Organic      8.200
##  Strawberry Homemade waffle No low fat Not organic      7.800
##  Strawberry            Cone No low fat Not organic      7.800
##       Mango Homemade waffle No low fat Not organic      7.800
##       Mango            Cone No low fat Not organic      7.800

Mesma conclusão que a da seção anterior: essa pessoa desfrutaria de um sorvete com baixo teor de gordura, orgânico, manga ou morango em um cone ou um waffle caseiro.

Muitos respondentes

Estimar valores de peça e pesos de importância

Agora, vamos realizar a análise conjunta no conjunto de dados completo para ter uma idéia de quais sorvetes os 15 entrevistados, em média, gostaram mais e qual a importância de cada atributo:

conjoint_allrespondents <- conjoint(icecream, rvar = "rating", evar = c("Flavor","Packaging","Light","Organic")) # como antes, mas com um conjunto de dados diferente.

summary(conjoint_allrespondents) 
## Conjoint analysis
## Data                 : icecream 
## Response variable    : rating 
## Explanatory variables: Flavor, Packaging, Light, Organic 
## 
## Conjoint part-worths:
##    Attributes          Levels     PW
##  Flavor       Chocolate        0.000
##  Flavor       Mango            1.522
##  Flavor       Raspberry        0.522
##  Flavor       Strawberry       0.767
##  Flavor       Vanilla          1.389
##  Packaging    Cone             0.000
##  Packaging    Homemade waffle -0.244
##  Packaging    Pint            -0.100
##  Light        Low fat          0.000
##  Light        No low fat       0.478
##  Organic      Not organic      0.000
##  Organic      Organic          0.307
##  Base utility ~                4.358
## 
## Conjoint importance weights:
##  Attributes    IW
##   Flavor    0.597
##   Packaging 0.096
##   Light     0.187
##   Organic   0.120
## 
## Conjoint regression results:
## 
##                            coefficient
##  (Intercept)                     4.358
##  Flavor|Mango                    1.522
##  Flavor|Raspberry                0.522
##  Flavor|Strawberry               0.767
##  Flavor|Vanilla                  1.389
##  Packaging|Homemade waffle      -0.244
##  Packaging|Pint                 -0.100
##  Light|No low fat                0.478
##  Organic|Organic                 0.307

O sabor é de longe o atributo mais importante. Vamos traçar estes resultados:

plot(conjoint_allrespondents)

A partir disso, prevemos que, em média, as pessoas mais gostariam de um sorvete de manga orgânico, sem pouca gordura, em um cone.

Os pesos de importância nos dizem com que intensidade cada atributo determina a classificação média de um sorvete. O sabor é o atributo mais importante e a embalagem é o atributo menos importante. A classificação deste respondente é determinada para 59,7% por sabor e para 9,6% por embalagem.

Profiles: utilitários previstos

Vamos prever as classificações de todos os sorvetes possíveis:

predict(conjoint_allrespondents, profiles.all) %>% # verifique as secoes anteriores para profiles.all

  arrange(desc(Prediction)) # mostrar os sorvetes com a classificacao mais alta prevista no topo
## Conjoint Analysis
## Data                 : icecream 
## Response variable    : rating 
## Explanatory variables: Flavor, Packaging, Light, Organic 
## Prediction dataset   : profiles.all 
## Rows shown           : 20 of 60 
## 
##      Flavor       Packaging      Light     Organic Prediction
##       Mango            Cone No low fat     Organic      6.664
##       Mango            Pint No low fat     Organic      6.564
##     Vanilla            Cone No low fat     Organic      6.531
##     Vanilla            Pint No low fat     Organic      6.431
##       Mango Homemade waffle No low fat     Organic      6.420
##       Mango            Cone No low fat Not organic      6.358
##     Vanilla Homemade waffle No low fat     Organic      6.287
##       Mango            Pint No low fat Not organic      6.258
##     Vanilla            Cone No low fat Not organic      6.224
##       Mango            Cone    Low fat     Organic      6.187
##     Vanilla            Pint No low fat Not organic      6.124
##       Mango Homemade waffle No low fat Not organic      6.113
##       Mango            Pint    Low fat     Organic      6.087
##     Vanilla            Cone    Low fat     Organic      6.053
##     Vanilla Homemade waffle No low fat Not organic      5.980
##     Vanilla            Pint    Low fat     Organic      5.953
##       Mango Homemade waffle    Low fat     Organic      5.942
##  Strawberry            Cone No low fat     Organic      5.909
##       Mango            Cone    Low fat Not organic      5.880
##     Vanilla Homemade waffle    Low fat     Organic      5.809

Mesmas conclusões de antes: prevemos que, em média, as pessoas mais gostariam de um sorvete de manga orgânico, sem pouca gordura, em um cone.

Simulação de Mercado

Digamos que criamos um pequeno número de sorvetes e queremos estimar a participação de mercado de cada um desses sorvetes. Digamos que selecionamos os quatro perfis a seguir:

# use slice() para selecionar as linhas 

market_profiles <- profiles.all %>% 
  slice(c(4, 16, 23, 38)) # de profiles.all, selecione as linhas 4, 16, 23, 38 como quatro profiles

market_profiles
##       Flavor       Packaging      Light     Organic
## 1 Strawberry            Cone    Low fat Not organic
## 2  Chocolate            Cone No low fat Not organic
## 3  Raspberry Homemade waffle No low fat Not organic
## 4  Raspberry Homemade waffle    Low fat     Organic
#Já sabemos como estimar qual sorvete será mais apreciado:

conjoint_allrespondents <- conjoint(icecream, rvar = "rating", evar = c("Flavor","Packaging","Light","Organic"))

predict(conjoint_allrespondents, market_profiles) %>%
  arrange(desc(Prediction))
## Conjoint Analysis
## Data                 : icecream 
## Response variable    : rating 
## Explanatory variables: Flavor, Packaging, Light, Organic 
## Prediction dataset   : market_profiles 
## 
##      Flavor       Packaging      Light     Organic Prediction
##  Strawberry            Cone    Low fat Not organic      5.124
##   Raspberry Homemade waffle No low fat Not organic      5.113
##   Raspberry Homemade waffle    Low fat     Organic      4.942
##   Chocolate            Cone No low fat Not organic      4.836

O sorvete de morango com baixo teor de gordura e não orgânico em um cone tem a classificação mais alta prevista entre todos os entrevistados. Mas isso não nos diz qual será a participação de mercado de cada um dos quatro perfis. Para isso, precisamos saber, para cada participante, qual perfil ele escolheria. Em outras palavras, precisamos prever as classificações para cada indivíduo separadamente:

# mesmo modelo de antes, mas agora adicione por = "respondent"
conjoint_perrespondent <- conjoint(icecream, rvar = "rating", evar = c("Flavor","Packaging","Light","Organic"), by = "respondent")

predict(conjoint_perrespondent, market_profiles) %>% 
  arrange(respondent, desc(Prediction)) # classificar por respondente e depois por classificacao prevista
## Conjoint Analysis
## Data                 : icecream 
## Response variable    : rating 
## Explanatory variables: Flavor, Packaging, Light, Organic 
## Prediction dataset   : market_profiles 
## Rows shown           : 20 of 60 
## 
##     respondent     Flavor       Packaging      Light     Organic Prediction
##   Individual 1 Strawberry            Cone    Low fat Not organic      8.800
##   Individual 1  Raspberry Homemade waffle    Low fat     Organic      3.700
##   Individual 1  Chocolate            Cone No low fat Not organic      2.800
##   Individual 1  Raspberry Homemade waffle No low fat Not organic      1.300
##  Individual 10  Raspberry Homemade waffle No low fat Not organic      9.950
##  Individual 10  Raspberry Homemade waffle    Low fat     Organic      8.967
##  Individual 10  Chocolate            Cone No low fat Not organic      5.367
##  Individual 10 Strawberry            Cone    Low fat Not organic      2.033
##  Individual 11 Strawberry            Cone    Low fat Not organic      5.800
##  Individual 11  Raspberry Homemade waffle    Low fat     Organic      5.200
##  Individual 11  Chocolate            Cone No low fat Not organic      3.800
##  Individual 11  Raspberry Homemade waffle No low fat Not organic      2.800
##  Individual 12  Raspberry Homemade waffle No low fat Not organic      9.600
##  Individual 12  Raspberry Homemade waffle    Low fat     Organic      7.733
##  Individual 12  Chocolate            Cone No low fat Not organic      5.933
##  Individual 12 Strawberry            Cone    Low fat Not organic      3.267
##  Individual 13  Raspberry Homemade waffle No low fat Not organic      6.550
##  Individual 13  Raspberry Homemade waffle    Low fat     Organic      6.200
##  Individual 13  Chocolate            Cone No low fat Not organic      5.300
##  Individual 13 Strawberry            Cone    Low fat Not organic      1.300

Vamos reter para cada indivíduo apenas seu perfil mais bem classificado. Podemos fazer isso agrupando por entrevistado e adicionando uma variável denominada ranking que nos dirá o ranking de perfis, com base na classificação prevista, para cada entrevistado:

highest_rated <- predict(conjoint_perrespondent, market_profiles) %>% 
  group_by(respondent) %>% 
  mutate(ranking = rank(Prediction))

# dando uma olhada
highest_rated %>% 
  arrange(respondent, ranking)
## # A tibble: 60 x 7
## # Groups:   respondent [15]
##    respondent    Flavor     Packaging     Light    Organic    Prediction ranking
##    <chr>         <fct>      <fct>         <fct>    <fct>           <dbl>   <dbl>
##  1 Individual 1  Raspberry  Homemade waf~ No low ~ Not organ~       1.3        1
##  2 Individual 1  Chocolate  Cone          No low ~ Not organ~       2.80       2
##  3 Individual 1  Raspberry  Homemade waf~ Low fat  Organic          3.7        3
##  4 Individual 1  Strawberry Cone          Low fat  Not organ~       8.8        4
##  5 Individual 10 Strawberry Cone          Low fat  Not organ~       2.03       1
##  6 Individual 10 Chocolate  Cone          No low ~ Not organ~       5.37       2
##  7 Individual 10 Raspberry  Homemade waf~ Low fat  Organic          8.97       3
##  8 Individual 10 Raspberry  Homemade waf~ No low ~ Not organ~       9.95       4
##  9 Individual 11 Raspberry  Homemade waf~ No low ~ Not organ~       2.8        1
## 10 Individual 11 Chocolate  Cone          No low ~ Not organ~       3.80       2
## # ... with 50 more rows
# precisamos reter apenas o sorvete mais bem classificado

highest_rated <- highest_rated %>% 
  arrange(respondent, ranking) %>% 
  filter(ranking == 4)

highest_rated
## # A tibble: 15 x 7
## # Groups:   respondent [15]
##    respondent    Flavor     Packaging     Light    Organic    Prediction ranking
##    <chr>         <fct>      <fct>         <fct>    <fct>           <dbl>   <dbl>
##  1 Individual 1  Strawberry Cone          Low fat  Not organ~       8.8        4
##  2 Individual 10 Raspberry  Homemade waf~ No low ~ Not organ~       9.95       4
##  3 Individual 11 Strawberry Cone          Low fat  Not organ~       5.80       4
##  4 Individual 12 Raspberry  Homemade waf~ No low ~ Not organ~       9.60       4
##  5 Individual 13 Raspberry  Homemade waf~ No low ~ Not organ~       6.55       4
##  6 Individual 14 Raspberry  Homemade waf~ No low ~ Not organ~       9.8        4
##  7 Individual 15 Strawberry Cone          Low fat  Not organ~       8.53       4
##  8 Individual 2  Strawberry Cone          Low fat  Not organ~       9.63       4
##  9 Individual 3  Chocolate  Cone          No low ~ Not organ~       5.57       4
## 10 Individual 4  Raspberry  Homemade waf~ Low fat  Organic          4.2        4
## 11 Individual 5  Strawberry Cone          Low fat  Not organ~       4.93       4
## 12 Individual 6  Raspberry  Homemade waf~ Low fat  Organic          9.40       4
## 13 Individual 7  Strawberry Cone          Low fat  Not organ~       9.17       4
## 14 Individual 8  Chocolate  Cone          No low ~ Not organ~       4.93       4
## 15 Individual 9  Strawberry Cone          Low fat  Not organ~       7.87       4

Agora podemos estimar a participação de mercado:

market_share <- highest_rated %>% 
  group_by(Flavor, Packaging, Light, Organic) %>% 
  summarise(count = n()) %>% 
  arrange(desc(count))
## `summarise()` regrouping output by 'Flavor', 'Packaging', 'Light' (override with `.groups` argument)
market_share
## # A tibble: 4 x 5
## # Groups:   Flavor, Packaging, Light [4]
##   Flavor     Packaging       Light      Organic     count
##   <fct>      <fct>           <fct>      <fct>       <int>
## 1 Strawberry Cone            Low fat    Not organic     7
## 2 Raspberry  Homemade waffle No low fat Not organic     4
## 3 Chocolate  Cone            No low fat Not organic     2
## 4 Raspberry  Homemade waffle Low fat    Organic         2

Vimos que o sorvete de morango, cone, baixo teor de gordura e não orgânico é preferido por 7 em cada 15 participantes, o framboesa, waffle caseiro, sem baixo teor de gordura e sorvete não orgânico é favorecido por 4 em cada 15 participantes e assim por diante .