summary.dirichlet {NBDdirichlet} | R Documentation |
Theoretical summary statistics from the Dirichlet model.
Description
This function summarizes a 'dirichlet' object. It is a method for the
generic function summary
of class 'dirichlet'. It
calculate four types of theoretical summary statistics, which can be
compared with the corresponding observed statistics.
Usage
## S3 method for class 'dirichlet'
summary(object, t = 1, type = c("buy", "freq", "heavy", "dup"),
digits = 2, freq.cutoff = 5, heavy.limit = 1:6, dup.brand = 1, ...)
Arguments
object |
An object of "dirichlet" class. |
t |
Multiple of the base time period. For example, if the assumed
base time period is quarterly, then |
type |
A character vector that specifies which types of
theoretical statistics (during the time period indicated by
|
digits |
Number of decimal digits to control the rounding precision of the reported statistics. Default to 2. |
freq.cutoff |
For the |
heavy.limit |
For the |
dup.brand |
For the |
... |
Other parameters passing to the generic function. |
Details
The output corresponds to the theoretical portion of the Table 3, 4, 5, 6 in the reference paper. We also have another set of functions (available upon request) that put observed and theoretical statistics together for making tables that resemble those in the reference.
Let P_n
be the probability of a consumer buying the product
category n
times. Then P_n
has a Negative Binomial
Distribution (NBD). Let p(r_j|n)
be the probability of making
r_j
purchases of brand j
, gien that n
purchases
of the category having been make (r_j\leq n
). Then p(r_j|n)
has a Beta-Binomial distribution.
The theoretical brand penetration b
is then
b = 1 - \sum_{n=0} P_n p(0|n)
The theoretical brand buying rate w
is
w = \frac{\sum_{n=1} \{ P_n \sum_{r=1}^n r p(r|n) \}}{b}
and the category buying rate per brand buyer w_P
is
w_P = \frac{\sum_{n=1} \{ n P_n [ 1 - p(0|n)] \}}{b}
The brand purchase frequency distribution is
f(r) = \sum_{n \geq r} P_n p(r|n)
The brand penetration given a specific category purchase frequency range
R=\{i_1, i_2, i_3, \ldots\}
is
1 - \frac{\sum_{n \in R} P(n) p(0|n)}{\sum_{n \in R} P(n)}
The brand buying rate given a specific category purchase frequency range
R=\{i_1, i_2, i_3, \ldots\}
is
\frac{\sum_{n \in R} P(n) [\sum_{r=1}^n r p(r|n)]}{\sum_{n \in R}
P(n) [1 - p(0|n)] }
To calculate the brand duplication measure, we first get the penetration b_{(j+k)}
of the "composite" brand of two brands j
and k
as:
b_{(j+k)} = 1 - \sum_n P_n p_k(0|n) p_j(0|n)
Then the theoretical proportion b_{jk}
of the population buying both brands at
least once is:
b_{jk} = b_j + b_k - b_{(j+k)}
and the brand duplication b_{j/k}
(where brand k
is the focal
brand) is:
b_{j/k} = b_{jk} / b_k
Value
A list with those components that are specified by the input
type
parameter.
buy |
A data frame with three components: |
freq |
A matrix that lists the distribution of brand purchases. The number of rows is the number of brands. |
heavy |
A matrix with two columns. The first column
( |
dup |
A vector with dimension as the number of brands. It reports
the brand duplication (proportion of buyers of a particular brand
also buying other brand) of the focal brand ( |
Author(s)
Feiming Chen
References
The Dirichlet: A Comprehensive Model of Buying Behavior. G.J. Goodhardt, A.S.C. Ehrenberg, C. Chatfield. Journal of the Royal Statistical Society. Series A (General), Vol. 147, No. 5 (1984), pp. 621-655
See Also
dirichlet
, print.dirichlet
,
plot.dirichlet
, NBDdirichlet-package
Examples
cat.pen <- 0.56 # Category Penetration
cat.buyrate <- 2.6 # Category Buyer's Average Purchase Rate in a given period.
brand.share <- c(0.25, 0.19, 0.1, 0.1, 0.09, 0.08, 0.03, 0.02) # Brands' Market Share
brand.pen.obs <- c(0.2,0.17,0.09,0.08,0.08,0.07,0.03,0.02) # Brand Penetration
brand.name <- c("Colgate DC", "Macleans","Close Up","Signal","ultrabrite",
"Gibbs SR","Boots Priv. Label","Sainsbury Priv. Lab.")
dobj <- dirichlet(cat.pen, cat.buyrate, brand.share, brand.pen.obs, brand.name)
## Not run: summary(dobj)
summary(dobj, t=4, type="freq")
summary(dobj, t=4, type="heavy", heavy.limit=c(7:50))
summary(dobj, t=1, type="dup", dup.brand=2)