module Prolly::RandVar::Pdf
Public Instance Methods
pdf()
click to toggle source
# File lib/prolly/rand_var/pdf.rb, line 6 def pdf if !@spec_rv.empty? raise StandardError.new("Cannot use pdf on this RV") #if @uspec_gv.empty? and @spec_gv.empty? # prob_rv_eq #else # prob_rv_eq_gv_eq #end else #puts "distr : #{@rv.to_s} : #{@gv.to_s}" if @uspec_gv.empty? and @spec_gv.empty? prob_rv elsif not @spec_gv.empty? prob_rv_gv_eq else prob_rv_gv end end end
Private Instance Methods
prob_rv()
click to toggle source
P(color) = [P(color=green), P(color=blue)] P(color, size) = [every combo of color and size]
# File lib/prolly/rand_var/pdf.rb, line 36 def prob_rv distr = ::Ps.uniq_vals(@uspec_rv).flat_map do |rv_vals| spec_rv = Hash[*@uspec_rv.zip(rv_vals).flatten] [rv_vals, Ps.rv(spec_rv).prob] end Hash[*distr] end
prob_rv_gv()
click to toggle source
P(color | size) =
[P(color=green | size), P(color=blue | size)]
TODO not tested
# File lib/prolly/rand_var/pdf.rb, line 61 def prob_rv_gv rv = @uspec_rv.first gv = @uspec_gv.first distr = @pspace.uniq_vals(rv).flat_map do |rv_val| #puts "rv | gv : #{rv.to_s} | #{@gv.to_s}" [rv_val, Ps.rv(rv.to_sym => rv_val).given(gv.to_sym).prob] end Hash[*distr] end
prob_rv_gv_eq()
click to toggle source
P(color | size=small) =
[P(color=green | size=small), P(color=blue | size=small)]
P(color | size=small, texture=smooth) =
[P(every color | size=small, texture=smooth)]
# File lib/prolly/rand_var/pdf.rb, line 49 def prob_rv_gv_eq distr = ::Ps.uniq_vals(@uspec_rv).flat_map do |rv_vals| spec_rv = Hash[*@uspec_rv.zip(rv_vals).flatten] [rv_vals, Ps.rv(spec_rv).given(@spec_gv).prob] end Hash[*distr] end