I am trying to invert a function like one would invert an empirical cdf. If I wanted to invert an empirical cdf, I would write something like,

tau = 0.8
y=rnorm(1000,1)
[f,x]=ecdf(y)
q = interp1(f,x,tau,'next');

Instead, suppose that I have defined a function with multiple inputs, where all but the last input is based upon data. For example,

example_data= example_data_missingdatacdf(x1,x2,x3,scalar_delta)

I want to find the smallest value of delta such that

example_data_missingdatacdf(x1,x2,x3,scalar_delta)>= tau

What can I do? Thanks for any help in advance.

1

There are 1 answers

0
Cris Luengo On BEST ANSWER

You would find the value of scalar_delta for which example_data_missingdatacdf(x1,x2,x3,scalar_delta) - tau = 0. Assuming the function is monotonously increasing, this is the smallest value that satisfies your requirement.

There are standard numerical techniques to find the zero crossing of a function. MATLAB implements such a technique in fzero.

This is how you’d use it:

fun = @(d) example_data_missingdatacdf(x1,x2,x3,d) - tau;
scalar_delta = fzero(fun, 0);

The 0 is the start point for the algorithm, your best guess. Given that the function is monotonic, it is not important to have a good guess, you will always find the only zero. But a good guess will make the algorithm converge faster.