{"id":31715229,"url":"https://github.com/max-alletsee/pricesensitivitymeter","last_synced_at":"2025-10-09T01:52:38.987Z","repository":{"id":56934494,"uuid":"91899393","full_name":"max-alletsee/pricesensitivitymeter","owner":"max-alletsee","description":"van Westendorp Price Sensitivity Meter (PSM) implementation in R","archived":false,"fork":false,"pushed_at":"2025-08-29T21:31:00.000Z","size":3731,"stargazers_count":15,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-29T22:46:07.479Z","etag":null,"topics":["market-research","price-sensitivity","pricing","r","survey","survey-analysis"],"latest_commit_sha":null,"homepage":"https://max-alletsee.github.io/pricesensitivitymeter/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/max-alletsee.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-05-20T15:48:16.000Z","updated_at":"2025-08-29T21:29:38.000Z","dependencies_parsed_at":"2025-08-22T21:17:20.042Z","dependency_job_id":"c799ab17-ed3f-4875-bccf-cd8ee2b8ad8c","html_url":"https://github.com/max-alletsee/pricesensitivitymeter","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/max-alletsee/pricesensitivitymeter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/max-alletsee%2Fpricesensitivitymeter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/max-alletsee%2Fpricesensitivitymeter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/max-alletsee%2Fpricesensitivitymeter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/max-alletsee%2Fpricesensitivitymeter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/max-alletsee","download_url":"https://codeload.github.com/max-alletsee/pricesensitivitymeter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/max-alletsee%2Fpricesensitivitymeter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000703,"owners_count":26082894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["market-research","price-sensitivity","pricing","r","survey","survey-analysis"],"created_at":"2025-10-09T01:52:17.961Z","updated_at":"2025-10-09T01:52:38.974Z","avatar_url":"https://github.com/max-alletsee.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\noutput:\n  github_document\n---\n\n```{r, echo = FALSE}\nknitr::opts_chunk$set(\n  collapse = TRUE,\n  comment = \"#\u003e\",\n  fig.path = \"man/figures/\"\n)\n```\n\n# pricesensitivitymeter\n\n[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/pricesensitivitymeter)](https://cran.r-project.org/package=pricesensitivitymeter)\n[![CRAN_Download_Badge](https://cranlogs.r-pkg.org/badges/grand-total/pricesensitivitymeter)](https://cran.r-project.org/package=pricesensitivitymeter)\n[![R-CMD-check](https://github.com/max-alletsee/pricesensitivitymeter/workflows/R-CMD-check/badge.svg)](https://github.com/max-alletsee/pricesensitivitymeter/actions)\n[![codecov](https://codecov.io/gh/max-alletsee/pricesensitivitymeter/branch/master/graph/badge.svg?token=W1JHNAMMEB)](https://app.codecov.io/gh/max-alletsee/pricesensitivitymeter)\n\n## Overview \npricesensitivitymeter is an implementation of the van Westendorp Price Sensitivity Meter (PSM) in R. It also covers the so-called Newton Miller Smith Extension which allows to estimate prices that maximize the reach (trial rate) and the revenue.\n\nThe van Westendorp Price Sensitivity Meter is a common method in market research to analyze consumer price preferences and price sensitivity. Examples include OpenAI's decision how to determine the price for ChatGPT Pro ([source](https://simonwillison.net/2025/Aug/12/nick-turley/)).\n\n## Installation\n\nAs of version 0.2.1, this package is [available on CRAN](https://cran.r-project.org/package=pricesensitivitymeter).\n\n```{r installation, eval = FALSE}\n# install the stable release from CRAN\ninstall.packages(\"pricesensitivitymeter\")\n\n# install the development version from Github\ndevtools::install_github(\"max-alletsee/pricesensitivitymeter\")\n```\n\n## Usage\n\nThe main function of the package is `psm_analysis()` which performs all necessary analyses. \n\n```{r example}\n## creating example data\n\ntch \u003c- round(rnorm(n = 250, mean = 8.5, sd = 1), digits = 2)\nch \u003c- round(rnorm(n = 250, mean = 10, sd = 1), digits = 2)\nex \u003c- round(rnorm(n = 250, mean = 12, sd = 0.75), digits = 2)\ntex \u003c- round(rnorm(n = 250, mean = 13, sd = 1), digits = 2)\n\ndata_psm_demo \u003c- data.frame(tch, ch, ex, tex)\n\nlibrary(pricesensitivitymeter)\n\n## running the analysis\noutput_psm_demo \u003c- psm_analysis(\n  toocheap = \"tch\",\n  cheap = \"ch\",\n  expensive = \"ex\",\n  tooexpensive = \"tex\",\n  data = data_psm_demo\n)\n\nsummary(output_psm_demo)\n```\n\nThe 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.\n\n```{r example_plot}\nlibrary(ggplot2)\n\npsm_plot(output_psm_demo) +\n  labs(\n    x = \"Price\",\n    y = \"Share of Respondents (0-1)\",\n    title = \"Example Price Sensitivity Meter Plot\",\n    caption = \"Shaded area: range of acceptable prices\\nData: Randomly generated\") + \n  theme_minimal()\n\n```\n\n\n## Additional Information\n\n* Please [report any issues or bugs](https://github.com/max-alletsee/pricesensitivitymeter/issues).\n* License: MIT\n\n## References \n\nVan 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](https://archive.researchworld.com/a-new-approach-to-study-consumer-perception-of-price/).\n\nNewton, 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*.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmax-alletsee%2Fpricesensitivitymeter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmax-alletsee%2Fpricesensitivitymeter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmax-alletsee%2Fpricesensitivitymeter/lists"}