Bayes’ Law in Heart Failure Data
March 2022
Just Another Practice
Data
We will use the Heart Failure Dataset. This dataset has 12 attributes, including HeartDisease.
Goal
This work aims to find the causal inferences between medical condition attributes in the dataset and the heart disease class.
The project solely relied on Bayes Law to analyze medical conditions in the dataset and did not investigate any connections between them. Moreover, as I lack a medical background, I cannot make any assumptions or come to any conclusions on this matter.
Bayes’ Law Analysis
We will analyze causal inferences of 720 rows of cleaned* Heart Failure Data using Bayes’ Law.
1. ChestPainType
P(ASY|HeartDisease) > P(NAP|HeartDisease) > P(ATA|HeartDisease) > P(TA|HeartDisease)
P(ASY|HeartDisease) > P(HeartDisease|ASY)
2. FastingBS
P(HeartDisease|FastingBS) > P(FastingBS|HeartDisease)
3. RestingECG
P(HeartDisease|LVH) > P(LVH|HeartDisease)
P(HeartDisease|ST) > P(ST|HeartDisease)
4. ExerciseAngina
P(HeartDisease|ExerciseAngina) > P(ExerciseAngina|HeartDisease)
5. ST_Slope
P(Flat|HeartDisease) > P(Up|HeartDisease) > P(Down|HeartDisease)
P(HeartDisease|Down) > P(Down|HeartDisease)
6. RestingBP
P(HeartDisease|>130) > P(>130|HeartDisease)
7. Cholesterol
P(HeartDisease|>235) > P(>235|HeartDisease)
8. MaxHR
P(>140|HeartDisease) > P(HeartDisease|>140)
9. Oldpeak
P(>0.4|HeartDisease) > P(HeartDisease|>0.4)
Visualization
dfVis = pd.DataFrame({ 'from': ['heart\ndisease', 'TA\nchestpain', 'fasting\nblood sugar\n>= 120mg/dl', 'LVH\nresting ECG\nresult', 'ST\nresting ECG\nresult', 'exercise-\ninduced\nangina','down-slope of\nthe peak exercise\nST segment','resting\nblood pressure\n> 130mmHg', 'cholesterol\nlevel\n> 235mm/dl', 'heart\ndisease', 'heart\ndisease'],
'to': ['ASY\nchestpain', 'heart\ndisease', 'heart\ndisease', 'heart\ndisease', 'heart\ndisease', 'heart\ndisease','heart\ndisease', 'heart\ndisease', 'heart\ndisease','maximum\nheart rate\n> 140', 'oldpeak\n> 0.4']})
G = nx.from_pandas_edgelist(dfVis, 'from', 'to', create_using=nx.DiGraph())
plt.figure(figsize=(8, 8))
nx.draw(G, with_labels = True, node_size = 6000, node_color = 'papayawhip',
pos = nx.circular_layout(G), arrows = True, font_size = 11)
plt.title('Causal Inferences Using Bayes\' Law on Heart Failure Data')
plt.show()
