Van Westendorp Price Sensitivity Meter Analysis

An implementation of the van Westendorp Price Sensitivity Meter in R, which is a survey-based approach to analyze consumer price preferences and sensitivity (van Westendorp 1976, isbn:9789283100386).



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 trial rate and the revenue.


As of version 0.2.1, this package is

# install the stable release from CRAN
# install the development version from Github


The main function of the package is psm_analysis() which performs all necessary analyses.

## creating example data
tch <- round(rnorm(n = 250, mean = 5, sd = 0.5), digits = 2)
ch <- round(rnorm(n = 250, mean = 8.5, sd = 0.5), digits = 2)
ex <- round(rnorm(n = 250, mean = 13, sd = 0.75), digits = 2)
tex <- round(rnorm(n = 250, mean = 17, sd = 1), digits = 2)
data.psm.demo <- data.frame(tch, ch, ex, tex)
## running the analysis
output.psm.demo <- psm_analysis(toocheap = "tch",
  cheap = "ch",
  expensive = "ex",
  tooexpensive = "tex",
  data = data.psm.demo)

Additional Information


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.


NEWS pricesensitivitymeter

version 1.0.1 (Release date: 2019-04-29)


  • makes some tests slightly more lenient to account for rounding differences

version 1.0.0 (Release date: 2019-04-28)


  • adds the psm_analysis_weighted() function to deal with weighted input data. This requires the survey package.
  • adds the argument intersection_method to define how to calculate the price points in case there are multiple intersections (should be a rare case)
  • amends the psm class definition and the summary function for the psm class to account for weighted/unweighted data
  • bug fix: if a respondent has the same answer for both the "cheap" and the "expensive" price, the interpolation of purchase probabilities in the Newton Miller Smith extension now returns non-empty answers
  • bug fix: if "too cheap" information is missing, skip some calculations

version 0.4.1 (Release date: 2018-10-21)


  • fixes issue with calculation of "point of marginal cheapness" and "point of marginal expensiveness" (acceptable price range). also affects documentation and visualization vignette. thanks to athib2 for flagging it
  • fixes bug in calculation of % of removed cases (did show only 0/1 before, now proper percentages)
  • fixes typos in summary() function and in the documentation
  • adds unit testing for Newton Miller Smith input as dataframe

version 0.3.3 (Release date: 2018-10-14)


  • fixes an issue in the unit testing with an if condition with length greater 1 (thanks to Tomas Kalibera for automated testing in R-devel)

version 0.3.2 (Release date: 2018-05-12)


  • changing links from http://... to https://...

version 0.3.0 (Release date: 2018-05-10)


  • adding optional argument to interpolate between price points
  • adding a vignette for the interpolate argument
  • edits in the README: fixing typos, amending the installation instructions

version 0.2.1 (Release date: 2018-04-12)


  • addressing feedback from CRAN submit: adding proper citation of the main publication in the DESCRIPTION file

version 0.2 (Release date: 2018-04-11)


  • adding support for running the analysis without a "too cheap" price
  • adding a charting vignette
  • adding automated testing of function inputs and function outputs
  • renaming the main function from "PSManalysis" to "psm_analysis" (for readability reasons)
  • improving smoothing of trial/revenue optimization when using Newton Miller Smith extension: setting up the price matrix with continuous price steps between the minimum and the maximum to avoid jumps that come from the lack of price points in a specific area
  • refining the data input checks (resulting from the c() implementation of hierarchies between data classes)

version 0.1 (Release date: 2017-05-20)


  • first complete Github version incl. function documentation

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


1.1.1 by Max Alletsee, a year ago

Report a bug at

Browse source code at

Authors: Max Alletsee [aut, cre]

Documentation:   PDF Manual  

MIT + file LICENSE license

Imports survey

Depends on methods

Suggests knitr, rmarkdown, testthat, ggplot2

See at CRAN