La librería psmr tiene como objetivo proveer a investigadores de mercado y usuarios de R de una herramienta sencilla para la realización de análisis de precios a partir de la metodología Price Sensitivity Meter.

En este momento la librería se encuentra en fase de desarrollo. Cualquier error que se detecte se agradecería que se reportara al correo electrónico que aparece en DESCRIPTION. Por otra parte, esto es un proyecto de software libre que se distribuye sin garantía alguna.

Su instalación debe realizarse desde el repositorio de github donde se encuentra alojado actualmente.

# library(devtools)
# devtools::install_github("kintero/psmr")

A continuación se muestra como utilizar las funciones de la librería.

Datos sin segmentar.

El primer paso es realizar el análisis con la función psm(). La función tiene 6 parámetros pero en este caso se utilizarán 5, el primero está reservado para el data.frame que contiene los datos y los 4 siguientes son para los nombres de las columnas que contienen las respuesta acerca del precio “muy barato”, “barato”, “caro” y “muy caro” en ese orden. Es muy importante tener siempre claro el orden.

Esta función devuelve un objeto de la clase “psm”.

set.seed(455)
dat <- data.frame(
  "toocheap"=rpois(400, 4)+runif(50, 0, 1)
)
dat$cheap<-dat$toocheap+runif(50, 1, 2)
dat$expensive<-dat$cheap+runif(50, 2, 4)
dat$tooexpensive<-dat$expensive+runif(50, 3, 4)
head(dat)
##   toocheap     cheap expensive tooexpensive
## 1 8.464035 10.385196 12.820570     16.75764
## 2 5.503831  6.506160  9.824740     12.90410
## 3 4.579722  6.233555  8.909305     12.55697
## 4 5.880382  7.635859 11.025374     14.51248
## 5 8.881922 10.352509 13.552161     16.79526
## 6 6.915183  8.403432 12.403323     15.78760
library(psmr)
## Loading required package: lattice
psmObject<-psm(dat, "toocheap", "cheap", "expensive", "tooexpensive")

Visualización y resultados.

plot(psmObject)

summary(psmObject)
##     Group      Min      Max Indifference Optimal
## 1 Generic 6.926399 9.659121     7.702996  8.9163

Datos segmentados.

Para segmentar se ha añadido el parámetro by en donde es necesario indicar la columna que contiene la variable categórica que clasifica las observaciones. En el ejemplo se le llama a esta variable “cluster”.

dat$cluster<-sample(c("group_1", "group_2", "group_3"), 400, replace = TRUE)
head(dat)
##   toocheap     cheap expensive tooexpensive cluster
## 1 8.464035 10.385196 12.820570     16.75764 group_2
## 2 5.503831  6.506160  9.824740     12.90410 group_1
## 3 4.579722  6.233555  8.909305     12.55697 group_2
## 4 5.880382  7.635859 11.025374     14.51248 group_1
## 5 8.881922 10.352509 13.552161     16.79526 group_3
## 6 6.915183  8.403432 12.403323     15.78760 group_3
psmObject<-psm(dat, "toocheap", "cheap", "expensive", "tooexpensive", by="cluster")

Visualización y resultados.

plot(psmObject)

summary(psmObject)
##     Group      Min      Max Indifference  Optimal
## 1 group_1 6.755660 9.352435     7.422272 8.898646
## 2 group_2 6.920864 9.640709     7.689929 8.861150
## 3 group_3 7.075111 9.902194     7.917916 8.865499