Как результат вашей регрессии зависит от выборки

Вступление

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

Мы будем использовать моделирование для вывода тремя способами:

  • Понимание чувствительности модели
  • p-значение
  • доверительные интервалы

В этом посте мы в основном исследуем первую. Это будет основой моих следующих публикаций об использовании моделирования для определения p-значения и доверительных интервалов.

Традиционная регрессия

Если вы не знакомы с принципами линейной регрессии в целом, перейдите к этому посту.

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

Повышение уверенности

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

Итак, как мы можем определить изменчивость отношения двух переменных?

Подумайте об этом так ...

Каков ключевой результат линейной регрессии? Если вы угадали строчку, значит, вы все правильно поняли! Выходные данные регрессии - это фактически уравнение линии, а наклон этого уравнения служит показателем взаимосвязи X & Y. Когда мы пытаемся понять различия в наших отношениях между ответом и независимой переменной ... мы стремимся к наклону. Допустим, вы провели линейную регрессию по разным выборкам ... у нас возникнет вопрос: меняется ли наш наклон? Или насколько он разнится? Иногда это положительно, а другим - отрицательно? и т.п.

Кульминационный момент, который нам нужен

Мы сделали небольшую экспозицию, чтобы добраться до изюминки здесь, но, надеюсь, это даст вам прочную основу, чтобы по-настоящему понять и использовать эту практику.

Подводя итог нашему введению, все сводится к следующему:

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

Вперед!

Набор данных, с которым мы работаем, - это набор данных о ценах на жилье в Сиэтле. Я уже много раз использовал этот набор данных и считаю его особенно гибким для демонстрации. Рекордный уровень набора данных - по домам, с указанием цены, площади в квадратных футах, количества кроватей, ванн и т. Д.

В этом посте мы попытаемся объяснить цену как функцию от других квадратных футов.

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

fit <- lm(price_log ~ sqft_living_log
          data = housing)
summary(fit)

Идеально! У нас есть линейная модель, давайте ее визуализируем. Также имейте в виду, что я взял журнал обеих переменных, чтобы очистить стандартизацию их распределений.

housing %>%
  mutate(sqft_living_log = log(sqft_living),
         price_log = log(price))%>%
ggplot(aes(x = sqft_living_log, y = price_log)) + 
  geom_point() + 
  geom_smooth(method = "lm", se = FALSE)

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

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

Итак, выше у нас есть одна строка ... но нам нужно много строк для многих ситуаций.

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

Перво-наперво, мы собираемся использовать функцию rep_sample_n для случайного выбора группы из 100 домов ... мы повторим этот процесс всего 100 раз.

samples <- housing %>%
  rep_sample_n(size = 100, reps = 100)

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

ggplot(samples, aes(x = sqft_living_log, y = price_log, group = replicate)) + 
  geom_point() + 
  geom_smooth(method = 'lm', se = FALSE)

Выше вы увидите различные линии регрессии, соответствующие каждой из разрозненных выборок из 100. Как видите, есть случаи, когда наклоны больше или меньше. Это основа того, что мы способны понять диапазон «наклона», применимый к основной совокупности.

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

Итак, у вас есть визуализация, но у вас еще нет фактических деталей самой линейной регрессии.

Нам нужно будет запустить отдельную регрессию для каждой реплики.

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

Теперь у нас есть 100 результатов регрессии.

Несмотря на то, что есть много важных частей вывода, мы ориентируемся на термин для нашей объясняющей переменной.

Взгляните на код ниже!

coefs <- samples %>% 
  group_by(replicate) %>% 
  do(lm(price_log ~ sqft_living_log, data = .) %>%
       tidy()) %>%
  filter(term == 'sqft_living_log')

Теперь у нас есть фрейм данных с каждой репликой и соответствующий коэффициент для интересующего нас термина.

Давайте посмотрим на наше распределение уклонов.

ggplot(coefs, aes(x = estimate)) +
  geom_histogram()

Мы видим в основном нормальное распределение. Если бы мы запустили его с большим количеством реплик, это выглядело бы более гладко.

Вам нужно иметь в виду одну вещь. Я не предлагаю каждый раз, когда вы запускаете линейную регрессию, вам нужно произвольно запускать 100 из них для различных выборок ваших данных. Для многих бизнес-приложений ваши данные могут быть репрезентативными для всей совокупности. Но даже в тех случаях, когда у вас нет всего населения, цели обоих подходов различны. Здесь мы используем моделирование и множество моделей линейной регрессии, чтобы в конечном итоге сделать выводы о базовой популяции. По-прежнему имеет смысл использовать линейную регрессию в разных форматах для таких вещей, как моделирование для объяснения / описания или прогнозирования.

Вариация наклона

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

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

Заключение

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

Если это было полезно, не стесняйтесь проверить мои другие сообщения на datasciencelessons.com. Поздравления с наукой о данных!