心臟病預測

現有一資料集(如下表),蒐集了以下資訊

變數名稱 敘述
age 年齡
sex 性別
cp 胸痛型
trestbps 靜息血壓
chol 血清中膽固醇含量(毫克/分升)
fbs 空腹血糖>120
restecg 靜息心電圖結果
thalach 最大心率
exang 運動誘發心絞痛
oldpeak 相對於休息時 ST 段壓低引起的運動
slope 運動高峰期 ST 段的斜率
ca 大血管透視檢查
thal 貧血類型
num 血管造影疾病狀態
heart.data <- read.csv("https://raw.githubusercontent.com/ywchiu/cdc_course/master/data/processed.cleveland.data.csv",header=FALSE,sep=",",na.strings = '?')
names(heart.data) <- c( "age", "sex", "cp", "trestbps", "chol","fbs", "restecg",
                   "thalach","exang", "oldpeak","slope", "ca", "thal", "num")
head(heart.data)
##   age sex cp trestbps chol fbs restecg thalach exang oldpeak slope ca thal
## 1  63   1  1      145  233   1       2     150     0     2.3     3  0    6
## 2  67   1  4      160  286   0       2     108     1     1.5     2  3    3
## 3  67   1  4      120  229   0       2     129     1     2.6     2  2    7
## 4  37   1  3      130  250   0       0     187     0     3.5     3  0    3
## 5  41   0  2      130  204   0       2     172     0     1.4     1  0    3
## 6  56   1  2      120  236   0       0     178     0     0.8     1  0    3
##   num
## 1   0
## 2   2
## 3   1
## 4   0
## 5   0
## 6   0

num 如果為 0 代表心臟是正常的, 如果狀態為1,2,3,4 代表有心臟問題

請試著用R回答以下問題:

  1. 以預測該病患是否有心臟疾病(num !=0 )為目標,使用決策樹(rpart)建立分類模型?
  2. 請計算出該模型的準確度(Accuracy)與混淆矩陣(Confusion Matrix)?
  3. 請繪製該模型的ROC Curve,並計算該曲線下的面積(AUC) ?
  4. 以預測該病患是否有心臟疾病(num !=0 )為目標,使用隨機森林(randomForest)建立分類模型?
  5. 將決策樹模型與隨機森林模型的ROC Curve 繪製在同一張圖上, 以比較兩者之間的分類效果?