اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

انا هنا مش عاوز الكود ده يشتغل الا بعد ما الحلقه ماتخلص 


plt.title(f'Kaplan-Meier Curve for Cyto_Score {cyto_score}')
plt.xlabel('Time (months)')
plt.ylabel('Survival Probability')
plt.tight_layout()
plt.show()

ودي الحلقه 

 إنشاء كائنات Kaplan-Meier لكل متغير
kaplanmeierfitter_cyto = KaplanMeierFitter()
kaplanmeierfitter_tbi = KaplanMeierFitter()
kaplanmeierfitter_graft = KaplanMeierFitter()
kaplanmeierfitter_vent = KaplanMeierFitter()

# Iterate through each unique combination of 'cyto_score', 'tbi_status', 'graft_type', and 'vent_hist'
for (cyto_score, tbi_status, graft_type, vent_hist), indices in data_train.groupby(['cyto_score', 'tbi_status', 'graft_type', 'vent_hist']).groups.items():
    
    # Filter the data based on the current group
    group_data = data_train.loc[indices]
    
    # Fit the Kaplan-Meier model for each feature
    kaplanmeierfitter_cyto.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'Cyto_Score {cyto_score}')
    kaplanmeierfitter_tbi.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'tbi_status {tbi_status}')
    kaplanmeierfitter_graft.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'graft_type {graft_type}')
    kaplanmeierfitter_vent.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'vent_hist {vent_hist}')
    
    kaplanmeierfitter_cyto.plot_survival_function()

هل اقدر اعمل حاجه زي كده

Recommended Posts

  • 0
نشر

يمكن تحريك أمر عرض الرسم البياني خارج الحلقة وهناك طريقتان لتحقيق ذلك يمكنك تحريك أوامر plt خارج الحلقة مباشرة:

for (cyto_score, tbi_status, graft_type, vent_hist), indices in data_train.groupby(['cyto_score', 'tbi_status', 'graft_type', 'vent_hist']).groups.items():
    group_data = data_train.loc[indices]
    kaplanmeierfitter_cyto.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'Cyto_Score {cyto_score}')
    kaplanmeierfitter_tbi.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'tbi_status {tbi_status}')
    kaplanmeierfitter_graft.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'graft_type {graft_type}')
    kaplanmeierfitter_vent.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'vent_hist {vent_hist}')
    kaplanmeierfitter_cyto.plot_survival_function()

plt.title('Kaplan-Meier Curves for All Cyto_Scores')
plt.xlabel('Time (months)')
plt.ylabel('Survival Probability')
plt.tight_layout()
plt.show()

أو تخزين كل المنحنيات ثم عرضها مرة واحدة في النهاية:

plt.figure(figsize=(10, 6))

for (cyto_score, tbi_status, graft_type, vent_hist), indices in data_train.groupby(['cyto_score', 'tbi_status', 'graft_type', 'vent_hist']).groups.items():
    group_data = data_train.loc[indices]
    kaplanmeierfitter_cyto.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'Cyto_Score {cyto_score}')
    kaplanmeierfitter_cyto.plot_survival_function(ci_show=False)

plt.title('Kaplan-Meier Curves for All Cyto_Scores')
plt.xlabel('Time (months)')
plt.ylabel('Survival Probability')
plt.tight_layout()
plt.show()

وأرى أنّ الطريقة الثانية أفضل إذا كنت تريد عرض جميع المنحنيات في رسم بياني واحد بشكل أوضح ستحصل على رسم بياني واحد يحتوي على جميع منحنيات البقاء لمختلف قيم Cyto_Score.

  • 0
نشر
بتاريخ 6 دقائق مضت قال عبد الوهاب بومعراف:

يمكن تحريك أمر عرض الرسم البياني خارج الحلقة وهناك طريقتان لتحقيق ذلك يمكنك تحريك أوامر plt خارج الحلقة مباشرة:

for (cyto_score, tbi_status, graft_type, vent_hist), indices in data_train.groupby(['cyto_score', 'tbi_status', 'graft_type', 'vent_hist']).groups.items():
    group_data = data_train.loc[indices]
    kaplanmeierfitter_cyto.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'Cyto_Score {cyto_score}')
    kaplanmeierfitter_tbi.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'tbi_status {tbi_status}')
    kaplanmeierfitter_graft.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'graft_type {graft_type}')
    kaplanmeierfitter_vent.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'vent_hist {vent_hist}')
    kaplanmeierfitter_cyto.plot_survival_function()

plt.title('Kaplan-Meier Curves for All Cyto_Scores')
plt.xlabel('Time (months)')
plt.ylabel('Survival Probability')
plt.tight_layout()
plt.show()

أو تخزين كل المنحنيات ثم عرضها مرة واحدة في النهاية:

plt.figure(figsize=(10, 6))

for (cyto_score, tbi_status, graft_type, vent_hist), indices in data_train.groupby(['cyto_score', 'tbi_status', 'graft_type', 'vent_hist']).groups.items():
    group_data = data_train.loc[indices]
    kaplanmeierfitter_cyto.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f'Cyto_Score {cyto_score}')
    kaplanmeierfitter_cyto.plot_survival_function(ci_show=False)

plt.title('Kaplan-Meier Curves for All Cyto_Scores')
plt.xlabel('Time (months)')
plt.ylabel('Survival Probability')
plt.tight_layout()
plt.show()

