في الكود الاول يتم التعامل مع المتغيرات كما هي (سواء كانت رقمية أو فئوية ( Categorical )) واذا كانت بعض هذه المتغيرات فئوية فيجب تحويلها مسبقًا باستخدام pd.get_dummies أو LabelEncoder، لكي يتعامل معها النموذج بشكل صحيح .
اما في الكود الثاني يتم استخدام الصياغة المعتمدة على formula وهي الطريقه الافضل
C(variable_name) تعني أن المتغيرات cyto_score, tbi_status, و graft_type فئوية (Categorical)، مما يعني أن المكتبة ستحولها تلقائيًا دون الحاجة الي تحويلها مسبقا .
المتغير vent_hist لم يتم وضعه داخل C(), مما يعني أنه متغير عددي ولن يتم تحويله.
الفرق بين الكودين :
الكود الأول لا يتعامل مع المتغيرات الفئوية بشكل تلقائي، و يتطلب تحويلها يدويًا .
الكود الثاني يقوم بذلك تلقائيًا باستخدام C().
في الكود الأول، يجب إضافت الحد الثابت يدويًا باستخدام sm.add_constant(X).
في الكود الثاني، يتم تضمينه تلقائيًا.
الكود الثاني أكثر كفاءة عندما تحتوي البيانات على متغيرات فئوية، لأنه يحولها تلقائيًا دون الحاجة إلى معالجة إضافية.