Задача из реальной жизни ) Ваш начальни весьма обеспокоен клиенской базой.Он хочет узнать , где проживает больше всего человек в стране и где тенденция к росту будет усиливаться, а где уменьшаться.Для этого он предланает вам проанализировать имеющиеся у него данные.
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 году. Только как? Как найти такие значения, чтобы все данные были равномерно распределены?Предложите свои варианты.
Ответ: Допустим, вы выбрали для распределения - квантилии (1 , 2 и 3) и у вас получилось равномерное распределение по уровням
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)
Скажите, значит ли это , что мы можем применить регрессионный анализ отдельно к каждому из этих городов, будет ли такие модели “несмещенными” , сможем ли мы говорить о верности нашего анализа , если будем оценивать эти три модели по-отдельности.
Ответ: чтобы ответить на этот вопрос нужно представить сеье наши данные и задачу, которую мы ставим перед собой.Так в самом вопросу уже есть намек на ответ- очень часто исследователи делят выборку по какому-то признаку, чтобы получить лучшее предсказание, однако такое деление может сместить оценку в целом, сделать ее неправдоподобной для всей выборки, что в дальнейшем приведет к ошибке даже при равномерном распределении.