Домашнее задание

В файле parfume.csv приведены результаты маркетингового исследования, целью которого было выяснить предпочтения девушек от 18 до 25 лет относительно рекламы парфюмерной воды Black & White от Carolina Herrera (название изменено). Все девушки, участвовавшие в исследовании, были случайным образом распределены между контрольной и тестовой группой. Девушкам в контрольной группе показывали рекламный видеоролик в цветном варианте, а в тестовой — видеоролик в чернобелом варианте. Через некоторое время после демонстрации ролика фиксировалось, хотела бы девушка приобрести парфюмерную воду (значение 1) или нет (значение 0). По итогам анализа данных необходимо решить, какой из вариантов роликов оставить и использовать в дальнейшем. Описание данных: id — id респондента, age — возраст респондента, group — группа (тестовая или контрольная), vote — решение о покупке (1 — хочет купить, 0 — не хочет, 2 — нет ответа).

Задание

Часть 1: R

  1. Загрузите данные из файла parfume.csv в датафрейм parf.
setwd("C:/Users/Vladimir.Kem/Desktop/Skill/HW_R")
parf <- read.csv("parfume.csv")
  1. Оставьте в датафрейме только те строки, которые соответствуют девушкам, предоставившим ответ на вопрос о решении купить/не купить парфюмерную воду. В последующих заданиях необходимо работать с обновленным датафреймом.
parf <- parf[parf$vote != 2, ]
  1. Для описания имеющихся данных постройте две столбиковые диаграммы (bar plots), которые показывают, сколько девушек хотели/не хотели бы приобрести парфюмерную воду Black & White в контрольной и тестовой группе (одна диаграмма для одной группы). Приведите графики в порядок, добавьте содержательные подписи и названия. Подсказка: используйте функцию table() для получения числа нулей и единиц в столбце vote, а затем воспользуйтесь графической функцией barplot().
barplot(table(parf$vote[parf$group == "control"]), main="Control group", xlab = "Answers", ylab = "Density")

barplot(table(parf$vote[parf$group == "test"]), main="Test group", xlab = "Answers", ylab = "Density")

  1. Сохраните в вектор test ответы на вопрос о решении купить/не купить парфюмерную воду всех девушек, которые были в тестовой группе. Сохраните в вектор control ответы на вопрос о решении купить/не купить парфюмерную воду всех девушек, которые были в контрольной группе. Подсказка: сначала отберите строки, соответствующие этим девушкам, а потом извлеките из полученного датафрема нужный столбец.
test <- parf$vote[parf$group == "test"]
  
  
control <- parf$vote[parf$group == "control"]
  1. Сформулируйте нулевую гипотезу и одностороннюю альтернативную гипотезу, выдвигаемые для принятия решения о выборе одного из двух рекламных роликов (какой из роликов предпочла большая доля девушек). Считайте, что по мнению экспертов, ожидается, что черно-белый ролик будет более предпочтительным.

Нулевая гипотеза: Доли девушек, решивших купить духи после цевтного ролики и черно-белого, не отличаются. (p_test = p_control)

Альтернативная гипотеза: Доля девушек, решвших купить духи после черно-белого ролика, выше, чем после цветного. (p_ test > p_control)

  1. Используя бутстрэп с числом итераций N = 1000, найдите p-value для разности долей девушек, которые захотели купить Black & White в контрольной и тестовой группах. Для воспроизводимости результатов зафиксируйте стартовую точку с помощью set.seed(123). Не забудьте о центрировании, которое обсуждалось в практическом задании 1.
N <- 1000

set.seed(123)

p_test <- mean(test)
p_control <- mean(control)

p = p_test - p_control

differences <- rep(NA, N) 
for(i in 1:N){
  s1 <- sample(control, replace = TRUE)
  s2 <- sample(test, replace = TRUE)
  p1 <- sum(s1)/length(s1)
  p2 <- sum(s2)/length(s2)
  p_diff <- p2 - p1
  differences[i] <- p_diff
}

diff_df <- data.frame(dif = differences)

differences_cent <- differences - mean(differences)
diff_df$dif_cent <- differences_cent



sum(differences_cent > p)
## [1] 0
  1. Сделайте статистический вывод на основе полученного p-value, приняв уровень значимости равным 5% (отвергается или не отвергается нулевая гипотеза). Сделайте содержательный вывод о выборе рекламного ролика (какой из вариантов лучше).

Полученный p-value равен нулю (меньше 5%), значит нулевая гипотеза отвергается. По полученным данным можно сделать однозначный вывод, что черно-белый ролик более эффективный.

Часть 2: Python

  1. Загрузите данные из файла parfume.csv в датафрейм parf (используйте библиотеку pandas).
  2. Оставьте в датафрейме только те строки, которые соответствуют девушкам, предоставившим ответ на вопрос о решении купить/не купить парфюмерную воду. В последующих заданиях необходимо работать с обновленным датафреймом.
  3. Сохраните в датафрейм test строки, соответствующие девушкам из тестовой группы, а в датафрейм control — девушкам из контрольной группы.
  4. Посчитайте на основе датафреймов test и control значения, необходимые для проверки гипотезы о равенстве долей с помощью функции proportions_ztest.
  5. Проверьте гипотезу о равенстве долей с помощью функции proportions_ztest, учитывая, что альтернативная гипотеза является односторонней. Сделайте статистический вывод на основе полученного p-value, приняв уровень значимости равным 5% (отвергается или не отвергается нулевая гипотеза). Сделайте содержательный вывод о выборе рекламного ролика (какой из вариантов лучше).

import pandas as pd
import numpy as np
parf = pd.read_csv("parfume.csv")

parf.query('vote != 2', inplace=True)

test = parf.query('group == "test"').vote
control = parf.query('group == "control"').vote

test_sum = test.sum()
test_n = test.size
control_sum = control.sum()
control_n = control.size
count = np.array([control_sum, test_sum])
nobs = np.array([control_n, test_n])

from statsmodels.stats.proportion import proportions_ztest
proportions_ztest(count, nobs)
## (-3.575711014554664, 0.0003492773149343703)

p-value практически равен 0 (меньше уровня значимости), поэтому мы отвергает нулевую гипотезу и соглашаемся с односторонней альтернативой. По полученным данным можно сделать однозначный вывод, что черно-белый ролик более эффективный.