Inferring causality between variables from time series data is of primary interest in various applications. Recently, convergent cross mapping (CCM) has been developed to address non-separable nonlinear dynamical systems based on nonlinear state space reconstruction. Unlike the idea in widely used Granger-causality, CCM measures the degree to which a cause can be recovered from its effect in the form of a cross map skill. Despite the superiority of CCM over GC, there are at least two known primary shortcomings. Firstly, detection of causal relationships using CCM in the presence of observational noise leads to spurious results. Secondly, it is unable to distinguish between direct and mediated causal relations. In this work, we address these two critical challenges. First, we investigate the effect of measurement noise on the functionality of cross map skill with sample size and propose a method for significance testing based on surrogate data analysis. Secondly, we develop a two-stage method to distinguish between direct and mediated cause. The first stage consists of pairwise analysis using CCM, while the second stage computes the regression coefficient between the hypothesised observed cause and all the recovered effects in the first stage. Direct connection is absent if the regression coefficient is zero between the observed cause and recovered causes from each effect. Simulation results are presented to illustrate the efficacy of the proposed method. © 2019 The Society of Instrument and Control Engineers - SICE.