Introdução

Este trabalho tem por objetivo realizar uma análise exploratória do perfil sociodemográfico dos usuários de plataformas de streaming de música - Spotify, Deezer, Apple Music, dentre outros -, no período compreendido entre 2017 e 2019.

Duas razões me levaram a escolher o período e o tema acima referidos. O primeiro diz respeito a disponibilidade dos dados, uma vez que a TIC Domicílios - realizada anualmente -, passou a inserir, no ano de 2017, uma pergunta que buscava identificar os usuários contratantes desse tipo de serviço. A segunda razão tem a ver com a curiosidade que me foi despertada quando observei, em meados de 2018, o “Boom” no uso desses aplicativos no meu ciclo social. Gostaria de identificar, nesse sentido, em que contextos essa dinâmica se repetiu, e para quais perfis de pessoas.

Trata-se de uma grande oportunidade cedida pelos organizadores da TIC, pois enriquece enormemente o repertório informacional que dispomos para traçar estratégias para o segmento de mercado.

Considerações metodológicas

O primeiro passo foi agrupar as bases de dados correspondentes a cada ano numa só, atribuindo a cada conjunto de dados um identificador chamado “marcador_ano”. Dessa forma pude trabalhá-los de maneira agregada e desagregada, sem maiores problemas.

Tratando-se de uma análise exploratória, escolhi variáveis sociodemográficas típicas das Ciências sociais, sendo estas:

Todas foram cruzadas com a variável principal, de código H12_B:

" O respondente pagou por serviços de músicas pela Internet, como por exemplo Spotify ou Deezer? "

Tratamento das variáveis

#Substituindo os valores numéricos do dicionário pelos nomes das categorias

df_tic_final <- df_tic_final %>% 
  mutate(sexo_cat       = case_when(SEXO == 1 ~ 'Masculino',
                                  SEXO == 2 ~ 'Feminino'),
         faixa_et_cat    = case_when(FAIXA_ETARIA == 1 ~ "10 a 15 anos",
                                  FAIXA_ETARIA == 2 ~ "16 a 24 anos",
                                  FAIXA_ETARIA == 3 ~ "25 a 34 anos",
                                  FAIXA_ETARIA == 4 ~ "35 a 44 anos",
                                  FAIXA_ETARIA == 5 ~ "45 a 59 anos",
                                  FAIXA_ETARIA == 6 ~ "60+"),
         grau_inst_cat   = case_when(GRAU_INSTRUCAO_2 == 1 ~ 'Analfabeto/Ed.Inf',
                                   GRAU_INSTRUCAO_2 == 2 ~ 'Fundamental',
                                   GRAU_INSTRUCAO_2 == 3 ~ 'Médio',
                                   GRAU_INSTRUCAO_2 == 4 ~ 'Superior'),
         renda_fam_cat   = case_when(RENDA_FAMILIAR_2 == 1 ~ 'Até 1 SM',
                                   RENDA_FAMILIAR_2 == 2 ~ '1 a 2 SM',
                                   RENDA_FAMILIAR_2 == 3 ~ '2 a 3 SM ',
                                   RENDA_FAMILIAR_2 == 4 ~ '3 a 5 SM',
                                   RENDA_FAMILIAR_2 == 5 ~ '5 a 10 SM',
                                   RENDA_FAMILIAR_2 == 6 ~ 'Mais de 10 SM',
                                   RENDA_FAMILIAR_2 == 7 ~ 'Não tem renda',
                                   RENDA_FAMILIAR_2 == 97 ~ 'Não sabe',
                                   RENDA_FAMILIAR_2 == 98 ~ 'Não respondeu'),
         raca_cat        = case_when(RACA == 1 ~ 'Branco',
                                   RACA == 2 ~ 'Preto',
                                   RACA == 3 ~ 'Pardo',
                                   RACA == 4 ~ 'Amarelo',
                                   RACA == 5 ~ 'Indígena',
                                   RACA == 98 ~ 'Não respondeu'),
         cod_reg_cat     = case_when(COD_REGIAO_2 == 1 ~ 'Sudeste',
                                   COD_REGIAO_2 == 2 ~ 'Nordeste',
                                   COD_REGIAO_2 == 3 ~ 'Sul',
                                   COD_REGIAO_2 == 4 ~ 'Norte',
                                   COD_REGIAO_2 == 5 ~ 'Centro-Oeste'),
         classe_2015_cat = case_when(CLASSE_2015  == 1 ~ 'A',
                                     CLASSE_2015  == 2 ~ 'B',
                                     CLASSE_2015  == 3 ~ 'C',
                                     CLASSE_2015  == 4 ~ 'D/E'),
         area_cat        = case_when(AREA == 1 ~ 'Urbana',
                                     AREA == 2 ~ 'Rural'),
         
         pagou_mus_cat   = case_when(H12_B == 0  ~ 'Não',
                                     H12_B == 1  ~ 'Sim',
                                     H12_B == 97 ~ 'Não sabe'),
         marcador_cat    = case_when(marcador == 1 ~ '2017',
                                     marcador == 2 ~ '2018',
                                     marcador == 3 ~ '2019'))