وأرى أنّ الطريقة الثانية أفضل إذا كنت تريد عرض جميع المنحنيات في رسم بياني واحد بشكل أوضح ستحصل على رسم بياني واحد يحتوي على جميع منحنيات البقاء لمختلف قيم Cyto_Score.

انا استخدم الطريقه التاني بس الرسم برد كده  مش عارف ليه 

 

D.png

  • 0
نشر
بتاريخ On 1‏/1‏/2025 at 22:21 قال Ali Ahmed55:

انا استخدم الطريقه التاني بس الرسم برد كده  مش عارف ليه 

لاحظ أنك تقوم بإعادة رسم جميع منحنيات كابلان ماير في نفس الرسم البياني في كل تكرار للحلقة، بالتالي ظهور جميع المنحنيات فوق بعضها البعض، ويجعل الرسم البياني غير واضح ومربك.

 حاول إنشاء رسم بياني جديد لكل مجموعة من البيانات، أو على الأقل لكل قيمة من cyto_score في حال تريد تجميع البيانات بناءًا عليها:

import matplotlib.pyplot as plt
from lifelines import KaplanMeierFitter
import pandas as pd

data_train = pd.DataFrame({
    'cyto_score': [0, 0, 1, 1, 2, 2, 3, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3],
    'tbi_status': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
    'graft_type': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
    'vent_hist': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
    'efs_time': [10, 20, 15, 25, 30, 35, 40, 45, 12, 22, 32, 42, 14, 24, 34, 44, 16, 26, 36, 46],
    'efs': [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
})

kaplanmeierfitter_cyto = KaplanMeierFitter()

for cyto_score, group_data in data_train.groupby('cyto_score'):
    plt.figure(figsize=(10, 6)) 

    for (tbi_status, graft_type, vent_hist), indices in group_data.groupby(['tbi_status', 'graft_type', 'vent_hist']).groups.items():
        sub_group_data = group_data.loc[indices]
        kaplanmeierfitter_cyto.fit(sub_group_data['efs_time'], event_observed=sub_group_data['efs'], label=f'TBI: {tbi_status}, Graft: {graft_type}, Vent: {vent_hist}')
        kaplanmeierfitter_cyto.plot_survival_function(ci_show=False)

    plt.title(f'Kaplan-Meier Curves for Cyto_Score {cyto_score}')
    plt.xlabel('Time (months)')
    plt.ylabel('Survival Probability')
    plt.tight_layout()
    plt.show()

 

  • 0
نشر
بتاريخ 5 ساعة قال Mustafa Suleiman:

لاحظ أنك تقوم بإعادة رسم جميع منحنيات كابلان ماير في نفس الرسم البياني في كل تكرار للحلقة، بالتالي ظهور جميع المنحنيات فوق بعضها البعض، ويجعل الرسم البياني غير واضح ومربك.

 حاول إنشاء رسم بياني جديد لكل مجموعة من البيانات، أو على الأقل لكل قيمة من cyto_score في حال تريد تجميع البيانات بناءًا عليها:

import matplotlib.pyplot as plt
from lifelines import KaplanMeierFitter
import pandas as pd

data_train = pd.DataFrame({
    'cyto_score': [0, 0, 1, 1, 2, 2, 3, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3],
    'tbi_status': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
    'graft_type': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
    'vent_hist': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
    'efs_time': [10, 20, 15, 25, 30, 35, 40, 45, 12, 22, 32, 42, 14, 24, 34, 44, 16, 26, 36, 46],
    'efs': [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
})

kaplanmeierfitter_cyto = KaplanMeierFitter()

for cyto_score, group_data in data_train.groupby('cyto_score'):
    plt.figure(figsize=(10, 6)) 

    for (tbi_status, graft_type, vent_hist), indices in group_data.groupby(['tbi_status', 'graft_type', 'vent_hist']).groups.items():
        sub_group_data = group_data.loc[indices]
        kaplanmeierfitter_cyto.fit(sub_group_data['efs_time'], event_observed=sub_group_data['efs'], label=f'TBI: {tbi_status}, Graft: {graft_type}, Vent: {vent_hist}')
        kaplanmeierfitter_cyto.plot_survival_function(ci_show=False)

    plt.title(f'Kaplan-Meier Curves for Cyto_Score {cyto_score}')
    plt.xlabel('Time (months)')
    plt.ylabel('Survival Probability')
    plt.tight_layout()
    plt.show()

 

الف شكراااا جدا جدا لحضرتك

بس انا عملت داله ودي الكود

# Function to plot Kaplan-Meier survival curve for any categorical group
def plot_kaplan_meier(group_column , plot_title):
    kaplanmeierfitter = KaplanMeierFitter()

    # Loop through each unique value of the group column
    for group in data_train[group_column].unique():
        # Filter the data for the current group
        group_data = data_train[data_train[group_column] == group]
        
        
        # Fit the Kaplan-Meier estimator
        kaplanmeierfitter.fit(group_data['efs_time'], event_observed=group_data['efs'], label=f"{group_column} {group}")
        
        # Plot the survival function
        kaplanmeierfitter.plot_survival_function(ci_show=False)

    # Set the title and labels for the plot
    plt.title(plot_title)
    plt.xlabel("Time(months)")  # Label for the x-axis
    plt.ylabel("Survival Probability")  # Label for the y-axis
    
    # Adjust the layout to avoid clipping
    plt.tight_layout()
    #plt.savefig("Distribution-of-Survival-Analysis-Prod_Type.png" , bbox_inches='tight')
    # Save or show the plot
    plt.show()

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...