<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<!-- Template generated by Exclaimer Template Editor on 05:45:49 Tuesday, 4 October 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I was testing some R code in Chapter 13 on Choice Based Conjoint. I was going through the step by step introduction you have that creates the
<b><u>cbc.df</u></b> data file from scratch. Here is the code (<i>in italics</i>) I have so far when the following error cropped up<b>: Error in nrow(profiles) : object 'profiles' not found</b> (please see the
<span style="background:yellow;mso-highlight:yellow">highlighted code</span> at the end of the code section in the email below). What is causing the error?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks for your help.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Sri<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">attrib <- list(seat = c("6", "7", "8"),<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">cargo = c("2ft", "3ft"),<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">eng = c("gas", "hyb", "elec"),<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">price = c("30", "35", "40"))<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">coef.names <- NULL<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">for (a in seq_along(attrib)) {<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">coef.names <- c(coef.names,<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">paste(names(attrib)[a], attrib[[a]][-1], sep=""))<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">}<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">coef.names<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">mu <- c(-1, -1, 0.5, -1, -2, -1, -2)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">names(mu) <- coef.names<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">mu<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">Sigma <- diag(c(0.3, 1, 0.1, 0.3, 1, 0.2, 0.3))<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">dimnames(Sigma) <- list(coef.names, coef.names)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">Sigma["enghyb", "engelec"] <- Sigma["engelec", "enghyb"] <- 0.3<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">set.seed(33040)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">resp.id <- 1:200 # respondent ids<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">carpool <- sample(c("yes", "no"), size=length(resp.id), replace=TRUE, prob=c(0.3, 0.7))<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">library(MASS)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">coefs <- mvrnorm(length(resp.id), mu=mu, Sigma=Sigma)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">colnames(coefs) <- coef.names<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">coefs[carpool=="yes", "seat8"] <- coefs[carpool=="yes", "seat8"] + 2<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">coefs[carpool=="yes", "seat7"] <- coefs[carpool=="yes", "seat7"] + 1.5<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">head(cbind(carpool, coefs))<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">nques <- 15<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">nalt <- 3<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">profiles <- expand.grid(attrib)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">nrow(profiles)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">head(profiles)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">profiles.coded <- model.matrix(~ seat + cargo + eng + price, data=profiles)[ , -1]<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">head(profiles.coded)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">cbc.df <- data.frame(NULL)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">for (i in seq_along(resp.id)) {<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif";background:yellow;mso-highlight:yellow">profiles.i <- sample(1:nrow(profiles), size=nques*nalt)</span></i><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">utility <- profiles.coded[profiles.i, ] %*% coefs[i, ]<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">wide.util <- matrix(data=utility, ncol=nalt, byrow=TRUE)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">probs <- exp(wide.util) / rowSums(exp(wide.util))<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">choice <- apply(probs, 1, function(x) sample(1:nalt, size=1, prob=x))<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">choice <- rep(choice, each=nalt)==rep(1:nalt, nques)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">conjoint.i <- data.frame(resp.id=rep(i, nques),<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">ques = rep(1:nques, each=nalt),<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">alt = rep(1:nalt, nques),<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">carpool = rep(carpool[i], nques),<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">profiles[profiles.i, ],<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">choice = as.numeric(choice))<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">cbc.df <- rbind(cbc.df, conjoint.i)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""># Tidy up, keeping only cbc.df and attrib<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">rm(a, i, resp.id, carpool, mu, Sigma, coefs, coef.names,<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">conjoint.i, profiles, profiles.i, profiles.coded, utility,<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">wide.util, probs, choice, nalt, nques)<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif"">}<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><i><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></i></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p style="MARGIN-TOP: 30pt"></p>
<hr id="HR1">
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; COLOR: #006600; MARGIN: 0pt">Please help the environment. Only print this email if absolutely necessary.
</p>
<p style="FONT-SIZE: 8pt; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #7f7f7f; MARGIN: 0pt">
<br>
DISCLAIMER: The information in this message is confidential and may be legally privileged. It is intended solely for the addressee. Access to this message by anyone else is unauthorised. If you are not the intended recipient, any disclosure, copying, or distribution
 of the message, or any action or omission taken by you in reliance on it, is prohibited and may be unlawful. Please immediately contact the sender if you have received this message in error.</p>
</body>
</html>