Análise exploratória

Assinantes x Não assinantes, 2017 a 2019

#Summarise gerador do gráfico

assinantes_nao <- df_tic_final %>% 
  #Retirando os casos inválidos
  filter(pagou_mus_cat != "Não sabe") %>%
  group_by(pagou_mus_cat, marcador_cat) %>% 
  summarise(N = sum(PESO)) %>% 
  ungroup() %>% 
  group_by(marcador_cat) %>% 
  mutate(Proporção = prop.table(N))
kable(assinantes_nao)
pagou_mus_cat marcador_cat N Proporção
Não 2017 79345935 0.8932795
Não 2018 125316102 0.9205472
Não 2019 87569465 0.8676247
Sim 2017 9479497 0.1067205
Sim 2018 10816082 0.0794528
Sim 2019 13360653 0.1323753
#Plot

assinantes_nao_g <-
  assinantes_nao %>%  
  filter(pagou_mus_cat == 'Sim') %>% 
  ggplot(aes(x = marcador_cat, y = Proporção, group = 1)) +
  geom_line(colour = 'violetred4') + 
  geom_point(colour = 'violetred4') +
  scale_y_continuous(labels = scales::percent) +
  labs(x = '',
       y = '',
       title = "Percentual de assinantes de plataformas de streaming de música,
2017 a 2019 - Brasil",
       caption = 'TIC Domicílios 2017 - 2019') +
  scale_x_discrete(labels = c('2017', '2018', '2019')) +
  theme_minimal()

print(assinantes_nao_g)

Entre os anos de 2017 e 2019, houve um aumento considerável no número de assinaturas de plataformas de streaming de musica, indo de 10,6% em 2017 para 13,2% em 2019. Um aumento de 24,8% num período de dois anos.

Assinantes por sexo

#Summarise gerador do gráfico

assinantes_sexo <- df_tic_final %>% 
  #Retirando os casos inválidos
  filter(pagou_mus_cat != 'Não', pagou_mus_cat != 'Não sabe') %>%
  group_by(marcador_cat, sexo_cat) %>% 
  summarise(N = sum(PESO)) %>% 
  ungroup() %>% 
  group_by(marcador_cat) %>% 
  mutate(Proporção = prop.table(N))
kable(assinantes_sexo)
marcador_cat sexo_cat N Proporção
2017 Feminino 3314989 0.3497010
2017 Masculino 6164508 0.6502990
2018 Feminino 5018637 0.4639976
2018 Masculino 5797446 0.5360024
2019 Feminino 5823920 0.4359009
2019 Masculino 7536733 0.5640991
#Plot

assinantes_sexo_g <-
  assinantes_sexo %>%  
  ggplot(aes(x = marcador_cat,
             y = Proporção,
             group = sexo_cat, 
             colour = sexo_cat)) +
  geom_line() +
  geom_point() +
  scale_colour_manual(values = c('orange3', 'mediumpurple1')) +
  scale_y_continuous(labels = scales::percent) +
  labs(x = '',
       y = '',
       title = "Assinantes de plataformas de streaming de música por sexo,
2017 a 2019 - Brasil",
       caption = 'TIC Domicílios 2017 - 2019',
       colour = '') +
  scale_x_discrete(labels = c('2017', '2018', '2019')) +
  theme_minimal()
  

print(assinantes_sexo_g)

