La función mvnpdf() en MATLAB
Este tutorial analizará la evaluación de la función de densidad de probabilidad de una distribución normal multivariante utilizando la función mvnpdf()
en MATLAB.
Utilice la función mvnpdf()
en MATLAB
La distribución normal multivariada de la versión generalizada de la distribución normal univariada a dos o más variables. La distribución normal multivariante tiene dos parámetros similares a la distribución normal univariante, incluida la matriz de covarianza y el vector medio.
Los elementos fuera de la diagonal de la matriz de covarianza contienen las covarianzas entre variables, y los elementos diagonales de la matriz de covarianza contienen las varianzas de cada variable. En MATLAB, usamos la función mvnpdf()
para encontrar la función de densidad de probabilidad de la distribución normal multivariante.
La función mvnpdf()
tiene tres sintaxis que se indican a continuación.
Sintaxis:
output = mvnpdf(input)
output = mvnpdf(input, mu)
output = mvnpdf(input, mu, sigma)
El output = mvnpdf(input)
devolverá la función de densidad de probabilidad como un vector n-by-1
de la matriz de entrada, que contiene la distribución normal multivariada de dimensión m. La función evaluará la salida en cada fila de la matriz de entrada a lo largo de la dimensión n por m.
El output = mvnpdf(input, mu)
devolverá la función de densidad de probabilidad según la variable mu
, que define el valor medio de la distribución normal multivariante. La tercera sintaxis también incluirá la variable sigma
, que define la covarianza de la distribución normal multivariada.
En output = mvnpdf(input, mu, sigma)
, si solo queremos especificar el valor para sigma
y queremos usar el valor predeterminado de mu
, podemos pasar un vector vacío como valor para variable mu
como segundo argumento y establecer el valor de sigma
como tercer argumento. Podemos usar la función mvnrnd()
para crear una matriz de distribución normal multivariada que contenga números aleatorios.
Para crear la distribución normal multivariante aleatoria, tenemos que pasar el valor de las variables mu
y sigma
dentro de la función mvnrnd()
. También podemos establecer el número de filas de la matriz de salida definiendo el número como el tercer argumento dentro de la función mvnrnd()
.
Por ejemplo, creemos una matriz aleatoria de distribución normal multivariante usando la función mrnrnd()
y luego encontremos su función de densidad de probabilidad usando la función mvnpdf()
.
Código de ejemplo:
mu_v = zeros(1,4);
Sigma_m = eye(4);
rng('default')
random_mvn = mvnrnd(mu_v,Sigma_m,6)
out_pdf = mvnpdf(random_mvn)
Producción :
random_mvn =
0.5377 -0.4336 0.7254 1.4090
1.8339 0.3426 -0.0631 1.4172
-2.2588 3.5784 0.7147 0.6715
0.8622 2.7694 -0.2050 -1.2075
0.3188 -1.3499 -0.1241 0.7172
-1.3077 3.0349 1.4897 1.6302
out_pdf =
0.0057
0.0016
0.0000
0.0002
0.0074
0.0000
Usamos la función zeros()
para crear el vector para la variable mu
y la función eye()
para crear la matriz para la variable sigma
, y la función rng()
para controlar el azar generador de números, y lo hemos configurado por defecto para la reproducibilidad. El resultado anterior muestra la matriz aleatoria de distribución normal multivariada y el vector que contiene los valores de la función de densidad de probabilidad.
Supongamos que queremos encontrar la función de densidad de probabilidad en ciertos puntos según un valor medio diferente. Podemos definir los valores medios en la variable mu
como segundo argumento dentro de la función mvnpdf()
.
El tamaño de la matriz mu
debe ser el mismo que el tamaño de la matriz de entrada de la distribución normal multivariante.
Supongamos que queremos encontrar la función de densidad de probabilidad según un valor de covarianza diferente en ciertos puntos. Podemos definir los valores de covarianza en la variable sigma
como el tercer argumento dentro de la función mvnpdf()
.
El número de columnas de la matriz sigma
debe ser el mismo que el número de columnas de la matriz de entrada de distribución normal multivariada. Si queremos encontrar la función de densidad de probabilidad en los mismos puntos, podemos repetir el mismo punto dentro de la variable mu
, y por defecto, la variable mu
es un vector de ceros, y la variable sigma
es un matriz de unos.
Consulta este enlace para más detalles sobre la función mvnpdf()
, o este enlace para la función mvnrnd()
.