Learn R Programming

MCI (version 1.3.3)

huff.decay: Distance decay function in the Huff model

Description

This function estimates a distance decay function from observed data and compares different function types

Usage

huff.decay(dataset, x, y, plotFunc = TRUE)

Arguments

dataset

A data.frame containing the observed interaction data and the transport costs

x

A numeric vector containing the independent variable, the transport costs (e.g. traveling time or street distance)

y

A numeric vector containing the dependent variable, the interaction measure (e.g. local market shares, trip volume, visitors per capita)

plotFunc

logical argument that indicates if the curves are plotted (default: plotFunc = TRUE)

Value

A data.frame containing the function parameters (Intercept, Slope), their p values in the regression function (p Intercept, p Slope) and fitting measures (R-Squared, Adj. R-Squared). Optionally, a plot of the four estimated functions and the observed data.

Details

The distance decay function is a classic concept in quantitative economic geography and describes the relationship between transport costs and trip volume between origins (\(i\)) and a destination (\(j\)). The dependent variable is an indicator of trip volume, such as local market shares or visitors per capita etc., which are explained by the transport costs between all \(i\) and the destination \(j\), \(d_{ij}\).

The non-linear modeling of transport costs is a key concept of the Huff model (see the function huff.shares). This function estimates and compares different types of possible distance decay functions (linear, power, exponential, logistic) based on observed interaction data.

References

Huff, D. L. (1962): “Determination of Intra-Urban Retail Trade Areas”. Los Angeles : University of California.

Huff, D. L. (1963): “A Probabilistic Analysis of Shopping Center Trade Areas”. In: Land Economics, 39, 1, p. 81-90.

Huff, D. L. (1964): “Defining and Estimating a Trading Area”. In: Journal of Marketing, 28, 4, p. 34-38.

Isard, W. (1960): “Methods of Regional Analysis: an Introduction to Regional Science”. Cambridge.

Kanhaeusser, C. (2007): “Modellierung und Prognose von Marktgebieten am Beispiel des Moebeleinzelhandels”. In: Klein, R./Rauh, J. (eds.): Analysemethodik und Modellierung in der geographischen Handelsforschung. Geographische Handelsforschung, 13. Passau. p. 75-110.

Loeffler, G. (1998): “Market areas - a methodological reflection on their boundaries”. In: GeoJournal, 45, 4, p. 265-272.

See Also

huff.shares, huff.attrac, huff.fit, mci.fit

Examples

Run this code
# NOT RUN {
# Market area analysis based on the POS survey in shopping1 #

data(shopping1)
# The survey dataset
data(shopping2)
# Dataset with distances and travel times

shopping1_adj <- shopping1[(shopping1$weekday != 3) & (shopping1$holiday != 1) 
& (shopping1$survey != "pretest"),]
# Removing every case from tuesday, holidays and the ones belonging to the pretest

ijmatrix_POS <- ijmatrix.create(shopping1_adj, "resid_code", "POS", "POS_expen")
# Creates an interaction matrix based on the observed frequencies (automatically)
# and the POS expenditures (Variable "POS_expen" separately stated)

ijmatrix_POS_data <- merge(ijmatrix_POS, shopping2, by.x="interaction", by.y="route", 
all.x = TRUE)
# Adding the distances and travel times

ijmatrix_POS_data$freq_ij_abs_cor <- var.correct(ijmatrix_POS_data$freq_ij_abs, 
corr.mode = "inc", incby = 0.1)
# Correcting the absolute values (frequencies) by increasing by 0.1

data(shopping3)
ijmatrix_POS_data_residdata <- merge(ijmatrix_POS_data, shopping3)
# Adding the information about the origins (places of residence) stored in shopping3

ijmatrix_POS_data_residdata$visitper1000 <- (ijmatrix_POS_data_residdata$
freq_ij_abs_cor/ijmatrix_POS_data_residdata$resid_pop2015)*1000
# Calculating the dependent variable
# visitper1000: surveyed customers per 1.000 inhabitants of the origin

ijmatrix_POS_data_residdata <- 
ijmatrix_POS_data_residdata[(!is.na(ijmatrix_POS_data_residdata$
visitper1000)) & (!is.na(ijmatrix_POS_data_residdata$d_time)),]
# Removing NAs (data for some outlier origins and routes not available)

ijmatrix_POS_data_residdata_POS1 <- 
ijmatrix_POS_data_residdata[ijmatrix_POS_data_residdata$POS=="POS1",]
# Dataset for POS1 (town centre)

ijmatrix_POS_data_residdata_POS2 <- 
ijmatrix_POS_data_residdata[ijmatrix_POS_data_residdata$POS=="POS2",]
# Dataset for POS2 (out-of-town shopping centre)

huff.decay(ijmatrix_POS_data_residdata_POS1, "d_km", "visitper1000")
huff.decay(ijmatrix_POS_data_residdata_POS1, "d_time", "visitper1000")
huff.decay(ijmatrix_POS_data_residdata_POS2, "d_km", "visitper1000")
huff.decay(ijmatrix_POS_data_residdata_POS2, "d_time", "visitper1000")
# }

Run the code above in your browser using DataLab