Learn R Programming

MLCM (version 0.0-3)

mlcm: Fit Conjoint Measurement Models by Maximum Likelihood

Description

Generic function mlcm uses different methods to fit the results of a conjoint measurement experiment using glm (Generalized Linear Model). The default method (currently, the only one) permits fitting the data with a choice of 3 different models.

Usage

mlcm(x, ...)

## S3 method for class 'default': mlcm(x, model = "add", whichdim = NULL, lnk = "probit", control = glm.control(maxit = 50000, epsilon = 1e-14), ... )

Arguments

Value

  • a list of class mlcm with the following components:
  • pscalea vector or matrix giving the perceptual scale value estimates
  • sigmanumeric indicating judgment $\sigma$, currently always set to 1
  • NumDimnumeric indicating number of stimulus dimensions in data set
  • NumLevnumeric indicating the number of levels along both dimensions, currently assumed to be the same
  • modelcharacter indicating which of the 3 models were fit
  • linkcharacter indicating the link used for the binomial family with glm
  • objthe glm object

Details

In a conjoint measurement experiment, observers are presented with pairs of stimuli that vary along 2 or more dimensions. The observer's task is to choose which stimulus of the pair is greater along one of the dimensions. Over a large number of trials, mlcm estimates numbers,

$$\psi_1, ..., \psi_p, \psi'_1, ..., \psi'_q, ...$$,

by maximum likelihood using glm that best predict the observer's judgments.

The function permits the estimation of 3 different models, independent, additive (the default) and full, by specifying the model argument. The independent model fits the data along only 1 dimension, specified by the whichdim argument. The additive model fits all dimensions with each fixed at 0 at the lowest level on each dimension. Thus, if there are $n$ dimensions each with $p_i$ levels, mlcm estimates $\sum p_i - n$ coefficients.

Specifying the full model will fit a saturated model in which an estimate will be made for each combination of the scale values except the lowest (0 on all scales). Currently, this option only allows 2 dimensions to be fit.

References

Luce, R. D., and Tukey, J. W. (1964). Simultaneous conjoint measurement. Journal of Mathematical Psychology, 1, 1--27. Krantz, D. H., Luce, R. D., Suppes, P., and Tversky, A. (1971). Foundations of Measurement, Vol. 1: Additive and Polynomial Representations. New York: Academic Press. Ho, Y. H., Landy. M. S. and Maloney, L. T. (2008). Conjoint measurement of gloss and surface texture. Psychological Science, 19, 196--204.

See Also

glm

Examples

Run this code
# Additive model
bg.add <- mlcm(BumpyGlossy)
plot(bg.add, type = "b")

# Independence model for Bumpiness
bg.ind <- mlcm(BumpyGlossy, model = "ind", whichdim = 2)

anova(bg.ind, bg.add, test = "Chisq")

# Full model
bg.full <- mlcm(BumpyGlossy, model = "full")

anova(bg.add, bg.full, test = "Chisq")

opar <- par(mfrow = c(1, 2), pty = "s")
# Compare additive and full model graphically
plot(bg.full, standard.scale = TRUE, type = "b", 
	lty = 2, ylim = c(0, 1.05),
	xlab = "Gloss Level",
	ylab = "Bumpiness Model Estimates")
# additive prediction
bg.pr <- with(bg.add, outer(pscale[, 1], pscale[, 2], "+"))
# predictions are same for arbitrary scaling,
#  so we adjust additive predictions to best fit
#  those from the full model by a scale factor.
cf <- coef(lm(as.vector(bg.full$pscale/bg.full$pscale[5, 5]) ~ 
	as.vector(bg.pr) - 1))
matplot(cf * bg.pr, type = "b", add = TRUE, lty = 1)

#### Now make image of residuals between 2 models
bg.full.sc <- bg.full$pscale/bg.full$pscale[5, 5]
bg.add.adj <- cf * bg.pr
bg.res <- (bg.add.adj - bg.full.sc) + 0.5
image(1:5, 1:5, bg.res, 
	col = grey.colors(100, min(bg.res), max(bg.res)),
	xlab = "Gloss Level", ylab = "Bumpiness Level" 
	)
par(opar)

Run the code above in your browser using DataLab