Co-kriging is often used, as you mentioned, when we have a 'secondary' source of data. The main idea is that the abundant data is a good guess of the primary data, but they're not the same so you should perform a 'correction' using the primary data. It is almost always the case that the secondary data is much easier to collect. We will call the abundant (secondary) data $D_A = \{y_a, x_a\}$ and the main data (primary) $D_p = \{y_p, x_p\}$. Usually $y$ is a scalar observation and $x$ will be a $2d$ or $3d$ vector of position data. However in the computer experiments literature, $x$ and $y$ can be of any dimension. My background is in computer experiments/emulators so my references will be from that literature rather than geo/spatial statistics, but the idea is almost identical.
- This could be a proxy variable (e.g. two mineral contents in a type of rock could be correlated, but it might be easier/cheaper to extract one type than the other).
- The other case is 'fidelity' or 'coarseness'. For example, I might have lots of cheap weather sensors over an area of interest that are okay at measuring temperature, but I then might have a few very accurate sensors spread out over the same area that produce very accurate temperature data. I would use the cheap weather sensors as a 'best guess' where there isn't an accurate sensor placed.
Now for the case of whether you need to have them in the same place. First assume that most of the $x_p$ are in $x_a$ Using the temperature example, If I knew I was going to perform co-kriging, then it makes sense to place the sensors next to each other. It makes the co-kriging maths fairly straighforward. I am aware of ways to get around this; you can impose a missing data mechanism on the $x_p$ that are not in $x_a$. In a Bayesian framework this is relatively straightforward, we just slap a prior on the relevant $x_a$ and away we go. However, this is quite computationally expensive so I personally would avoid this unless it was very important.
Another approach to this would be to not use co-kriging and use a more general multivariate Gaussian process (MGP). I'm not overly familiar with their use in Kriging but I've seen a fair few multivariate emulators. My impression is that this is best used when $x_a = x_p$ (correct me if wrong!).
Another approach you can take is to build a Kriging model for $y_a, x_a$, and then use the predictions from this, $\hat{y}_a$ Kriging model as an input to the Kriging model for $y_p, x_p$. That is, $\hat{y}_p = f(x_p, \hat{y}_a)$. This might be a better approach when there is little 'agreement' between $x_a$ and $x_p$. I.e. your measurements are almost always at different places.
Finally, software implementation. I have found that the gstat package for R
will perform co-Kriging for you. There is also a very nice tutorial which will walk you through how to perform co-Kriging in R
. The tutorial has a lot of detailed, and relatively non-technical explanations of when to use co-Kriging. It could be very useful for you.