7
$\begingroup$

Let's say I have a dataset with 1000 observations in 10 variables, "A" through "J." I have 1000 responses/measures for each of the first 8 variables, through "H," but only the first 500 observations for "I" are not missing, and only the last 500 observations for "J" are not missing -- there are no observations for which I have measures of both of the last two variables, I and J.

Thus, if I calculate (pairwise) correlations, I have a full correlation matrix, with only the correlation between I and J missing. Let's say I want to run Principal Component Analysis, or some other such scaling procedure on this correlation matrix.

What I think I would like to do is:

  1. Randomly generate (perhaps from some distribution on [-1, 1], or perhaps via sampling from existing values in the rest of the correlation matrix) an "invented" correlation between I and J.
  2. Put that in the correlation matrix.
  3. Run PCA on the correlation matrix with this invented value.
  4. Repeat steps 1 - 3 some large number of times.
  5. Assess the collective results of this large number of PCAs, looking at the mean and variance of the loadings, scores, eigenvalues, etc., based on the "pseudo-bootstrapped" iterations.

Questions:

  1. Is there a better way to handle (a) missing value(s) in the correlation matrix?
  2. Is there any precedent for replacing such (a) missing value(s) with random invented values? If so, what is it called?
  3. Is this related to the bootstrap?

Thanks a lot, in advance.

Edit: Question 4. Is this a defensible approach to imputation?

$\endgroup$
5
$\begingroup$
  1. I don't know.
  2. What you've shown is a legitimate Monte Carlo simulation
  3. Bootstrap is also a Monte Carlo method, but it is more about estimating distributions.
  4. In general yes, especially if imputation is giving poor results. In special cases when imputation works great, no. In simple words, it will be as good as strongly you are convinced that you cannot say more about I&J correlation that it is in -1..1.
| cite | improve this answer | |
$\endgroup$
  • $\begingroup$ I'll run with the idea that it's Monte Carlo -- thanks for the response. $\endgroup$ – rapidadverbssuck Aug 30 '10 at 12:44
5
$\begingroup$

An alternative approach would be to impute the missing raw data using a missing data replacement procedure. You could then run the PCA on the correlation matrix that resulted from the imputed dataset (see also multiple imputation).

Here are a few links on missing data imputation in R:

| cite | improve this answer | |
$\endgroup$
5
$\begingroup$
  1. I think we need to know more about the nature of the data to make recommendations on how to deal with the missing values. An exploratory task that jumps out to me is to look at the behavior of variables A through H when I is present, versus A through H when J is present. Is there anything interesting to take into account for subsequent modeling? Instead of resampling a descriptive statistic, like correlation, I would consider resampling the data itself. For example, you could use the bootstrap to create 500 new (I,J) pairs based upon the 500 values you actually have for these variables. But, again, the exploratory work may inform a resampling scheme beyond a "naive", IID approach.

  2. In general, as others have noted, filling in missing data goes by "imputation" and there are different techniques depending on the context. For example, in one setting I might simply use a median value, or a spline fit, but for a missing data point in a time series I might impute with a value generated from an ARMA time series model.

  3. Your outlined solution would be "bootstrapping" if you resample from the observed data. I think of Monte Carlo as any method that uses probabilistic sampling of data as input into a computation. When the sampling is from a non-parametric or parametric distribution that you use to model how the data was generated, I still call it Monte Carlo. But, when the sampling is done from an empirical distribution (i.e., the observed data itself, not a model of the data generating process) I call it bootstrapping.

| cite | improve this answer | |
$\endgroup$
  • $\begingroup$ Re: "I think of Monte Carlo as any method that uses probabilistic sampling of data as input into a computation..." this is a useful way for me to think of the problem. Thank you. $\endgroup$ – rapidadverbssuck Aug 30 '10 at 17:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.