A disparidade entre homens e mulheres ao assinar plataformas de streaming de música é notável nos três anos, sendo 2017 o ano de maior desproporção, com 30% mais homens que mulheres. Em 2018, observa-se uma tendência de convergência entre os gêneros, havendo uma diferença de apenas 7%. Finalmente, em 2019, observa-se um aumento da disparidade, com cerca de 13% mais homens que mulheres assinantes das plataformas.

Assinantes por raça/cor

#Summarise gerador do gráfico

assinantes_racacor <- df_tic_final %>% 
  #Retirando os casos inválidos
  filter(pagou_mus_cat != 'Não sabe') %>%
  group_by(marcador_cat, raca_cat) %>% 
  summarise(N = sum(PESO)) %>% 
  ungroup() %>% 
  group_by(marcador_cat) %>% 
  mutate(Proporção = prop.table(N))

kable(assinantes_racacor)
marcador_cat raca_cat N Proporção
2017 Amarelo 2457662 0.0276684
2017 Branco 31417312 0.3536973
2017 Indígena 1438783 0.0161979
2017 Não respondeu 1117208 0.0125776
2017 Pardo 39110692 0.4403096
2017 Preto 13283775 0.1495492
2018 Amarelo 3581316 0.0263076
2018 Branco 51305297 0.3768785
2018 Indígena 2012499 0.0147834
2018 Não respondeu 1991895 0.0146321
2018 Pardo 58150006 0.4271584
2018 Preto 19091172 0.1402400
2019 Amarelo 2156035 0.0213617
2019 Branco 35596490 0.3526845
2019 Indígena 1428253 0.0141509
2019 Não respondeu 1506360 0.0149248
2019 Pardo 47242480 0.4680712
2019 Preto 13000501 0.1288070
#Plot

assinantes_racacor_g <-
  assinantes_racacor %>%  
  ggplot(aes(x = marcador_cat,
             y = Proporção,
             group = raca_cat, 
             colour = raca_cat)) +
  geom_line() +
  geom_point() +
  scale_y_continuous(labels = scales::percent) +
  labs(x = '',
       y = '',
       title = "Assinantes de plataformas de streaming de música por raça/cor,
2017 a 2019 - Brasil",
       caption = 'TIC Domicílios 2017 - 2019',
       colour = '') +
  scale_x_discrete(labels = c('2017', '2018', '2019')) +
  theme_minimal() +
  scale_colour_brewer(palette = 'Dark2')
  

print(assinantes_racacor_g)

Indivíduos brancos e pardos representam grande parte das assinaturas de streaming de música. O que faz sentido, uma vez que a maior parte da população brasileira pertence a essas duas etnias.

#Summarise gerador do gráfico

assinantes_faixa_et <- df_tic_final %>% 
  #Retirando os casos inválidos
  filter(pagou_mus_cat != 'Não', 
         pagou_mus_cat != 'Não sabe', 
         faixa_et_cat  != 'NA') %>%
  group_by(marcador_cat, faixa_et_cat) %>% 
  summarise(N = sum(PESO)) %>% 
  ungroup() %>% 
  group_by(marcador_cat) %>% 
  mutate(Proporção = prop.table(N)) 
  
kable(assinantes_faixa_et)
marcador_cat faixa_et_cat N Proporção
2017 10 a 15 anos 354403.5 0.0373863
2017 16 a 24 anos 2558641.9 0.2699133
2017 25 a 34 anos 3706410.9 0.3909924
2017 35 a 44 anos 1597953.9 0.1685695
2017 45 a 59 anos 967598.8 0.1020728
2017 60+ 294487.8 0.0310658
2018 10 a 15 anos 514652.7 0.0475822
2018 16 a 24 anos 3501993.6 0.3237765
2018 25 a 34 anos 3017229.3 0.2789577
2018 35 a 44 anos 1897271.6 0.1754121
2018 45 a 59 anos 1576914.3 0.1457935
2018 60+ 308020.9 0.0284780
2019 10 a 15 anos 4436833.8 0.3417004
2019 16 a 24 anos 3939289.7 0.3033823
2019 25 a 34 anos 2290861.2 0.1764295
2019 35 a 44 anos 1953840.7 0.1504740
2019 45 a 59 anos 363748.3 0.0280139
#Plot

assinantes_faixaet_g <-
  assinantes_faixa_et %>%  
  ggplot(aes(x = marcador_cat,
             y = Proporção,
             group = faixa_et_cat, 
             colour = faixa_et_cat)) +
  geom_line() +
  geom_point() +
  scale_colour_manual(values = c('orange3', 'mediumpurple1')) +
  scale_y_continuous(labels = scales::percent, limits = c(0,0.5)) +
  labs(x = '',
       y = '',
       title = "Assinantes de plataformas de streaming de música por faixa
etária, 2017 a 2019 - Brasil",
       caption = 'TIC Domicílios 2017 - 2019',
       colour = '') +
  scale_x_discrete(labels = c('2017', '2018', '2019')) +
  theme_minimal() +
  scale_colour_brewer(palette = 'Dark2')
  

print(assinantes_faixaet_g)

Várias coisas interessantes aconteceram com o perfil etário ao longo do período. A que mais salta os olhos, foi o aumento expressivo no número de assinantes de 10 a 15 anos no período de 2018 para 2019. Em seguida, o declínio progressivo do interesse das faixas de 25 a 35 anos de idade no serviço. Os indivíduos de 45 a 59 anos de idade parecem também estar perdendo o interesse nas plataformas, havendo uma redução quando comparamos os valores de 2018 e 2019 para a faixa etária.

Assinantes por grau de instrução

#Summarise gerador do gráfico

assinantes_ginst <- df_tic_final %>% 
  #Retirando os casos inválidos
  filter(pagou_mus_cat != 'Não', 
         pagou_mus_cat != 'Não sabe', 
         faixa_et_cat  != 'NA') %>%
  group_by(marcador_cat, grau_inst_cat) %>% 
  summarise(N = sum(PESO)) %>% 
  ungroup() %>% 
  group_by(marcador_cat) %>% 
  mutate(Proporção = prop.table(N)) 

kable(assinantes_ginst)
marcador_cat grau_inst_cat N Proporção
2017 Analfabeto/Ed.Inf 127490.2 0.0134490
2017 Fundamental 1509578.1 0.1592466
2017 Médio 3688156.1 0.3890666
2017 Superior 4154272.5 0.4382377
2018 Analfabeto/Ed.Inf 117672.8 0.0108794
2018 Fundamental 1474447.6 0.1363199
2018 Médio 3886104.8 0.3592895
2018 Superior 5337857.2 0.4935111
2019 Analfabeto/Ed.Inf 144087.1 0.0110968
2019 Fundamental 2366584.6 0.1822612
2019 Médio 4671771.6 0.3597940
2019 Superior 5802130.3 0.4468480
#Plot

assinantes_ginst_g <-
  assinantes_ginst %>%  
  ggplot(aes(x = marcador_cat,
             y = Proporção,
             group = grau_inst_cat, 
             colour = grau_inst_cat)) +
  geom_line() +
  geom_point() +
  scale_y_continuous(labels = scales::percent, limits = c(0,0.5)) +
  labs(x = '',
       y = '',
       title = "Assinantes de plataformas de streaming de música por grau
de instrução, 2017 a 2019 - Brasil",
       caption = 'TIC Domicílios 2017 - 2019',
       colour = '') +
  scale_x_discrete(labels = c('2017', '2018', '2019')) +
  theme_minimal() +
  scale_colour_brewer(palette = 'Dark2')
  

print(assinantes_ginst_g)

As plataformas de streaming são muito mais populares nos níveis de escolaridade mais altos nos três anos, mas há um leve declínio no percentual de assinaturas entre os indivíduos que possuem ensino superior de 2018 a 2019. Além disso, há um leve crescimento no percentual de estudantes de ensino fundamental no mesmo período.

Assinantes por renda familiar

#Summarise gerador do gráfico
assinantes_rendfam <- df_tic_final %>%
  filter(renda_fam_cat != 'Não tem renda') %>% 
  #Retirando os casos inválidos
  filter(pagou_mus_cat != 'Não', 
         pagou_mus_cat != 'Não sabe', 
         faixa_et_cat  != 'NA') %>%
  group_by(marcador_cat, renda_fam_cat) %>% 
  summarise(N = sum(PESO)) %>% 
  ungroup() %>% 
  group_by(marcador_cat) %>% 
  mutate(Proporção = prop.table(N))

kable(assinantes_rendfam)
marcador_cat renda_fam_cat N Proporção
2017 1 a 2 SM 1686500.1 0.1798128
2017 2 a 3 SM 905440.7 0.0965371
2017 3 a 5 SM 1777899.7 0.1895577
2017 5 a 10 SM 1946363.1 0.2075191
2017 Até 1 SM 957078.0 0.1020426
2017 Mais de 10 SM 1308628.4 0.1395245
2017 Não respondeu 355626.8 0.0379165
2017 Não sabe 441665.1 0.0470898
2018 1 a 2 SM 1464138.7 0.1357135
2018 2 a 3 SM 1718188.5 0.1592618
2018 3 a 5 SM 2826163.9 0.2619620
2018 5 a 10 SM 1871971.2 0.1735162
2018 Até 1 SM 1011519.9 0.0937595
2018 Mais de 10 SM 1189554.0 0.1102618
2018 Não respondeu 293451.2 0.0272005
2018 Não sabe 413463.0 0.0383246
2019 1 a 2 SM 1586210.8 0.1225182
2019 2 a 3 SM 1829071.7 0.1412767
2019 3 a 5 SM 2736140.4 0.2113383
2019 5 a 10 SM 2394492.4 0.1849496
2019 Até 1 SM 1813692.2 0.1400888
2019 Mais de 10 SM 1499669.0 0.1158338
2019 Não respondeu 441109.7 0.0340711
2019 Não sabe 646345.2 0.0499234
#Plot

assinantes_rendfam_g <-
  assinantes_rendfam %>%  
  ggplot(aes(x = marcador_cat,
             y = Proporção,
             group = renda_fam_cat, 
             colour = renda_fam_cat)) +
  geom_line() +
  geom_point() +
  scale_y_continuous(labels = scales::percent, limits = c(0,0.3)) +
  labs(x = '',
       y = '',
       title = 
"Assinantes de plataformas de streaming de música por renda familiar, 
2017 a 2019 - Brasil",
       caption = 'TIC Domicílios 2017 - 2019',
       colour = '') +
  scale_x_discrete(labels = c('2017', '2018', '2019')) +
  theme_minimal() +
  scale_colour_brewer(palette = 'Dark2')
  

print(assinantes_rendfam_g)

Indivíduos de famílias de faixas de renda intermediárias são aquelas que mais assinaram plataformas de streaming no ano de 2018 e 2019 (3 a 5 S.M’s). É notável, entretanto, que houve um aumento não desprezível (4%) no percentual de assinaturas de indivíduos de famílias que ganham até 1 S.M. Outras faixas de renda variam de maneira menos uniforme.

Assinantes por Grande Região

#Summarise gerador do gráfico
assinantes_regiao <- df_tic_final %>%
  filter(renda_fam_cat != 'Não tem renda') %>% 
  #Retirando os casos inválidos
  filter(pagou_mus_cat != 'Não', 
         pagou_mus_cat != 'Não sabe', 
         faixa_et_cat  != 'NA') %>%
  group_by(marcador_cat, cod_reg_cat) %>% 
  summarise(N = sum(PESO)) %>% 
  ungroup() %>% 
  group_by(marcador_cat) %>% 
  mutate(Proporção = prop.table(N))

kable(assinantes_regiao)
marcador_cat cod_reg_cat N Proporção
2017 Centro-Oeste 1233215.4 0.1314840
2017 Nordeste 1455102.2 0.1551414
2017 Norte 715843.2 0.0763224
2017 Sudeste 4760946.2 0.5076067
2017 Sul 1214095.0 0.1294455
2018 Centro-Oeste 968877.4 0.0898069
2018 Nordeste 1710299.0 0.1585306
2018 Norte 979515.6 0.0907930
2018 Sudeste 5556140.8 0.5150082
2018 Sul 1573617.7 0.1458613
2019 Centro-Oeste 717040.4 0.0553839
2019 Nordeste 2873189.0 0.2219239
2019 Norte 858413.5 0.0663035
2019 Sudeste 6692314.5 0.5169115
2019 Sul 1805773.8 0.1394772
#Plot

assinantes_regiao_g <-
  assinantes_regiao %>%  
  ggplot(aes(x = marcador_cat,
             y = Proporção,
             group = cod_reg_cat, 
             colour = cod_reg_cat)) +
  geom_line() +
  geom_point() +
  scale_y_continuous(labels = scales::percent, limits = c(0,0.7)) +
  labs(x = '',
       y = '',
       title = "Assinantes de plataformas de streaming de música,
2017 a 2019 - Grandes regiões do Brasil",
       caption = 'TIC Domicílios 2017 - 2019',
       colour = '') +
  scale_x_discrete(labels = c('2017', '2018', '2019')) +
  theme_minimal() +
  scale_colour_brewer(palette = 'Dark2')
  

print(assinantes_regiao_g)

A maior parte das assinaturas se concentram no Sudeste, e se mantêm constantes nos três anos pesquisados. É perceptível ainda que há um leve crescimento no percentual de assinaturas na região Nordeste.

Assinantes por classe social

#Summarise gerador do gráfico
assinantes_classesoc <- df_tic_final %>%
  filter(renda_fam_cat != 'Não tem renda') %>% 
  #Retirando os casos inválidos
  filter(pagou_mus_cat != 'Não', 
         pagou_mus_cat != 'Não sabe', 
         faixa_et_cat  != 'NA') %>%
  group_by(marcador_cat, classe_2015_cat) %>% 
  summarise(N = sum(PESO)) %>% 
  ungroup() %>% 
  group_by(marcador_cat) %>% 
  mutate(Proporção = prop.table(N))

kable(assinantes_classesoc)
marcador_cat classe_2015_cat N Proporção
2017 A 1243457 0.1325760
2017 B 3402564 0.3627776
2017 C 3559097 0.3794670
2017 D/E 1174083 0.1251794
2018 A 1015633 0.0941408
2018 B 4642629 0.4303333
2018 C 4050349 0.3754338
2018 D/E 1079839 0.1000921
2019 A 826673 0.0638519
2019 B 5081796 0.3925158
2019 C 4846960 0.3743772
2019 D/E 2191301 0.1692552
#Plot

assinantes_classesoc_g <-
  assinantes_classesoc %>%  
  ggplot(aes(x = marcador_cat,
             y = Proporção,
             group = classe_2015_cat, 
             colour = classe_2015_cat)) +
  geom_line() +
  geom_point() +
  scale_y_continuous(labels = scales::percent, limits = c(0,0.7)) +
  labs(x = '',
       y = '',
       title = 
"Assinantes de plataformas de streaming de música por 
classe social, 2017 a 2019 - Brasil",
       caption = 'TIC Domicílios 2017 - 2019',
       colour = '') +
  scale_x_discrete(labels = c('2017', '2018', '2019')) +
  theme_minimal() +
  scale_colour_brewer(palette = 'Dark2')
  

print(assinantes_classesoc_g)

Individuos pertencentes à classe B e C são a maioria das assinaturas. Há, porém, um crescimento considerável no número de assinaturas nas classes D e E nos anos de 2018 e 2019. A classe A vêm contratando cada vez menos o serviço.

Conclusões

O número de assinantes de plataformas de streaming aumentou consideravelmente nos anos pesquisados, em especial de 2018 para 2019. Dado que se trata de um serviço que possui alta demanda e preços cada vez mais acessíveis, há razões para acreditar que continue crescendo.

Sem nos dedicar a um modelo mais rebuscado, podemos tirar algumas conclusões preliminares sobre o perfil do assinante de plataforma de streaming. Em geral, temos que o assinante seria: Um homem, de 10 a 24 anos de idade, branco ou pardo, com nível superior ou médio, com renda familiar que vai de 1 a 3 salário mínimos, pertencente as classes B ou C e residente da região Sudeste.

Evidentemente, muitas especificidades são desconsideradas ao analisar apenas as frequências de cada variável sociodemográfica, mas este esforço ajuda a pintar um cenário geral que pode nos direcionar a modelos explicativos um pouco mais complexos, como por exemplo as regressões logísticas (modelo logit) , que trabalharei futuramente.

Por fim, este é o primeiro trabalho descritivo em R que realizei e formalizei num documento Markdown, e por isso ficaria muito contente em receber feedbacks.

Obrigado pela leitura!