Недавно я представил свой проект, связанный с линейной регрессией, который я сделал для прогнозирования оценки счастья страны с использованием данных из 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. Однако по сравнению с другими факторами, такими как социальная поддержка, свобода и щедрость, солнечный свет не был таким сильным предсказателем, как имел более низкий коэффициент.

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