statsmodels.nonparametric.kernel_density.KDEMultivariateConditional#
- class statsmodels.nonparametric.kernel_density.KDEMultivariateConditional(endog, exog, dep_type, indep_type, bw, defaults=None, *, rng=None)[source]#
Conditional multivariate kernel density estimator
Calculates
P(Y_1,Y_2,...Y_n | X_1,X_2...X_m) = P(X_1, X_2,...X_n, Y_1, Y_2,..., Y_m)/P(X_1, X_2,..., X_m). The conditional density is by definition the ratio of the two densities, see [1].- Parameters:
- endog
listofndarraysor 2-Dndarray The training data for the dependent variables, used to determine the bandwidth(s). If a 2-D array, should be of shape (num_observations, num_variables). If a list, each list element is a separate observation.
- exog
listofndarraysor 2-Dndarray The training data for the independent variable; same shape as endog.
- dep_type
str The type of the dependent variables:
c : Continuous
u : Unordered (Discrete)
o : Ordered (Discrete)
The string should contain a type specifier for each variable, so for example
dep_type='ccuo'.- indep_type
str The type of the independent variables; specified like dep_type.
- bwarray_like or
str If an array, it is a fixed user-specified bandwidth. If a string, should be one of:
normal_reference: normal reference rule of thumb (default)
cv_ml: cross validation maximum likelihood
cv_ls: cross validation least squares
The bandwidths that are selected by one of the methods are kept in the range for which the kernels of the discrete variables are defined. The bandwidth of an unordered variable is at most
(levels - 1) / levels, wherelevelsis the number of distinct values of the variable, and the bandwidth of an ordered variable is less than 1. A user-specified bandwidth is used as given.Changed in version 0.15.1: The bandwidths of discrete variables that are selected by one of the methods are bounded. They can have been outside the range of the kernels, so that the density estimate was not a probability mass function.
- defaults
EstimatorSettingsinstance,optional The default values for the efficient bandwidth estimation
- rng
int, array_likeofint,numpy.random.Generator,ornumpy.random.RandomState,optional If rng is None, the legacy global (singleton)
RandomStateprovided bynumpy.randomis used; this behavior is deprecated and will change to creating a newGeneratorusing fresh entropy from the operating system in a future release. If rng is an int or array of ints, a newGeneratoris created, seeded with rng. If rng is already aGeneratororRandomStateinstance, that instance is used.Deprecated since version 0.15.0: In release 0.17.0 or after January 2028, whichever comes sooner, using None will initialize a new numpy.random.default_rng using system entropy.
- endog
- Attributes:
- bwarray_like
The bandwidth parameters
See also
References
Examples
>>> import statsmodels.api as sm >>> nobs = 300 >>> c1 = np.random.normal(size=(nobs,1)) >>> c2 = np.random.normal(2,1,size=(nobs,1))
>>> dens_c = sm.nonparametric.KDEMultivariateConditional(endog=[c1], ... exog=[c2], dep_type='c', indep_type='c', bw='normal_reference') >>> dens_c.bw # show computed bandwidth array([ 0.41223484, 0.40976931])
Methods
cdf([endog_predict, exog_predict])Cumulative distribution function for the conditional density
imse(bw)The integrated mean square error for the conditional KDE
loo_likelihood(bw[, func])Returns the leave-one-out conditional likelihood of the data
pdf([endog_predict, exog_predict])Evaluate the probability density function