library(readr)
Задание №1-2 1. Возьмите любой открытый, доступный датасет на Ваше усмотрение (например iris, cars и т.д.). 2. Проведите небольшой разведочный анализ данных.
data_set <- read_csv("Walmart Data Analysis and Forcasting.csv")
## Rows: 6435 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): Date
## dbl (7): Store, Weekly_Sales, Holiday_Flag, Temperature, Fuel_Price, CPI, Un...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
data_set
## # A tibble: 6,435 × 8
## Store Date Weekly_Sales Holiday_Flag Temperature Fuel_Price CPI
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 05-02-2010 1643691. 0 42.3 2.57 211.
## 2 1 12-02-2010 1641957. 1 38.5 2.55 211.
## 3 1 19-02-2010 1611968. 0 39.9 2.51 211.
## 4 1 26-02-2010 1409728. 0 46.6 2.56 211.
## 5 1 05-03-2010 1554807. 0 46.5 2.62 211.
## 6 1 12-03-2010 1439542. 0 57.8 2.67 211.
## 7 1 19-03-2010 1472516. 0 54.6 2.72 211.
## 8 1 26-03-2010 1404430. 0 51.4 2.73 211.
## 9 1 02-04-2010 1594968. 0 62.3 2.72 211.
## 10 1 09-04-2010 1545419. 0 65.9 2.77 211.
## # ℹ 6,425 more rows
## # ℹ 1 more variable: Unemployment <dbl>
library(ggplot2)
Переведём данные температуры с Фаренгейта на Цельсии
data_set$Temperature <- (data_set$Temperature - 32) * (5/9)
data_set
## # A tibble: 6,435 × 8
## Store Date Weekly_Sales Holiday_Flag Temperature Fuel_Price CPI
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 05-02-2010 1643691. 0 5.73 2.57 211.
## 2 1 12-02-2010 1641957. 1 3.62 2.55 211.
## 3 1 19-02-2010 1611968. 0 4.41 2.51 211.
## 4 1 26-02-2010 1409728. 0 8.13 2.56 211.
## 5 1 05-03-2010 1554807. 0 8.06 2.62 211.
## 6 1 12-03-2010 1439542. 0 14.3 2.67 211.
## 7 1 19-03-2010 1472516. 0 12.5 2.72 211.
## 8 1 26-03-2010 1404430. 0 10.8 2.73 211.
## 9 1 02-04-2010 1594968. 0 16.8 2.72 211.
## 10 1 09-04-2010 1545419. 0 18.8 2.77 211.
## # ℹ 6,425 more rows
## # ℹ 1 more variable: Unemployment <dbl>
Подготовим анализ по 1 магазину
store_1 <- subset(data_set, data_set$Store == 1)
store_1
## # A tibble: 143 × 8
## Store Date Weekly_Sales Holiday_Flag Temperature Fuel_Price CPI
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 05-02-2010 1643691. 0 5.73 2.57 211.
## 2 1 12-02-2010 1641957. 1 3.62 2.55 211.
## 3 1 19-02-2010 1611968. 0 4.41 2.51 211.
## 4 1 26-02-2010 1409728. 0 8.13 2.56 211.
## 5 1 05-03-2010 1554807. 0 8.06 2.62 211.
## 6 1 12-03-2010 1439542. 0 14.3 2.67 211.
## 7 1 19-03-2010 1472516. 0 12.5 2.72 211.
## 8 1 26-03-2010 1404430. 0 10.8 2.73 211.
## 9 1 02-04-2010 1594968. 0 16.8 2.72 211.
## 10 1 09-04-2010 1545419. 0 18.8 2.77 211.
## # ℹ 133 more rows
## # ℹ 1 more variable: Unemployment <dbl>
ggplot(store_1, aes(x = Temperature, y = Weekly_Sales)) + geom_point() + xlab("Температура окр. среды на неделе") + ylab("Сумма продажи на неделе")
ggplot(store_1, aes(x = CPI, y = Unemployment)) + geom_point() + stat_smooth(method = "lm") + xlab("Покупательская способность") + ylab("Коэффициент бедности")
## `geom_smooth()` using formula = 'y ~ x'
top_market <- data.frame(Number = unique(data_set$Store))
Median_Sales <- sapply(top_market$Number, function(c) { mean(subset(data_set$Weekly_Sales, data_set$Store == c))} )
top_market$Median_Sales <- Median_Sales
pal <- colorRampPalette(c(1 : 8))
pal_val <- pal(45)
barplot(top_market$Median_Sales, names.arg=top_market$Number, ylab="Среднее значение продаж за всё время", xlab="Номер магазина", col = pal_val)
Median_CPI <- sapply(top_market$Number, function(c) { mean(subset(data_set$CPI, data_set$Store == c))} )
top_market$Median_CPI <- Median_CPI
ggplot(top_market, aes(x = Median_CPI, y = Median_Sales)) + geom_point(colour = pal_val) + xlab("Средняя покупательская способность") + ylab("Среднее значение продаж за всё время")
Задание №4 Адаптируйте и отладьте программу на языке R, реализующую
алгоритм бутсрапа, которая представлена на слайде 21 в лекции, добавьте
визуализацию (графики). Сделайте выводы.
set.seed(0)
library(boot)
rsq_function <- function(formula, data, indices) {
d <- data[indices, ]
fit <- lm(formula, data=d)
return (summary(fit)$r.square)
}
reps <- boot(data = mtcars, statistic = rsq_function, R = 2000, formula = mpg~disp)
reps
##
## ORDINARY NONPARAMETRIC BOOTSTRAP
##
##
## Call:
## boot(data = mtcars, statistic = rsq_function, R = 2000, formula = mpg ~
## disp)
##
##
## Bootstrap Statistics :
## original bias std. error
## t1* 0.7183433 0.003272215 0.06390141
plot(reps)
boot.ci(boot.out = reps, type = "bca")
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 2000 bootstrap replicates
##
## CALL :
## boot.ci(boot.out = reps, type = "bca")
##
## Intervals :
## Level BCa
## 95% ( 0.5437, 0.8149 )
## Calculations and Intervals on Original Scale