예제 #1
0
    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 )
예제 #2
0
    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 ) )
예제 #3
0
    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)
예제 #4
0
    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))