Задача из реальной жизни ) Данные можно посмотреть здесь: https://docs.google.com/spreadsheets/d/1CvKA1GeIiyjVR7qBWsR1IFTlX1wETL9Zsuw_KF5PklQ/edit?usp=sharing

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

library(readr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
forFBpost <- read_delim("forFBpost.csv", 
    ";", escape_double = FALSE, trim_ws = TRUE)
## Parsed with column specification:
## cols(
##   Город = col_character(),
##   year = col_double(),
##   fact = col_double(),
##   Модель = col_double(),
##   `Нижняя граница` = col_double(),
##   `Верхняя граница` = col_double()
## )
names(forFBpost)[1]<-paste("city") # переименуем
names(forFBpost)[4]<-paste("model")
names(forFBpost)[5]<-paste("low")
names(forFBpost)[6]<-paste("high")

#Посмотрим на наши данные (имеющиеся)
newdata=forFBpost %>% na.omit() 

Вы - как аналитик хотите сразу посмотреть тенденцию по известным вам годам и вы создали график. Что вы можете сказать о нем? Почему представленные данные нельзя корректно проанализировать?

library(ggplot2)
#Посмотрим на рост населения по городам
ggplot(data=newdata,aes(x=year,y=fact/1000,color=model/1000))+geom_point(vertex.label=NA)+ scale_fill_discrete(guide = guide_legend(reverse=TRUE))+scale_y_continuous(labels = scales::comma)+labs(title=" Рост населения по городам в тысячах человек ", y="Численность населения в тыс.", x="Год")
## Warning: Ignoring unknown parameters: vertex.label

Ответ

Если рассуждать в концепции регресионного анализа, то у нас есть так называемые “выбросы” - их нужно анализировать либо отдельно , либо исключить из рассмотрения.

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

1)Для этого по имеющимся у нас данныи составим регрессионную модель:

Moscow=forFBpost %>% filter(city=="Москва")
my=Moscow %>% filter(year>"2008" & year<"2020")
ggplot(my, aes(x =year, y = fact/1000))+ geom_point()+
  stat_smooth(method = lm)+labs(title="Линейная регрессия для города Москва",x="Год",y="Численность населения в тыс.")
## `geom_smooth()` using formula 'y ~ x'

model <- lm(fact ~ year, data =Moscow) 
#посмотрим на модель
summary(model)
## 
## Call:
## lm(formula = fact ~ year, data = Moscow)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -131910  -73487  -21473   84858  135826 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -243487550   13800119  -17.64 2.04e-09 ***
## year            126866       6852   18.52 1.22e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 92440 on 11 degrees of freedom
##   (108 observations deleted due to missingness)
## Multiple R-squared:  0.9689, Adjusted R-squared:  0.9661 
## F-statistic: 342.8 on 1 and 11 DF,  p-value: 1.221e-09

Вы , как аналитик провели всевозможные тесты и составили регрессионо-предсказательную модель : \[Fact=-1343638.4+730.3*YEAR\]

Скажите, какая численность будет в Москве в 2065 году согласно этой модели? Насколько корректно делать такой прогноз?

Ответ :164431.1. Однако делать такой прогноз не корректно, так как мы не можем предсказывать данные для столь отдаленного времени.

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

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

Cities=forFBpost %>% filter(city!="Москва")
myn=Cities%>% filter(year>"2008" & year<"2020")
myn=myn %>% filter(year=="2010")
summary(myn$fact)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    2370   16061   33864   78546   70441 1071268
final = myn %>% mutate(level=case_when(myn$fact<18987~"low",myn$fact>60000~"high",TRUE~"middle"))
ggplot(final)+geom_bar(aes(level))+labs(title="Уровни численности населения на 2010 год",x="Уровни",y="Численность населения в тыс.")

final=left_join(final,Cities,by="city") # разделим на прмерно равные части , чтобы при статистическом тесте не было "перекосов"
final=final %>%dplyr:: select(city,year.y,model.y,fact.y,low.y,high.y,level)

Скажите, значит ли это , что мы можем применить регрессионный анализ отдельно к каждому из этих городов, будет ли такие модели “несмещенными” , сможем ли мы говорить о верности нашего анализа , если будем оценивать эти три модели по-отдельности.

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