Class NonlinearAdditiveNoiseModel

java.lang.Object
edu.cmu.tetrad.sem.NonlinearAdditiveNoiseModel

public class NonlinearAdditiveNoiseModel extends Object
Represents a nonlinear additive noise causal model (Hoyer et al., 2008).

The form of the recursive model is Xi = fi(Pa(Xi)) + Ni

Hoyer, P., Janzing, D., Mooij, J. M., Peters, J., & Schölkopf, B. (2008). Nonlinear causal discovery with additive noise models. Advances in neural information processing systems, 21.

Zhang, K., & Hyvärinen, A. (2009). Causality discovery with additive disturbances: An information-theoretical perspective. In Machine Learning and Knowledge Discovery in Databases: European Conference, ECML PKDD 2009, Bled, Slovenia, September 7-11, 2009, Proceedings, Part II 20 (pp. 570-585). Springer Berlin Heidelberg.

Zhang, K., & Hyvarinen, A. (2012). On the identifiability of the post-nonlinear causal model. arXiv preprint arXiv:1205.2599.

Chu, T., Glymour, C., & Ridgeway, G. (2008). Search for Additive Nonlinear Time Series Causal Models. Journal of Machine Learning Research, 9(5).

Bühlmann, P., Peters, J., & Ernest, J. (2014). "CAM: Causal Additive Models, high-dimensional order search and penalized regression". The Annals of Statistics.

Peters, J., Mooij, J. M., Janzing, D., & Schölkopf, B. (2014). "Causal Discovery with Continuous Additive Noise Models". Journal of Machine Learning Research.

Hastie, T., & Tibshirani, R. (1986). "Generalized Additive Models".

Hyvarinen, A., & Pajunen, P. (1999). "Nonlinear Independent Component Analysis: Existence and Uniqueness Results"

  • Constructor Summary

    Constructors
    Constructor
    Description
    NonlinearAdditiveNoiseModel(Graph graph, int numSamples, org.apache.commons.math3.distribution.RealDistribution noiseDistribution, double rescaleMin, double rescaleMax, int hiddenDimension, double inputScale)
    Constructs a nonlinear additive noise model based on a directed acyclic graph (DAG).
  • Method Summary

    Modifier and Type
    Method
    Description
    Generates synthetic data based on a directed acyclic graph (DAG) with causal relationships and post-nonlinear causal mechanisms.
    void
    Sets the activation function for the model.

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • NonlinearAdditiveNoiseModel

      public NonlinearAdditiveNoiseModel(Graph graph, int numSamples, org.apache.commons.math3.distribution.RealDistribution noiseDistribution, double rescaleMin, double rescaleMax, int hiddenDimension, double inputScale)
      Constructs a nonlinear additive noise model based on a directed acyclic graph (DAG). This model is used to generate synthetic data where the relationships in the graph are affected by additive noise and potentially undergo nonlinear transformations.
      Parameters:
      graph - The directed acyclic graph (DAG) representing the underlying causal structure.
      numSamples - The number of data samples to generate. Must be positive.
      noiseDistribution - The distribution used to sample additive noise for each variable.
      rescaleMin - The minimum value of the range for rescaling the generated data. Must be less than or equal to rescaleMax.
      rescaleMax - The maximum value of the range for rescaling the generated data. Must be greater than or equal to rescaleMin.
      hiddenDimension - The dimensionality of hidden layers or transformations used in data generation.
      inputScale - A scaling factor applied to input data before applying transformations or noise.
      Throws:
      IllegalArgumentException - If the input graph contains cycles or if the provided parameters are invalid.
  • Method Details

    • generateData

      public DataSet generateData()
      Generates synthetic data based on a directed acyclic graph (DAG) with causal relationships and post-nonlinear causal mechanisms. The data generation process involves simulating parent-child relationships in the graph, applying noise, rescaling, and applying random piecewise linear transformations.
      Returns:
      A DataSet object containing the generated synthetic data, with samples and variables defined by the structure of the provided graph and simulation parameters.
    • setActivationFunction

      public void setActivationFunction(Function<Double,Double> activationFunction)
      Sets the activation function for the model. The activation function defines a non-linear transformation applied to the data during the simulation.
      Parameters:
      activationFunction - A function that takes a Double as input and returns a Double as output, representing the non-linear activation function to be applied.