Недавно я представил свой проект, связанный с линейной регрессией, который я сделал для прогнозирования оценки счастья страны с использованием данных из World Happiness Report. Сначала я провожу небольшое исследование данных, чтобы увидеть, как все мои переменные связаны. Определенно есть некоторые переменные, которые сильно связаны с оценкой счастья (Кантрил или жизненная лестница в таблице ниже), такие как ВВП на душу населения, социальная поддержка и ожидаемая продолжительность жизни. Итак, сразу же я бы предположил, что эти факторы являются сильными предикторами.
Набор данных, который я нашел на kaggle, содержал данные по 156 странам за период с 2005 по 2018 год. Не в каждой стране были данные за все 14 лет, поэтому мне пришлось немного очистить данные и удалить все строки со значениями NaN. Сначала я обучил свою модель с помощью перекрестной проверки, запустив простую линейную регрессию, которая вернула R² 0,729 для моего обучающего набора и R² 0,721 для моего набора проверки. Это означает, что модель немного переоборудована, поэтому я мог бы запустить регрессию по гребням или лассо, но я решил продолжить с простой регрессией. Наконец, я запускаю модель на своем тестовом наборе и получаю R² 0,761.
Проведя сводку результатов по исходному набору данных, мы видим, что все p-значения переменных значимы, а самые большие коэффициенты - это социальная поддержка, коррупция и щедрость. Меня очень удивило то, что ВВП на душу населения не возглавлял этот список. Я интерпретировал эти результаты так, что на каждый 1% увеличения социальной поддержки счастье в стране также увеличивается на 2,5% и так далее.
Затем я решил найти ответ на свой второй вопрос: можем ли мы предсказать счастье страны по количеству получаемого ею солнечного света?
from bs4 import BeautifulSoup url = 'https://en.wikipedia.org/wiki/List_of_cities_by_sunshine_duration' response = requests.get(url) response.status_code page = response.text soup = BeautifulSoup(page, "html5") table = soup.find(‘table’, {‘class’: ‘wikitable plainrowheaders sortable’}) links = table.find_all(‘a’) countries = [] for country in links: countries.append(country.get(‘title’)) new_list = [country for country in countries if country is not None] new_list = new_list[::2] sunshine_df = pd.DataFrame() sunshine_df[‘country’] = new_list rows = table.find_all(‘tr’) rows = [row for row in rows if (‘Country’ not in row.text)] sunshine_hours = [] for i in range(0, len(rows)): columns = rows[i].find_all(‘td’) sunshine_hours.append(columns[14].get_text().strip()) sunshine_df[‘hours_of_sunshine’] = [i for i in sunshine_hours] sunshine_df[‘hours_of_sunshine’] = sunshine_df[‘hours_of_sunshine’].str.replace(‘,’, ‘’).astype(float)
Приготовив красивый суп, я просмотрела в Интернете все таблицы со страницей википедии о ежегодном солнечном свете по странам. Я сопоставил эти данные со всеми странами, у которых были оценки счастья и ненулевые значения для всех переменных, доступные за 2017 год. Изучая свои данные, я обнаружил, что солнечный свет на самом деле отрицательно коррелирован с оценкой счастья в стране. Это имеет смысл, потому что все скандинавские страны (Финляндия, Дания, Норвегия, Исландия и Нидерланды) занимают первые места в списке. Здесь также мы должны помнить, что корреляция не означает причинно-следственную связь. Есть много других факторов, которые делают скандинавские страны более счастливыми, чем другие страны, где гораздо больше солнечного света.
Я обнаружил, что регрессия лассо является наиболее подходящей моделью, в результате чего R² на моем тестовом наборе составил 0,499. Однако по сравнению с другими факторами, такими как социальная поддержка, свобода и щедрость, солнечный свет не был таким сильным предсказателем, как имел более низкий коэффициент.
В заключение, эти переменные, включая солнечный свет, являются хорошими предикторами оценки счастья в стране, однако есть много других факторов, которые мы можем изучить, которые могут быть лучшими предикторами, например, неравенство доходов, гендерное равенство, безработица, разнообразие населения или качество жизни. здравоохранение и др.