cp: Carlson-Parkin method

Description Usage Arguments Details Value Please cite as: Author(s) References See Also Examples

View source: R/quantification.R

Description

cp implements the method for the quantifcation of qualitative survey data proposed by Carlson/Parkin (1985). Additionally, it provides certain extensions of the Carlson-Parkin approach (e.g. other distributions than the normal distribution, indifference limens depending on the level of the forecasted variable).

Usage

1
2
3
4
5
6
7
8
cp(y.series, survey.up, survey.same, survey.down, forecast.horizon, 
	first.period = 1, last.period = (length(survey.up) - forecast.horizon), 
	limen.type = "carlson.parkin", const.limen = 0, user.symm.limen = 0, 
	user.upper.limen = 0, user.lower.limen = 0, correct.zero = TRUE, 
	correct.by = 0.01, growth.limit = NA, distrib.type = "normal", 
	distrib.mean = 0, distrib.sd = 1, distrib.log.location = 0, 
	distrib.log.scale = 1, distrib.t.df = (last.period - first.period), 
	suppress.warnings = FALSE)

Arguments

y.series

a numerical vector containing the variable whose change is the subject of the qualitative survey question. If, for example the survey asks participants to assess whether inflation will increase, decrease or stay the same, y.series would be the series of inflation data.

survey.up

a numerical vector containing the number or the share of survey respondents expecting the variable contained in y.series to increase. This vector needs to be of the same length as y.series.

survey.same

a numerical vector containing the number or the share of survey respondents expecting the variable contained in y.series to stay the same. This vector needs to be of the same length as y.series.

survey.down

a numerical vector containing the number or the share of survey respondents expecting the variable contained in y.series to decrease. This vector needs to be of the same length as y.series.

forecast.horizon

a numeric value defining the number of periods the survey question looks in to the future. If the data in y.series is monthly data and the survey question asks respondents to assess the development of the variable over the next six months then forecast.horizon=6.

first.period

an optional numeric value indexing the first period for which survey data in survey.up, survey.same and survey.down shall be used for quantification; default value is 1.

last.period

an optional numeric value indexing the last period for which survey data in survey.up, survey.same and survey.down shall be used for quantification; default value is length(survey.up) - forecast.horizon.

limen.type

an optional character vector describing the type of indifference limen that shall be used for quantification. Possible values are:

  • "carlson.parkin": standard symmetric, time-invariant Carlson-Parkin indifference limens; default value.

  • "weber.fechner": symmetric, time-varying indifference limens following the Weber-Fechner law, i.e. proportional to the variable in question (i.e. y.series) at the time of the survey. For details see Henzel/Wollmershaeuser (2005).

  • "constant": symmetric, time-invariant indifference limen defined by the user through the const.limen argument

  • "symm.series": fully user-defined, symmetric, time-varying indifference limen given by the argument user.symm.limen.

  • "asymm.series": fully user-defined, asymmetric, time-varying indifference limens given by the arguments user.upper.limen and user.lower.limen.

const.limen

an optional numeric value containing the symmetric, time-invariant user-defined indifference limen. Must be provided when "constant" is chosen as limen.type. Is ignored otherwise. Default value is 0.

user.symm.limen

an optional numeric vector containing the symmetric, time-varying indifference limen. Must be provided when "symm.series" is chosen as limen.type. Is ignored otherwise. Default value is a 0.

user.upper.limen

an optional numeric vector containing the upper, time-varying indifference limen. Must be provided when "asymm.series" is chosen as limen.type. Is ignored otherwise. Default value is 0.

user.lower.limen

an optional numeric vector containing the lower, time-varying indifference limen. Must be provided when "asymm.series" is chosen as limen.type. Is ignored otherwise. Default value is 0.

correct.zero

an optional logical value steering the automatic correction of zero-values in survey.up and survey.down. If survey.up or survey.down are zero in any period then the Carlson-Parkin method delivers counter-intuitive results (see Nardo (2003) for details). Automatic correction changes the zero value to an amount specified by the correct.by argument. correct.zero=TRUE switches automatic correction on which is the default.

correct.by

an optional parameter indicating the amount by which survey.up and survey.down are corrected in case they have zero value and correct.zero=TRUE. Default value is 0.01.

growth.limit

serves to limit the effect of outliers when expectations are quantified under the assumption that survey respondents form expectations on the percentage change of y. growth.limit defines a limit for percentage change of y. When this limit is exceeded the growth rate is set automatically to the median growth of y over the period covered by the expectations. Default value is NA.

distrib.type

