Original size 1240x1750

Анализ зависимости расстройств сна от различных факторов

PROTECT STATUS: not protected

Вводная часть

В исследовании я взяла за основу таблицу «Набор данных о здоровье сна и образа жизни»: https://www.kaggle.com/datasets/uom190346a/sleep-health-and-lifestyle-dataset (Сайт: https://www.kaggle.com) В таблице представлена информация, полученная от 374 участников опроса. Таблица охватывает широкий спектр переменных, связанных с повседневными привычками, медицинскими показателями, индикаторами психологического комфорта, физического здоровья, со сном.

Мне было интересно проанализировать именно эти данные, так как, все что связано со здоровьем и здоровым образом жизни остается неизменно актуальным и привлекательным для широкой аудитории и для меня лично. В современном мире осознание влияния образа жизни человека на его здоровье считается очевидным фактом. Однако, остается множество вопросов относительно того, какие конкретные факторы и каким образом влияют на здоровье и качество жизни человека. На основе данных таблицы, можно попробовать проанализировать некоторые параметры, чтобы выявить их взаимосвязь и/или влияние на возникновения нарушений сна, а также же отсутствие их взаимосвязи и/или влияния на возникновения нарушений сна.

Для того чтобы структурировать анализ мной была выдвинута гипотеза: Есть профессии, в которых высокий уровень стресса, возможно для этих же профессий характерно большое количество нарушений сна.

Этапы работы

Чтобы понять существует ли влияние уровня стресса в профессии на сон: В первую очередь надо определиться какие на примере каких профессий будет проводиться анализ, потому что проанализировать все было бы сложно. Так, я определила насколько часто в таблице встречается каждая из профессий и выбрала для исследования 2 наиболее (Врачи и медсестры) и 2 наименее (менеджеры и менеджеры по продажам) часто встречающиеся.

код 1

from matplotlib import pyplot as plt import seaborn as sns df.groupby ('Occupation').size ().plot (kind='barh', color=sns.palettes.mpl_palette ('Set2')) plt.gca ().spines[['top', 'right', ]].set_visible (False)

big
Original size 691x413

Далее я определила средний уровень стресса для каждой из выбранных профессий.

Первые два графика — Гистограммы. Этот тип графика позволяет продемонстрировать различные наборы данных в сравнении.

код 2

import matplotlib.pyplot as plt plt.style.use ('seaborn-deep')

doctors_stress = df[df['Occupation'] == 'Doctor']['Stress Level'].mean () nurses_stress = df[df['Occupation'] == 'Nurse']['Stress Level'].mean () managers_stress = df[df['Occupation'] == 'Manager']['Stress Level'].mean () sales_reps_stress = df[df['Occupation'] == 'Sales Representative']['Stress Level'].mean ()

occupation_stress_levels = [doctors_stress, nurses_stress, managers_stress, sales_reps_stress]

occupation_names = ['Doctor', 'Nurse', 'Manager', 'Sales Representative']

colors = plt.get_cmap ('Set2') (np.linspace (0, 1, len (occupation_names))) plt.barh (occupation_names, occupation_stress_levels, color=colors)

plt.title ('Stress Level Distribution by Occupation') plt.xlabel ('Stress Level') plt.ylabel ('Occupation')

plt.show ()

Original size 691x455

Затем выявила процент нарушений сна для каждой группы профессий.

Для этого сравнения я использовала круговые диаграммы, они дают увидеть какой вклад в общую статистику вносит каждая из категорий. Для большей наглядности я добавила «взрыв», сильнее отделяющий части графика друг от друга. Также ко всем графикам я применила цветовую палитру «Set2» так как она, по моему мнению, лучше всего подходит выбранной теме.

код 3

managers_and_sales_df = df[df['Occupation'].isin (['Manager', 'Sale Representative'])]

sleep_disorders = managers_and_sales_df['Sleep Disorder'].value_counts (dropna=False)

labels = sleep_disorders.index sizes = sleep_disorders.values explode = (0.1,) * len (sizes)

fig1, ax1 = plt.subplots () ax1.pie (sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=90) ax1.axis ('equal') colors = cm.get_cmap ('Set2') (np.linspace (0, 1, len (sizes)))

for i in range (len (sizes)): ax1.patches[i].set_facecolor (colors[i])

plt.show ()

Original size 515x396

код 4

doctors_and_nurses_df = df[df['Occupation'].isin (['Doctor', 'Nurse'])]

sleep_disorders = doctors_and_nurses_df['Sleep Disorder'].value_counts (dropna=False)

labels = sleep_disorders.index sizes = sleep_disorders.values explode = (0.1,) * len (sizes) fig1, ax1 = plt.subplots () ax1.pie (sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=90) ax1.axis ('equal')

colors = cm.get_cmap ('Set2') (np.linspace (0, 1, len (sizes)))

for i in range (len (sizes)): ax1.patches[i].set_facecolor (colors[i])

plt.show ()

Original size 545x394

В процессе работы я обращалась к нескольким нейросетям.

  1. С помощью Chat GPT3.5 я узнала как проанализировать представителей не только одной профессии за раз, а четырех, так как этого не было показано в лекции курса. Используемый промпт: I have this code: doctors__df = df.loc[df['Occupation'] == 'Doctor'] sleep_disorders = doctors__df['Sleep Disorder'].value_counts ()

how do I make it so that it analyzes not only «Doctor» but also «Nurse»?

  1. Столкнувшись с ошибкой при написании кода я скопировала текст ошибки и попросила Chat GPT3.5 объяснить её, на что получила ответ: Ошибка «TypeError: object of type 'ListedColormap' has no len ()» указывает на то, что вы пытаетесь применить функцию len () к объекту типа ListedColormap, который не имеет длины. В данном случае, вы пытаетесь использовать plt.get_cmap ('Set2') как цвет для каждого бара в графике, но ListedColormap не может быть использован напрямую как цвет.

Чтобы исправить эту ошибку, вы должны использовать ListedColormap.colors, который возвращает список цветов, используемых в цветовой схеме.

  1. Обложка для проекта была создана в Leonardo.Ai по промпту: A simple minimalistic cover for a sleep quality and disease analysis proje

Вывод

В ходе анализа выяснилось, что какое-либо расстройство сна присутствует у 50% докторов и медсестер и у 0% менеджеров и менеджеров по продажам. При этом четкой зависимости от уровня стресса и наличия расстройств сна обнаружено не было. Так, моя гипотеза не подтвердилась и можно сделать вывод об отсутствии связи между уровнем стресса и количеством нарушений сна в профессии. Тем не менее, мой анализ нельзя считать полностью достоверным, так как он выполнялся на основе ограниченного количества данных

Анализ зависимости расстройств сна от различных факторов
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more