85 lines
2.7 KiB
Plaintext
85 lines
2.7 KiB
Plaintext
%%%%
|
|
%%%% Bayesian networks for Asia network -- asia.psm
|
|
%%%%
|
|
%%%% Copyright (C) 2007,2008
|
|
%%%% Sato Laboratory, Dept. of Computer Science,
|
|
%%%% Tokyo Institute of Technology
|
|
|
|
%% This example is known as the Asia network, and was borrowed from:
|
|
%% S. L. Lauritzen and D. J. Spiegelhalter (1988).
|
|
%% Local computations with probabilities on graphical structures
|
|
%% and their application to expert systems.
|
|
%% Journal of Royal Statistical Society, Vol.B50, No.2, pp.157-194.
|
|
%%
|
|
%% ((Smoking[S]))
|
|
%% ((Visit to Asia[A])) / \
|
|
%% | / \
|
|
%% v v \
|
|
%% (Tuberculosis[T]) (Lang cancer[L]) \
|
|
%% \ / \
|
|
%% \ / v
|
|
%% v v (Bronchinitis[B])
|
|
%% (Tuberculosis or lang cancer[TL]) /
|
|
%% / \ /
|
|
%% / \ /
|
|
%% v \ /
|
|
%% ((X-ray[X])) v v
|
|
%% ((Dyspnea[D]))
|
|
%%
|
|
%% We assume that the nodes A, S, X and D are observable. This
|
|
%% program provides a naive representation of the Asia network, as
|
|
%% shown in ../alarm.psm. The junction-tree version of the Asia
|
|
%% network program is given in jasia.psm
|
|
|
|
%%-------------------------------------
|
|
%% Quick start:
|
|
%%
|
|
%% ?- prism(asia),go.
|
|
|
|
go:- chindsight_agg(world(f,_,_,t),world(f,query,_,_,_,_,_,t)).
|
|
% we compute a conditional distribution P(T | A=false, D=true)
|
|
|
|
%%-------------------------------------
|
|
%% Declarations:
|
|
|
|
values(bn(_,_),[t,f]). % each switch takes on true or false
|
|
|
|
%%-------------------------------------
|
|
%% Modeling part:
|
|
|
|
world(A,S,X,D):- world(A,_,S,_,_,X,_,D).
|
|
|
|
world(A,T,S,L,TL,X,B,D) :-
|
|
msw(bn(a,[]),A),msw(bn(t,[A]),T),
|
|
msw(bn(s,[]),S),msw(bn(l,[S]),L),
|
|
incl_or(T,L,TL),
|
|
msw(bn(x,[TL]),X),msw(bn(b,[S]),B),
|
|
msw(bn(d,[TL,B]),D).
|
|
|
|
% inclusive OR
|
|
incl_or(t,t,t).
|
|
incl_or(t,f,t).
|
|
incl_or(f,t,t).
|
|
incl_or(f,f,f).
|
|
|
|
%%-------------------------------------
|
|
%% Utility part:
|
|
|
|
:- set_params.
|
|
|
|
set_params:-
|
|
set_sw(bn(a,[]),[0.01,0.99]),
|
|
set_sw(bn(t,[t]),[0.05,0.95]),
|
|
set_sw(bn(t,[f]),[0.01,0.99]),
|
|
set_sw(bn(s,[]),[0.5,0.5]),
|
|
set_sw(bn(l,[t]),[0.1,0.9]),
|
|
set_sw(bn(l,[f]),[0.01,0.99]),
|
|
set_sw(bn(x,[t]),[0.98,0.02]),
|
|
set_sw(bn(x,[f]),[0.05,0.95]),
|
|
set_sw(bn(b,[t]),[0.60,0.40]),
|
|
set_sw(bn(b,[f]),[0.30,0.70]),
|
|
set_sw(bn(d,[t,t]),[0.90,0.10]),
|
|
set_sw(bn(d,[t,f]),[0.70,0.30]),
|
|
set_sw(bn(d,[f,t]),[0.80,0.20]),
|
|
set_sw(bn(d,[f,f]),[0.10,0.90]).
|