Jika Anda lihat data race, sangat banyak. Hal ini akan menyebabkan the Curse of Dimensionality, dimana model akan menjadi terlalu rumit. Oleh karena itu kita perlu menyederhanakannya.
Pertama kita periksa datanya.
df.race.value_counts()
WHITE, NON-HISPANIC 3654
HISPANIC, RACE NOT SPECIFIED 408
HISPANIC, RACE SPECIFIED 387
BLACK OR AFRICAN AMERICAN, NON-HISPANIC 357
ASIAN 342
MORE THAN ONE RACE, NON HISPANIC 123
NATIVE HAWAIIAN, OTHER PACIFIC ISLANDER 93
AMERICAN INDIAN OR ALASKA NATIVE 62
NOT ASCERTAINED 3
Name: race, dtype: int64
Dari data diatas, kita akan gunakan race: White, Non Hispanic. Kemudian menyederhanakan Hispanic menjadi 1 group. Black dan Asian juga akan kita gunakan. Selebihnya akan diabaikan karena data terlalu kecil dan dapat menyebankan curse of dimensionality.
Berikut code yang digunakan untuk melakukan transformasi data diatas.
#Transforming race variable
df['race_white'] = np.where(df.race == 'WHITE, NON-HISPANIC', 1, 0)
df['race_hispanic'] = np.where((df.race == 'HISPANIC, RACE NOT SPECIFIED') |
(df.race == 'HISPANIC, RACE SPECIFIED'), 1, 0)
df['race_black'] = np.where(df.race == 'BLACK OR AFRICAN AMERICAN, NON-HISPANIC', 1, 0)
df['race_asian'] = np.where(df.race == 'ASIAN', 1, 0)
Variable berikutnya yang perlu disederhanakan adalah education. Menggunakan proses yang sama seperti diatas.
Periksa variable education.
#Education variable overview df.mom_education.value_counts()
SOME COLLEGE 1721
HIGH SCHOOL DIPLOMA/EQUIVALENT 1306
BACHELOR'S DEGREE 1085
MASTER'S DEGREE (MA, MS) 387
VOC/TECH PROGRAM 294
9TH - 12TH GRADE 222
GRADUATE/PROFESSIONAL SCHOOL-NO DEGREE 170
8TH GRADE OR BELOW 134
DOCTORATE OR PROFESSIONAL DEGREE 110
Name: mom_education, dtype: int64
Kita lakukan transformasi untuk menyederhanakan data.
#Transforming education variable
df["dad_higher_education"] = np.where((df.dad_education == "BACHELOR'S DEGREE") |
(df.dad_education == "MASTER'S DEGREE (MA, MS)") |
(df.dad_education == "DOCTORATE OR PROFESSIONAL DEGREE"),
1, 0)
df["mom_higher_education"] = np.where((df.mom_education == "BACHELOR'S DEGREE") |
(df.mom_education == "MASTER'S DEGREE (MA, MS)") |
(df.mom_education == "DOCTORATE OR PROFESSIONAL DEGREE"),
1, 0)
Kemudian kita drop variable yang sudah tidak digunakan.
df = df.drop(columns = ["race", "dad_education", "mom_education"])
Terakhir kita akan isolate y, treatment dan confounders.
treat = df.catholic.values y = df.score_standardized.values confounders = df.drop(columns = ["catholic", "score_standardized"]).values
Sampai disini kita sudah selesai mempersiapkan data. Pada modul selanjutnya kita akan membahas konsep baru yaitu Common Support Region.