pricesensitivitymeter is an implementation of the van Westendorp Price Sensitivity Meter (PSM) in R, which is a popular method in market research to analyze consumer price preferences and price sensitivity. It also covers the so-called Newton Miller Smith Extension which allows to estimate prices that maximize the reach (trial rate) and the revenue.
As of version 0.2.1, this package is available on CRAN.
# install the stable release from CRAN
install.packages("pricesensitivitymeter")
# install the development version from Github
devtools::install_github("max-alletsee/pricesensitivitymeter")
The main function of the package is psm_analysis()
which performs all
necessary analyses.
## creating example data
tch <- round(rnorm(n = 250, mean = 8.5, sd = 1), digits = 2)
ch <- round(rnorm(n = 250, mean = 10, sd = 1), digits = 2)
ex <- round(rnorm(n = 250, mean = 12, sd = 0.75), digits = 2)
tex <- round(rnorm(n = 250, mean = 13, sd = 1), digits = 2)
data_psm_demo <- data.frame(tch, ch, ex, tex)
library(pricesensitivitymeter)
## running the analysis
output_psm_demo <- psm_analysis(
toocheap = "tch",
cheap = "ch",
expensive = "ex",
tooexpensive = "tex",
data = data_psm_demo
)
summary(output_psm_demo)
#> Van Westendorp Price Sensitivity Meter Analysis
#>
#> Accepted Price Range: 9.28 - 12.5
#> Indifference Price Point: 11.1
#> Optimal Price Point: 10.62
#>
#> ---
#> 150 cases with individual price preferences were analyzed (unweighted data).
#> Total data set consists of 250 cases. Analysis was limited to cases with transitive price preferences.
#> (Removed: n = 100 / 40% of data)
The package also has a function psm_analysis_weighted()
that deals
with weighted survey data where the survey design for the weighting is
coming from the survey
package. (Please see the documentation and the
vignette for more details.) Moreover, there is a convenience function
psm_plot()
that creates the layout for the standard Price Sensitivity
Meter plot via ggplot2
. Below is a simple example, using the analysis
result created above.
library(ggplot2)
psm_plot(output_psm_demo) +
labs(
x = "Price",
y = "Share of Respondents (0-1)",
title = "Example Price Sensitivity Meter Plot",
caption = "Shaded area: range of acceptable prices\nData: Randomly generated") +
theme_minimal()
- Please report any issues or bugs.
- License: MIT
Van Westendorp, P (1976) “NSS-Price Sensitivity Meter (PSM) – A new approach to study consumer perception of price” Proceedings of the ESOMAR Congress, 139–167. Online available at the ESOMAR website.
Newton, D, Miller, J, Smith, P, (1993) “A market acceptance extension to traditional price sensitivity measurement” Proceedings of the American Marketing Association Advanced Research Techniques Forum.