R-CMD-check CRAN Status Downloads

🛠️ The One-Stop Conjoint Shop: projoint


Conjoint survey designs are spreading across the social sciences due to their unusual capacity to estimate many quantities of interest from a single randomized experiment. Projoint is general-purpose software for the design, implementation, and analysis of conjoint surveys. Its easy-to-use components include a drag-and-drop web-based application for survey design and an R package for analysis.

We created this software for our AJPS article (“Correcting Measurement Error Bias in Conjoint Survey Experiments”), which offers easier and more powerful ways of designing and analyzing conjoint experiments – including everything from writing Qualtrics survey code for you to preparing figures for your paper or report. It also includes easy measurement error corrections, which are essential because conjoint’s tendency to mirror complicated real-world choices generates substantial measurement error and, without corrections, considerable bias.

We intend for Projoint software to be the easiest and fastest way to design, field, and analyze conjoint surveys.ⓘ Take the 6 steps below and you should be all set.


🚀 Six Easy Steps

1. Install the development version from GitHub

Open R (or install R if you do not have it), and run the following command in your coding environment.

devtools::install_github("yhoriuchi/projoint")
2. Design your survey

Online surveys are frequently written with an online software called Qualtrics. Using our web tool, called the Projoint Survey Designer, you don’t need to learn how to write a survey in Qualtrics.

3. Field your survey
4. Read the results into R and wrangle your data into structured form
library(projoint)
dat <- read_Qualtrics("your_file.csv")
dat <- reshape_projoint(
  .dataframe = dat,
  .outcomes = c(paste0("choice", 1:8), "choice1_repeated_flipped")
)
5. Analyze and visualize important Quantities of Interest

Note: The following example illustrates a profile_level analysis. This approach is common in social science and useful as an initial diagnostic, but we encourage researchers to consider choice_level analysis (the default for .structure). See Choice-Level Analysis. Detailed steps of analysis appear in the step-by-step guide.

output <- projoint(out1_arranged, .structure = "profile_level")
print(output)
summary(output)
plot(output)
6. Explore additional quantities and compare subgroups

📦 Additional Info

Upcoming Features
Comments, questions, or suggestions? Please check issues already filed at our GitHub repository. If you don’t see an answer to your question, click on the green “new issue” button.

✨ Thank you for using projoint! ✨