Qualcuno ha dettagli su come funziona l'imputazione? Con questo intendo le equazioni alla base?
Ho provato un set di dati davvero semplice:
Ho eseguito la distribuzione normale multivariata con restringimento e ha riempito bene il valore mancante di Y = 3.
Poi ho fatto lo stesso, con:
e il risultato era Y = 3,584.
Mi piacerebbe conoscere i dettagli di come funziona l'algoritmo di assegnazione normale multivariata, ma non riesco a trovare una spiegazione semplice da nessuna parte. Qualche indizio?
La routine di Imputazione normale multivariata () è stato creato da @ chris_gotwalt1 o @clay_barker . Chiamo questa routine in Multivariate quando è necessaria l'imputazione dei dati.
Immagino che ti aspetti che il valore imputato sia identico al valore accanto ad esso. Questa aspettativa non è realistica.
Pensa al Normale in nome di questa funzione e immagina un normale CDF centrato su 3 nel tuo caso, con 1 e 5 agli estremi. Solo il 3 sarebbe il valore esatto. Gli altri sono ai limiti. Questo è estremamente semplicistico e ha lo scopo di darti un'idea e non di come funziona effettivamente.
Non sono in grado di fornire una spiegazione dettagliata su come funziona Multivariate Normal Impute (), ma i valori assegnati sono influenzati dalla media, dalla covarianza e sono limitati con min e max.
Ho creato il seguente jsl per aiutare a dimostrare come funziona.
///////////////////////////////////////// JSL explains how data is imputed by Multivariate Normal Impute ////////////////////////////////////////////////////
/***************************************************************************************
y = Multivariate Normal Impute( yVec, meanYvec, symCovMat, colMin, colMax )
Returns a response vector with imputed values for the missing values in the
[[yVec]] vector of responses. Imputations are based on a multivariate normal
distribution with mean vector [[meanYvec]] and symmetric covariance matrix [[symCovMat]].
Optional arguments [[colMin]] and [[colMax]] are the respective vectors of column minimums
and maximums. These arguments provide bounds for the imputations."
******************************************************************************************/
//Imputation example
matFull=[1 1,
2 2,
3 3,
4 4,
5 5
];
for (i=1, i<=N Row( matFull), i++,
mat=matFull;
mat[i,2]=.;
//calculate a variance
cov = Covariance(
mat,
<
Grazie @jianfeng_ding ! Questo è molto utile. Posso "vedere" come funziona ora.
Jerry