These are the relations defined in the graph.
P(G|D, E, A),
P(I|E, A, C),
P(F|E, A, C),
Hello, I have this network that shows a graph (Graphical model). The directed edges represent conditional probabilities. I need to compute a number of parameters for this whole graph. I know the formulas K – 1 where K is the number of states or K^M – 1 when I have M variables. The problem here is that the number of states each node can assume is different.
Here are the number of states each random variable can have.
[('Difficulty', 'D', 3), ('Effort', 'E', 3), ('Aptitute', 'A', 5), ('Confidence', 'C', 3), ('Grade', 'G', 5), ('Interview', 'I', 3), ('TuteAttendence', 'T', 3), ('ForumParticipation', 'F', 3), ('SAT', 'S', 3), ('Job', 'J', 2)]
How to compute a total number of parameters this model needs when fully connected vs when the DAG is considered.
I have made a python function that computes it as follows.
def calculate_params(n): n_states = len(n.states) if len(n.parents) == 0: return n_states else: p_states =  for p in n.parents: p_states.append(calculate_params(p) - 1) return (n_states - 1) * np.prod(np.asarray(p_states)) print(calculate_params(J))
it outputs 1923. Is this answer correct?
Also how to compute the number of parameters when the graph is fully connected. In my opinion it should be
print((3**7 - 1) + (5**2) + (2**1 - 1)) = 2212 but I am not sure.
What would be an easy correct way to compute this?