Description Usage Arguments Details Value Note Author(s) References See Also Examples
Market simulation using the MCI model
1 2 |
mcimodel |
Object ( |
origins.pot |
The column representing the customer potential in the origins in the interaction matrix in |
... |
Explanatory variables (partial utilites) and their corresponding weighting parameters (variable1, parameter1, variable2, parameter2, ...) |
mcitrans |
Type of MCI transformation: Log-centering transformation ( |
interc |
Intercept to be included |
This function calculates a market simulation using the Multiplicative Competitive Interaction (MCI) Model based on a given MCI model.
A mcimodel list
(invisible) containing the following components:
mcimat |
MCI interaction matrix ( |
mcitotal |
Total location market areas ( |
The function is a wrapper of mci.shares
and shares.total
of the MCI package. For further information see the MCI documentation and the corresponding RJ paper (Wieland 2017).
Thomas Wieland
Huff, D. L./Batsell, R. R. (1975): “Conceptual and Operational Problems with Market Share Models of Consumer Spatial Behavior”. In: Advances in Consumer Research, 2, p. 165-172.
Huff, D. L./McCallum, D. (2008): “Calibrating the Huff Model Using ArcGIS Business Analyst”. ESRI White Paper, September 2008. https://www.esri.com/library/whitepapers/pdfs/calibrating-huff-model.pdf
Nakanishi, M./Cooper, L. G. (1974): “Parameter Estimation for a Multiplicative Competitive Interaction Model - Least Squares Approach”. In: Journal of Marketing Research, 11, 3, p. 303-311.
Nakanishi, M./Cooper, L. G. (1982): “Simplified Estimation Procedures for MCI Models”. In: Marketing Science, 1, 3, p. 314-322.
Wieland, T. (2017): “Market Area Analysis for Retail and Service Locations with MCI”. In: The R Journal, 9, 1, p. 298-323. https://journal.r-project.org/archive/2017/RJ-2017-020/RJ-2017-020.pdf.
Wieland, T. (2018): “Competitive locations of grocery stores in the local supply context - The case of the urban district Freiburg-Haslach”. In: European Journal of Geography, 9, 3, p. 98-115.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | # Compilation of tcmat list from existing datasets:
# (Results from the tcmat.create function)
data(Haslach_tcmatAirline)
# airline distances
data(Haslach_coords_origins)
# Coordinates of origins
data(Haslach_coords_destinations)
# Coordinates of destinationes
# Component "tc.mode":
Airline_tc.mode <- list()
Airline_tc.mode$tc.type = "airline"
Airline_tc.mode$tc.unit = "km"
Airline_tc.mode$tc.constant = 0
# tcmat with airline distances
# Compilation as a list:
tcmat_haslach_airline <- list(tcmat = Haslach_tcmatAirline,
coords_origins = Haslach_coords_origins,
coords_destinations = Haslach_coords_destinations,
tc.mode = Airline_tc.mode)
Drvtime_tc.mode <- list()
Drvtime_tc.mode$tc.type = "street"
Drvtime_tc.mode$tc.unit = "min"
Drvtime_tc.mode$tc.constant = 0
data(Haslach_tcmatDrvtime)
# car driving times
# tcmat with car driving times
# Compilation as a list:
tcmat_haslach_drvtime <- list(tcmat = Haslach_tcmatDrvtime,
coords_origins = Haslach_coords_origins,
coords_destinations = Haslach_coords_destinations,
tc.mode = Drvtime_tc.mode)
data(HaslachSurvey)
# survey raw data (Store choices and purchases)
data(HaslachDistricts)
# IDs and information about customer origins
data(HaslachStores)
# IDs and information about destinations (grocery stores)
# Preparing raw data (HaslachSurvey)
HaslachSurvey_prepared <- rawdata.prep (cols.below1 =
list(HaslachSurvey$LM1_Text, HaslachSurvey$LM2_Text),
cols.below2 = list(HaslachSurvey$LM1E, HaslachSurvey$LM2E),
cols.keep = list(HaslachSurvey$WO),
colnames.new = c("LM", "LME", "Wohnort"))
# "WO" and "Wohnort" = origin ID
# "LM1_Text", "LM2_Text" and "LM" = destination IDs (grocery stores)
# "LM1E", "LM2E" and "LME" = grocery store purchases
# Creating a MCI interaction matrix
# based on raw data of a survey (HaslachSurvey_prepared)
# and a tcmat list object
mcimat_haslach <- mcimat.create(rawdata = HaslachSurvey_prepared,
origins.id = "Wohnort", destinations.id = "LM", "LME",
tcmat = tcmat_haslach_airline,
remOrig = c("SBXXX", "SB613"), corObserved = 0.1,
origvar.data = HaslachDistricts, origvardata.id = "WO",
destvar.data = HaslachStores, destvardata.id = "LM")
# MCI model based on empirical local market shares
# two explanatory variables: distance (d_ij), store size (LM_VKF)
mcimodel_haslach <- mci (mcimat_haslach, "p_ij", "d_ij", "LM_VKF",
show_proc = TRUE)
if (!require("MCI")) install.packages("MCI")
# Needed for function var.asdummy from package MCI
# Integration of chains as dummy variables
chaindummies <- var.asdummy(HaslachStores$LM_Name)
HaslachStores <- cbind(HaslachStores, chaindummies)
mcimat_haslach2 <- mcimat.create (rawdata = HaslachSurvey_prepared,
origins.id = "Wohnort", destinations.id = "LM", "LME",
tcmat = tcmat_haslach_airline,
remOrig = c("SBXXX", "SB613"), remDest = "LM00", corObserved = 0.1,
origvar.data = HaslachDistricts, origvardata.id = "WO",
destvar.data = HaslachStores, destvardata.id = "LM")
mcimodel_haslach2 <- mci (mcimat = mcimat_haslach2, shares = "p_ij_obs_LME",
"d_ij", "LM_VKF", "Aldi_DUMMY", "Edeka_DUMMY", "Netto_DUMMY",
"Lidl_DUMMY", "Real_DUMMY")
# same analysis as above, but including chain dummies
mcisim_haslach2 <- mci.sim (mcimodel_haslach2, origins.pot = "WO_Einwohner",
"d_ij", -3.1627045, "LM_VKF", 4.5001070,
"Aldi_DUMMY", 0.6012442, "Edeka_DUMMY", 0.4078891, "Netto_DUMMY", -0.4179182,
"Lidl_DUMMY", 1.3272989, "Real_DUMMY", -2.8156859,
mcitrans = "ilc", interc = NULL)
# MCI simulation based on mcimodel_haslach2
# "d_ij", -3.1627045, "LM_VKF", 4.5001070, "Aldi_DUMMY", 0.6012442, ...
# = explanatory variables and their corresponding weighting parameters
# mcitrans = "ilc": inverse log-centering transformation
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.