Van Westendorp price modeling in R I want to do price modeling using the Van Westendorp price sensitivity meter. 
Can anybody provide me resources describing how to do this using R?
 A: I'm sure there's a nicer way, but here's an example. Obviously, you'll have to make sure your data is clean ie, no bogus elements where notexpensive > tooexpensive, etc. Survey respondents have a knack for messing up this question. I used Hmisc here because it allows you to easily invert with Ecdf(...,what="1-F"). 
From your own data, you'd replace my sample() calls in the initial data.frame(), below, with the relevant columns from your survey.   
library(Hmisc)
library(ggplot2)
dat <- data.frame(
"toocheap"=sample(1:15,1000,replace=T),
"notbargain"=sample(5:25,1000,replace=T),
"notexpensive"=sample(10:35,1000,replace=T),
"tooexpensive"=sample(20:45,1000,replace=T)
)
a <- Ecdf(dat$toocheap,what="1-F",pl=F)$y[-1]
b <- Ecdf(dat$notbargain, pl=F)$y[-1]
c <- Ecdf(dat$notexpensive,what = "1-F", pl=F)$y[-1]
d <- Ecdf(dat$tooexpensive,pl=F)$y[-1]

ecdf1 <- data.frame("variable"=c("toocheap"),"ecdf" = a, "value"=as.numeric(names(a)))
ecdf2 <- data.frame("variable"=c("notbargain"), "ecdf" = b, "value"=as.numeric(names(b)))
ecdf3 <- data.frame("variable"=c("notexpensive"),"ecdf" = c, "value"=as.numeric(names(c)))
ecdf4 <- data.frame("variable"=c("tooexpensive"),"ecdf" = d, "value"=as.numeric(names(d)))

dat2 <- rbind(ecdf1,ecdf2,ecdf3,ecdf4)

dat <- melt(dat)
dat <- merge(dat,dat2,by=c("variable","value"))

ggplot(dat, aes(value, ecdf, color=variable)) + 
geom_step() + 
scale_y_continuous("",formatter="percent") + 
labs(x="Price in $")


A: I am developing this library: https://github.com/kintero/psmr
# library(devtools)
# devtools::install_github("kintero/psmr")
library(psmr)

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)

psmObject<-psm(dat, "toocheap", "cheap", "expensive", "tooexpensive")
plot(psmObject)


It's easy to use and only has 3 functions. 