an optional character vector describing the type of distribution used for quantification. Possible values are:

  • "normal": the normal distribution is used. Default value for distrib.type. Parameters distrib.mean and distrib.sd can be used to specify the distribution.

  • "logistic": the logistic distribution is used. Parameters distrib.log.location and distrib.log.scale can be used to specify the distribution.

  • "t": the t distribution is used. Parameter distrib.t.df can be used to specify the distribution.

distrib.mean

an optional numerical value defining the mean of the normal distribution (used in case distrib.type="normal"). Default value is 0.

distrib.sd

an optional numerical value defining the standard deviation of the normal distribution (used in case distrib.type="normal"). Default value is 1.

distrib.log.location

an optional numerical value defining the location of the logistic distribution (used in case distrib.type="logistic"). Default value is 0.

distrib.log.scale

an optional numerical value defining the scale of the logistic distribution (used in case distrib.type="logistic"). Default value is 1.

distrib.t.df

an optional numerical value defining the degrees of freedom (df) of the t distribution (used in case distrib.type="t"). Default value is last.period - first.period.

suppress.warnings

a logical value indicating if runtime warnings shall be displayed (FALSE) or not (TRUE). Default value is FALSE.

Details

cp provides two alternative versions of quantified expectations, depending on the assumed expectation formation process of survey respondents. The basic common assumption of the Carlson-Parkin method is that survey participants are asked to assess whether variable y will go up or down or stay the same. Survey respondents can now form expectations on either the absolute or the relative change of y which differ because the indifferent limens used for quantification are calculated differently in each case. The cp function calculates both versions.

The survey result vectors survey.up, survey.down and survey.same as well as the variable y.series must be of the same length and must cover the forecasted horizon (i.e. last.period + forecast.horizon length(survey.up)).

Data in survey.up, survey.down and survey.same outside the survey period interval [first.period, last.period] are ignored. Similiarly, y.series data with a period index greater than last.period is ignored.

first.period must be greater than forecast.horizon, because indifference limens use the current change of variable y for calibration. In order to calculate the change in y for the survey obersavation with index first.period the observation of y with index first.period - forecast.horizon is required.

survey.up, survey.down and survey.same need not sum up to 100% or 1 (which may happen, for example, if the survey has a 'Don't know' answer option).

The Weber-Fechner option (see Henzel/Wollmershaeuser (2005) for details) weighs the 'expectations' term in the traditional Carlson-Parkin limen calculation with the current inflation rate. The resulting time-invariant value is applied as a proportionality factor to current inflation leading to a time-varying, inflation-proportional indifference limen.

When the indifference limen is user-defined (i.e. limen.type="symm.series" or limen.type="asymm.series") then each limen value needs to be placed in such a way in the limen vector(s) (i.e. user.limen or user.upper.limen / user.lower.limen) that it has the same index as the survey observation (in survey.up, survey.down and survey.same) to which it belongs.

Value

cp returns a list containing the quantified survey data and some meta information. The list has the following elements:

Please cite as:

Zuckarelli, Joachim (2014). Quantification of qualitative survey data in R.
R package version 0.1.0. http://CRAN.R-project.org/package=quantification

Author(s)

Joachim Zuckarelli, [email protected]

References

Carlson, J. A./Parkin, M. (1975), Inflation expectations, Economica 42, 123–138.

Henzel, S./Wollmershaeuser, T. (2005), Quantifying inflation expectations with the Carlson-Parkin method: A survey-based determination of the just noticeable difference, Journal of Business Cycle Measurement and Analysis 2, 321–352.

Nardo, M. (2003), The quantification of qualitative survey data: a critical assessment, Journal of Economic Surveys 17 (5), 645–668.

See Also

quantification-package, bal, ra, ce

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
## Data preparation: generate a sample dataset with inflation and survey data
inflation<-c(1.7, 1.9, 2, 1.9, 2, 2.1, 2.1, 2.1, 2.4, 2.3, 2.4)
answer.up<-c(67, 75.1, 76.4, 72.4, 69.7, 49.7, 45.2, 31.6, 14.9, 19.3, 19.2)
answer.same<-c(30.1, 19.6, 19.5, 21.3, 20.1, 33.1, 34.4, 33.5, 44.6, 38.1, 35.3)
answer.down<-c(2.9, 5.3, 4.1, 6.3, 10.2, 17.2, 20.4, 34.9, 40.5, 42.6, 45.5)

## Call cp for quantification
quant.cp.limens<-cp(inflation, answer.up, answer.same, answer.down, first.period=5, 
	last.period=7, forecast.horizon=4)

## With Weber-Fechner limens instead of Carson-Parkin limens
quant.wf.limens<-cp(inflation, answer.up, answer.same, answer.same, first.period=5, 
	last.period=7, forecast.horizon=4, limen.type="weber.fechner")

jsugarelli/quantification documentation built on July 17, 2018, 3:16 a.m.