def test_expectation_discrete(self): causes = ['c'] effects = ['d'] admissable_set = ['a'] variable_types={'a': 'u','b': 'u','c': 'u','d' : 'u'} effect = CausalEffect(self.discrete, causes, effects, admissable_set, variable_types, density=False, expectation=True) x = pd.DataFrame({ 'c' : [0]}) p = effect.expected_value(x) print "p(d=1 | do(c = 0) ): ", p assert( abs( 0.40 - p ) < 0.05 ) x = pd.DataFrame({ 'c' : [1]}) p = effect.expected_value(x) print "p(d=1 | do(c = 1) ): ", p assert( abs( 0.40 - p ) < 0.05 ) causes = ['b'] effects = ['d'] admissable_set = ['a'] variable_types={'a': 'u','b': 'u','c': 'u','d' : 'u'} effect = CausalEffect(self.discrete, causes, effects, admissable_set, variable_types, density=False, expectation=True) x = pd.DataFrame({ 'b' : [0]}) p = effect.expected_value(x) print "p(d=1 | do(b = 0) ): ", p assert( abs( p - 0.75 ) < 0.05 ) x = pd.DataFrame({ 'b' : [1]}) p = effect.expected_value(x) print "p(d=1 | do(b = 1) ): ",p assert( abs( p - 0.25 ) < 0.05 )
def test_expectation_continuous(self): causes = ['c'] effects = ['d'] admissable_set = ['a'] variable_types={'a': 'c','b': 'c','c': 'c','d' : 'c'} effect = CausalEffect(self.X, causes, effects, admissable_set, variable_types, density=False, expectation=True) x = pd.DataFrame({ 'c' : [400]}) p1 = effect.expected_value(x) print "E(d | do(c = 400) ): ", p1 x = pd.DataFrame({ 'c' : [600]}) p2 = effect.expected_value(x) print "E(d | do(c = 600) ): ", p2 assert( abs( p2 - p1 ) / 200 < 0.5 ) causes = ['b'] effects = ['d'] admissable_set = ['a'] variable_types={'a': 'c','b': 'c','c': 'c','d' : 'c'} effect = CausalEffect(self.X, causes, effects, admissable_set, variable_types, density=False, expectation=True) x = pd.DataFrame({ 'b' : [400]}) p1 = effect.expected_value(x) print "E(d | do(b = 400) ): ", p1 x = pd.DataFrame({ 'b' : [600]}) p2 = effect.expected_value(x) print "E(d | do(b = 600) ): ",p2 #assert( abs( p - 0.25 ) < 0.05 ) assert( abs( ( p2 - p1 ) / 200 - 5. < 0.01 ) )
def test_expectation_discrete(self): causes = ['c'] effects = ['d'] admissable_set = ['a'] variable_types = {'a': 'u', 'b': 'u', 'c': 'u', 'd': 'u'} effect = CausalEffect(self.discrete, causes, effects, admissable_set, variable_types, density=False, expectation=True) x = pd.DataFrame({'c': [0]}) p = effect.expected_value(x) print "p(d=1 | do(c = 0) ): ", p assert (abs(0.40 - p) < 0.05) x = pd.DataFrame({'c': [1]}) p = effect.expected_value(x) print "p(d=1 | do(c = 1) ): ", p assert (abs(0.40 - p) < 0.05) causes = ['b'] effects = ['d'] admissable_set = ['a'] variable_types = {'a': 'u', 'b': 'u', 'c': 'u', 'd': 'u'} effect = CausalEffect(self.discrete, causes, effects, admissable_set, variable_types, density=False, expectation=True) x = pd.DataFrame({'b': [0]}) p = effect.expected_value(x) print "p(d=1 | do(b = 0) ): ", p assert (abs(p - 0.75) < 0.05) x = pd.DataFrame({'b': [1]}) p = effect.expected_value(x) print "p(d=1 | do(b = 1) ): ", p assert (abs(p - 0.25) < 0.05)
def test_expectation_continuous(self): causes = ['c'] effects = ['d'] admissable_set = ['a'] variable_types = {'a': 'c', 'b': 'c', 'c': 'c', 'd': 'c'} effect = CausalEffect(self.X, causes, effects, admissable_set, variable_types, density=False, expectation=True) x = pd.DataFrame({'c': [400]}) p1 = effect.expected_value(x) print "E(d | do(c = 400) ): ", p1 x = pd.DataFrame({'c': [600]}) p2 = effect.expected_value(x) print "E(d | do(c = 600) ): ", p2 assert (abs(p2 - p1) / 200 < 0.5) causes = ['b'] effects = ['d'] admissable_set = ['a'] variable_types = {'a': 'c', 'b': 'c', 'c': 'c', 'd': 'c'} effect = CausalEffect(self.X, causes, effects, admissable_set, variable_types, density=False, expectation=True) x = pd.DataFrame({'b': [400]}) p1 = effect.expected_value(x) print "E(d | do(b = 400) ): ", p1 x = pd.DataFrame({'b': [600]}) p2 = effect.expected_value(x) print "E(d | do(b = 600) ): ", p2 #assert( abs( p - 0.25 ) < 0.05 ) assert (abs((p2 - p1) / 200 - 5. < 0.01))