MATLAB: Missing data in input matrix – Using fminsearch

fminsearchnanzeros

Hi
I have a matrix where the rows represent "strikes" (money value) and columns represent "time-to-maturity" (time). This gives me a NxM matrix. However, some elements (pairs of money and time) in this matrix are represented as NaN since the values do not exist for these specific pairs.
The problem arises when using fminsearch in order to optimize and obtain parameter values, as fminsearch cannot deal with NaN-values. Replacing the NaN with 0-values does absolutely no good as the new 0-values are regarded as specific values rather than missing points. Deleting all rows where values do not occur across time (i.e. for all columns) leaves me with a much smaller matrix and hence less valid parameter estimation.
Does anyone have a good idea of how to overcome this issue?
Thanks!

Best Answer

It is possible that you will have to remove and then reintroduce variables. For example, suppose that your control variables are a matrix x. Then set
y = x;
y = y(:);
y(isnan(y)) = [];
Then optimize over y to get a solution yy. At the end, to get your solution yy back into the x matrix, set
x(~isnan(x)) = yy;
I hope that this is clear.
Alan Weiss
MATLAB mathematical toolbox documentation