Implementasi Matching – Part 3

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.

Sharing is caring: