Descrierea Aplicației

A fost dezvoltată o aplicație bazată pe experimente. Urmărim analizarea alegerilor și deciziilor unor indivizi, atât în nume propriu cât și în numele unei firme, atunci când informația de care aceștia dispun devine din ce în ce mai complexă.

Partea I - Alegeri la momentul de timp t0

Chestionarul

Pentru această parte am solicitat răspunsurile a încă 3 persoane, la chestionarul deja creeat:

ID vârstă Sistem Personalitate Atitudine Dependență branduri de lux
AB 24 fast optimistic, enthusiastic, passionate, spontaneous risk lover dependent
TPN 24 slow logical, analytical, artistic, curious averse not dependent
AC 28 fast calm, selfless, intelligent, balanced risk neutral little

*Chestionarul împreună cu răspunsurile, pentru fiecare dintre cei 3, pot fi văzute în Anexa 1.

Răspunsurile celor 3 au fost procesate și adăugate unui set deja existent format din încă 45 de înregistrări. Astfel setul final de date conține răspunsurile a 48 de respondenți și 18 coloane.

head(chestionar)
##   Nr                    Nume  ID Varsta Sistem
## 1  1 Lazar_Stefania_Beatrice LSB     23   slow
## 2  2                         DAM     23   slow
## 3  3                         BAM     23   slow
## 4  4                          AV     23   fast
## 5  5                          VA     22   fast
## 6  6                         GRM     22   slow
##                                          Personalitate    Atitudine
## 1      helpful, optimistic, pozitive, kind, respectful risk neutral
## 2                                  realistic, positive risk neutral
## 3                        melancholic, calm, empathetic       averse
## 4                                 ambitious, organized risk neutral
## 5                            realistic, kind, stubborn risk neutral
## 6 stubborn, realistic, attentive, analitical, empathic       averse
##             Dep Reclame Recomandari Fericire Q1.PII Nota_Gucci Nota_Dior
## 1        little       4           8        3  6,9,7          6         9
## 2 not dependent       5           8        8  4,9,5          4         9
## 3        little       4           7        7  3,8,5          3         8
## 4 not dependent       4           6        7  5,6,9          5         6
## 5        little       2           6        5  3,9,4          3         9
## 6 not dependent       2           6        8  6,9,7          6         9
##   Nota_Armani Q_1000       Tip_produs Q_firma
## 1           7   Dior          perfume    Dior
## 2           5   Dior          make-up    Dior
## 3           5   Dior perfume, make-up    Dior
## 4           9 Armani          perfume  Armani
## 5           4   Dior          perfume    Dior
## 6           7   Dior          clothes   Gucci

Explorarea răspunsurilor

Respondenții care au dat note mai mici decât 5 pentru Gucci :

#facem un filtru - selectati studentii care au dat note<5 pt gucci ----
chestionar%>%
select(ID, Nota_Gucci)%>%     
filter(Nota_Gucci<5, Nota_Gucci!= 0)
##     ID Nota_Gucci
## 1  DAM          4
## 2  BAM          3
## 3   VA          3
## 4  MGB          3
## 5   GM          3
## 6   DG          3
## 7  GSM          4
## 8  UDM          3
## 9  GMA          4
## 10 IAI          3
## 11  IP          4
## 12 TPN          3
## 13  AC          4
# dintre cei 3 respondenti, 2 au dat sub 5 pt gucci

Se poate observa că 13 de respondenți au dat note sub 5 pentru Gucci. Dintre cei 3 respondenți prezentați anterior, 2 au au dat note sub 5 pentru Gucci - TPN și AC. Cei doi au dat pentru restul firmelor note peste 5.

În tabelul de mai jos se pot observa studenții care au dat note peste 5 pentru toate brandurile.

#toti studentii care au dat note > 5 pt toate brandurile
chestionar%>%
        select(ID, Nota_Gucci, Nota_Armani, Nota_Dior)%>%
        filter(Nota_Dior>=5, Nota_Armani>=5, Nota_Gucci>=5)
##     ID Nota_Gucci Nota_Armani Nota_Dior
## 1  LSB          6           7         9
## 2   AV          5           9         6
## 3  GRM          6           7         9
## 4   MD          5           8         7
## 5   BD          5           7         9
## 6   AS          8          10         9
## 7   AM          5          10         9
## 8  GIA          5           8         9
## 9  SEA          6           8         9
## 10  GM          6           6         6
## 11 ROG         10           6        10
## 12 HLE          7           7         7
## 13 VFM          5           5         5
## 14  AZ          5           7         7
## 15 EGP          6           9         8
## 16 TDC          5           7         7
## 17  TA          8           6         9
## 18  VI          6           6         8
## 19 CAF          5           8         7
## 20 ID           6           6         8
## 21 BAC          8           5         7
## 22  MP          8           6         9
## 23 BMT          9           7        10
## 24 SCM          7           6         9
## 25  DA          7           8        10
## 26  AB         10           7         8
#dintre cei 3 - doar AB, restul au dat amandoi 3 pt Gucci        

Dintre cei 3 respondenți , numai AB a dat nota pentru Gucci peste 5, respectiv 10. Există numai 2 de 10 pentru Gucci. Desi a dat nota 10 pentru Gucci, ar alege să își cumpere parfum Dior. Totuși, dacă ar investi, ar investi în Gucci, dintre cele 3 branduri.

Mai jos am afișat media punctajului acordat pentru fericire, în functie de sistemul de gândire și notele acordate pentru fiecare brand.

# calculati media punctajului acordat pentru fericire, in functie de sistem si afisati notele pt cele 3 branduri 

##view(chestionar)

# grupam dupa sistemul de gandire si dupa media fericirii, notele pt branduri
chestionar %>%
        group_by(Sistem)%>%
        summarise(meanFericire = mean(Fericire), meanDior = mean(Nota_Dior), meanGucci = mean(Nota_Gucci), meanArmani = mean(Nota_Armani))
## # A tibble: 3 x 5
##   Sistem meanFericire meanDior meanGucci meanArmani
##   <fct>         <dbl>    <dbl>     <dbl>      <dbl>
## 1 ""             8        9         7          6   
## 2 "fast"         5.5      6.5       4.83       5.33
## 3 "slow"         6.77     7.06      4.74       5.94

Cei mai fericiti se pare că sunt sunt cei care nu au completat coloana aceasta. Tot ei sunt cei ce au dat cele mai mari note brandurilor. Se pare că cei cu sistemul de gândire slow sunt mai fericiți și dau note mai mari brandurilor. Totuși în cazul respondenților, AB - sistem fast, cota fericirii a fost mai mică decât in cazul TPN(slow) si AC(fast) - dar a dat cele mai mari note brandurilor, dintre cei trei. Diferența poate proveni din profilul psihologic al persoanei, este la curnt cu toate noutățile firmelor de lux, manechinelor și e în general în pas cu această industrie - fashion (fast fashion, luxury fashion, lifestyle). În condradicție cu ceilalți doi, care nu sunt orientați către această zonă și care au dat în consecință și note mai mici brandurilor deși, indiferent de sistem, au avut note foarte mari pentru fericire (tpn - 9, AC - 8).

Mai jos se poate observa cât de influențați sunt, în medie, respondenții chestionarului de recomandări și reclame.

#afisati media raspunsurilor referitoare la cat de influentati sunteti de reclame si recomandari
chestionar %>%
  summarise(meanReclame = mean(Reclame), meanRecomandari = mean(Recomandari))
##   meanReclame meanRecomandari
## 1    4.020833          6.6875
# suntem mai influentati de recomandari decat de reclame. Toti cei 3 respondenti au raspuns la fel ca majoritatea.

Se poate observa ca suntem mai influențați de recomandări decât de reclame.

Mai jos se pot vedea mediile notelor acordate și a fericirii în funcție de atitudinea față de risc. # ```{r, echo = FALSE} # #calculati media acordata brandurilor Dior Gucci si Armani precum si media indicatorului de fericire pe grupuri de atitudine fata de risc # chestionar %>% # group_by(Atitudine)%>% # summarise(meanFericire = mean(Fericire), meanDior = mean(Nota_Dior), meanGucci = mean(Nota_Gucci), meanArmani = mean(Nota_Armani)) # #cei neutrii la risc au dat cele mai mici note pt dior - AB e risk lover si a dat 8, restul au dat 7 (TPN aver si AC neutru) # #atitudinea pe care o declara respondentul influenteaza mediile

Mai jos se pot vedea mediile notelor acordate și a fericirii în funcție de atitudinea față de risc și sistem.

chestionar %>%
        group_by(Sistem, Atitudine)%>%
        summarise(meanFericire = mean(Fericire), meanDior = mean(Nota_Dior), meanGucci = mean(Nota_Gucci), meanArmani = mean(Nota_Armani))
## # A tibble: 7 x 6
## # Groups:   Sistem [3]
##   Sistem Atitudine    meanFericire meanDior meanGucci meanArmani
##   <fct>  <fct>               <dbl>    <dbl>     <dbl>      <dbl>
## 1 ""     risk neutral         8        9         7          6   
## 2 "fast" averse               5.5      6.25      3.75       5.5 
## 3 "fast" risk lover           3        8.5       9          6.5 
## 4 "fast" risk neutral         6.33     6         4.17       4.83
## 5 "slow" averse               6.17     7.42      4.17       6.67
## 6 "slow" risk lover           8.5      8         6.5        8.5 
## 7 "slow" risk neutral         6.95     6.76      4.90       5.29
#majoritatea notelor pt gucci sunt mai mici decat restul pentru toate gruparile, putem comenta variatia mediei notel in fucntie de atitudinea fata de risc comparat cu sistemul de gandire
# cei care nu au completat fac parte din categoria risk neutral cu cele mai mari note in majoritatea cazurilor.
#Se poate observa ca cea mai mare fericire o au cei slow risk lovers!

Se poate observa că cei mai fericiți sunt risk lovers cu sistemul de gândire slow.Pe de altă parte, cea mai mică medie a fericirii este pentru risk lovers cu sistem de gândire fast ( aici se încadrează și AB)!
Majoritatea notelor pentru Gucci sunt mai mici decât restul notelor pentru toate grupările.

Pentru că cei mai mulți respondenți au spus că și-ar cumpăra Dior, ne vom axa pe acest brand în această parte. Mai jos puteți observa grafice cu frecvențele notelor pentru primele două branduri - Armani și Dior.

# Grafice -----------------------------------------------------------------

#aranjati in ordine crescator respondentii chestionarului (persoana LSB?) dupa notele dior si repr grafic

#Dior
Nota_Dior_Ord <- chestionar%>%
        select(ID, Sistem, Reclame, Recomandari, Tip_produs, Nota_Dior, Nota_Gucci)%>%
        arrange(Nota_Dior)
##view(Nota_Dior_Ord)
ggplot(Nota_Dior_Ord, aes( x=Nota_Dior)) + geom_bar(color ='#5E4FA2')+labs(title = "Note Dior")

#Armani
Nota_Armani_Ord <- chestionar%>%
        select(ID, Sistem, Reclame, Recomandari, Tip_produs, Nota_Armani, Nota_Dior)%>%
        arrange(Nota_Dior)
##view(Nota_Armani_Ord)
ggplot(Nota_Armani_Ord, aes( x=Nota_Armani)) + geom_bar(color ='#5E4FA2')+labs(title = "Note Armani")

Se poate vedea că există mult mai multe note mari pentru Dior versus Armani. În continuare vom analiza ce tipuri de produse si-ar cumpăra respondenții.

#mutate - imi permite sa adaug sau sa rescriu o coloana
# adaugati o coloana la datele la chestionar in care calculati media notelor date de fiecare student celor 3 branduri

chestionar1 <- chestionar %>%
        mutate(mediaNote = (Nota_Armani+Nota_Dior+Nota_Gucci)/3)

#reprezentati grafic distributia studentilor respondenti dupa sistemul de gandire

sursa <- "Chestionar"
# ce tip de produs sau combinatii din brandul pe care il alegem - TPN si AC - parfum - cel mai frecvent raspuns, AB - geanta - a doua cea mai frecventa optiune
chestionar1%>%
        filter(Tip_produs!="")%>%
        group_by(Tip_produs)%>%
        summarise(n = n())%>%
        mutate(TProdFreq = n/ sum(n))%>%
        arrange(desc(TProdFreq))%>%
        ggplot(aes(x= reorder(Tip_produs,n), y= n))+geom_bar(stat ="identity", fill = '#5E4FA2', width =0.8)+scale_x_discrete(expand = c(0,0)) + labs(x ="Tip_Produs", y= "Respondenti", Caption = sursa) +coord_flip()

Cel mai frecvent răspuns a fost parufmul; și dintre cei 3 respondenți, TPN și AC și-ar cumpăra parfum. Cel puțin în cazul AC - a răspuns că și-ar cumpăra parfum Dior și știu ca parfumul lui preferat este de la Dior - se poate observa cel puțin in acest caz efectul înzestrării.

Mai jos avem grafice cu notele sub medie si peste medie pentru Dior și notele pentru Dior în ordine crescătoare.

        #normalizam notele de la dior si adaugam col la df initial 
chestionar$Dior_norm <- round((chestionar$Nota_Dior - mean(chestionar$Nota_Dior))/ sd(chestionar$Nota_Dior), 2)

#stabilim cum sa se afiseze ca nota e peste medie sau sub medie
chestionar$Dior_tip <- ifelse(chestionar$Dior_norm < 0, "below", "above")

#sortam dupa valorile normalizate
sem_dior_tdv <- chestionar[order(chestionar$Dior_norm), ]

#reprezentam grafic 
ggplot(sem_dior_tdv, aes(x=reorder(ID, Dior_norm), y=Dior_norm, label = Dior_norm))+
        geom_bar(stat ="identity", width =0.8, aes(fill = Dior_tip)) +
        scale_fill_manual(labels = c("below", "above"), values = c("below" = "red","above" = "green"))+
        labs(title = "Valori sub si peste medie pentru Dior")+
        coord_flip()

#se identifica persoanele pe care le luam ca referinta si se comenteaza daca se afla sub sau peste medie

#repr grafic notele dior ordonand dupa persoana
#sortam dupa nota dior 

chestionar[order(chestionar$ID),]%>%
        filter(ID!='GM', Nota_Dior>0)%>%
        ggplot( aes(x=reorder(ID, Nota_Dior), y=Nota_Dior))+
        geom_bar(stat='identity', width=0.8, fill='#9966FF')

#----

Pe graficele de mai sus se poate observa că aproape 3/4 dintre studenți au dat note peste medie pentru Dior. Printre aceștia se află și AC și TPN cu nota 7, si Ab cu nota 8. Pentru Dior Au existat 4 note de 10.

Partea a II-a - Alegeri la momentul de timp t1

Toate datele legate de preturile Kering, Hermes, CAC40 [1] sunt pe perioada 2019.

Am făcut o analiză a evoluției rentabilităților zilnice ale acțiunilor Hermes și Kering, pentru anul 2019, cât și a relației acestor rentabilități cu activul fără risc și indicele de piață CAC40 (indicele CAC40 are în componența sa atât Hermes cât și Kering.

După cum se poate observa in graficul de mai jos, pe întreg anul 2019, prețul unei acțiuni Hermes a fost peste o acțiune Kering.

##      Index                hermes          kering     
##  Min.   :2019-01-02   Min.   :464.0   Min.   :380.7  
##  1st Qu.:2019-04-01   1st Qu.:592.1   1st Qu.:455.8  
##  Median :2019-07-03   Median :618.0   Median :490.5  
##  Mean   :2019-07-01   Mean   :607.4   Mean   :489.1  
##  3rd Qu.:2019-09-30   3rd Qu.:640.9   3rd Qu.:522.6  
##  Max.   :2019-12-31   Max.   :680.0   Max.   :590.7

În medie, o acțiune Hermes a costat 607.4 Euro, iar o acțiune Kering în medie 489.1 Euro.

Am transformat prețurile zilnice de închidere în rentabilități simple.

Statistici descriptive

table.Stats(stocks, ci=0.95, digits=4)
##                   RCAC40  RHERMES  RKERING       rf
## Observations    254.0000 254.0000 254.0000 254.0000
## NAs               0.0000   0.0000   0.0000   0.0000
## Minimum          -0.0357  -0.0351  -0.0701  -0.1781
## Quartile 1       -0.0026  -0.0045  -0.0077  -0.0240
## Median            0.0016   0.0020   0.0017  -0.0041
## Arithmetic Mean   0.0010   0.0014   0.0016  -0.0008
## Geometric Mean    0.0010   0.0013   0.0015  -0.0022
## Quartile 3        0.0056   0.0079   0.0102   0.0178
## Maximum           0.0272   0.0340   0.0874   0.3062
## SE Mean           0.0005   0.0007   0.0011   0.0034
## LCL Mean (0.95)   0.0000   0.0000  -0.0005  -0.0074
## UCL Mean (0.95)   0.0020   0.0027   0.0038   0.0059
## Variance          0.0001   0.0001   0.0003   0.0029
## Stdev             0.0083   0.0111   0.0172   0.0538
## Skewness         -0.6881  -0.3317   0.0255   0.9088
## Kurtosis          2.4597   0.9771   3.5161   5.9129

Se poate observa că în medie cea mai rentabilă acțiune este Kering, dar tot aceasta este și cea care are o variație mare a valorilor, fapt ce ne poate indica un grad mai mare de risc fată de Hermes.

Matricea de corelație, Histograme și Boxplot-uri

Se poate observa că indicele de piață este corelat puternic cu ambele active Hermes și Kering, cea mai mare influență asupra pieței având-o Kering. Mai mult, și Hermes are o corelare puternică cu Kering.

Boxplot-uri

Performanțele rentabilităților

În graficul de mai jos se pot observa performanțele rentabilităților Hermes și Kering împreună cu indicele CAC40.

Valorile negative ale rentabilităților au fost următoarele în anul 2019:

Se poate observa că maximul negativ pentru Kering este apropae dublu față de cel al Hermes sau CAC40 - lucru ce are un impact mare având în vedere prețul ridicat al unei acțiuni Kering ~aproximativ 550Euro.

În majoritatea timpului, Hermes și Kering au avut o rentabilitate destul de mare peste piață.
Raportat la CAC40, performanțele Kering și Hermes arată în felul următor:

Sharpe Ratio, SFM, Index Model

Se calculeaza Ratia Sharpe - stabilește raportul între rentabilitate și risc pe acțiuni.

##                                  RCAC40   RHERMES   RKERING       rf
## StdDev Sharpe (Rf=0%, p=95%): 0.5344218 0.3073378 0.6303832 4.912832

O persoană cu aversiune față de risc va înclina spre raportul dintre rentabilitate și risc cât mai mare (RShapre cât mai mare). În cazul de față, RSherpe este cel mai mare, dintre cele două firme de lux, pentru HERMES. RSharpe pentru Kering este singurul negativ, acest lucru indică un caracter foarte volatile, deci riscant al acțiunilor Kering.

Detectăm sezonalitatea - grafice

După cum se poate observa mai jos, nu există sezonalitate în date. Graficele arată asemanător cu un zgomot alb(medie egală cu zero și varianță egală cu unitatea)

Testăm staționaritatea

“Pentru testarea eficienţei informaţionale în formă slabă utilizăm două teste destinate studiului evoluţiei aleatoare a unei serii temporale: testul Augmented Dickey-Fuller (ADF) şi testul Phillips-Perron. Aceste teste furnizează probabilităţi ipotezelor acceptate şi poartă denumirea generică de „teste ale rădăcinii unitare” („unit root tests”). Absenţa unei evoluţii de tip „random walk” implică existenţa posibilităţii de modelare a traiectoriei seriei cursurilor bursiere. În această situaţie va rezulta posibilitatea obţinerii de câştiguri excedentare, anormale, din analiza trecutului care se reproduce în viitor. Prin urmare, piaţa bursieră pe care se întâlnesc aceste cursuri este ineficientă informaţional în formă slabă.
Testul Phillips-Perron este un test alternativ testului ADF, care nu include în ecuaţia testată diferenţele dintre valorile trecute ale seriei şi care utilizează pentru estimarea ecuaţiei testate metoda celor mai mici pătrate în formă simplă.

Asemeni testului ADF, se testează ipoteza nulă ρ = 1, a prezenţei rădăcinii unitare. În esenţă, acest test este un t-statistic pentru coeficientul regresiei, însă ajustat pentru a înlătura unele erori.

Rezultatul obţinut se compară, la fel ca şi în cazul testului ADF, cu valorile critice furnizate de praguri de semnificație de 1%, 5%, respectiv 10%. Interpretarea este identică cu cea din cazul testului Augmented Dickey-Fuller: un rezultat al testului superior valorilor critice, aferente pragurilor de semnificaţie, indică, foarte probabil, existenţa rădăcinii unitare şi, prin urmare, este posibil ca piaţa să fie eficientă informaţional în formă slabă.

Aşadar, dacă rezultatul testului t-statistic este superior valorilor critice, atunci, cel mai probabil, există rădăcină unitară şi, prin urmare, este posibil ca piaţa de capital, pe care s-au înregistrat cursurile, să fie eficientă informaţional în formă slabă. " [1]

#a.2) testam stationaritatea 
#----
#CAC40
adf.test(stocks[,1])
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag  ADF p.value
## [1,]   0 15.1    0.99
## [2,]   1 21.2    0.99
## [3,]   2 26.3    0.99
## [4,]   3 30.2    0.99
## [5,]   4 34.3    0.99
## Type 2: with drift no trend 
##      lag  ADF p.value
## [1,]   0 15.3    0.99
## [2,]   1 21.7    0.99
## [3,]   2 27.0    0.99
## [4,]   3 31.4    0.99
## [5,]   4 35.9    0.99
## Type 3: with drift and trend 
##      lag  ADF p.value
## [1,]   0 15.3    0.99
## [2,]   1 21.7    0.99
## [3,]   2 27.1    0.99
## [4,]   3 31.5    0.99
## [5,]   4 36.0    0.99
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
pp.test(stocks[,1])
## Phillips-Perron Unit Root Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##  lag Z_rho p.value
##    5  -237    0.01
## ----- 
##  Type 2: with drift no trend 
##  lag Z_rho p.value
##    5  -234    0.01
## ----- 
##  Type 3: with drift and trend 
##  lag Z_rho p.value
##    5  -234    0.01
## --------------- 
## Note: p-value = 0.01 means p.value <= 0.01
#p-value<0,05 -> serie stationara 

#Hermes
adf.test(stocks[,2])
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag  ADF p.value
## [1,]   0 16.7    0.99
## [2,]   1 23.9    0.99
## [3,]   2 30.6    0.99
## [4,]   3 35.9    0.99
## [5,]   4 39.9    0.99
## Type 2: with drift no trend 
##      lag  ADF p.value
## [1,]   0 17.0    0.99
## [2,]   1 24.6    0.99
## [3,]   2 32.0    0.99
## [4,]   3 38.2    0.99
## [5,]   4 43.0    0.99
## Type 3: with drift and trend 
##      lag  ADF p.value
## [1,]   0 17.1    0.99
## [2,]   1 24.9    0.99
## [3,]   2 32.6    0.99
## [4,]   3 39.2    0.99
## [5,]   4 44.5    0.99
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
pp.test(stocks[,2])
## Phillips-Perron Unit Root Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##  lag Z_rho p.value
##    5  -253    0.01
## ----- 
##  Type 2: with drift no trend 
##  lag Z_rho p.value
##    5  -247    0.01
## ----- 
##  Type 3: with drift and trend 
##  lag Z_rho p.value
##    5  -244    0.01
## --------------- 
## Note: p-value = 0.01 means p.value <= 0.01
#p-value<0,05 -> serie stationara 

#rf
adf.test(stocks[,4])
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag  ADF p.value
## [1,]   0 16.7    0.99
## [2,]   1 23.3    0.99
## [3,]   2 27.7    0.99
## [4,]   3 31.6    0.99
## [5,]   4 35.1    0.99
## Type 2: with drift no trend 
##      lag  ADF p.value
## [1,]   0 16.7    0.99
## [2,]   1 23.3    0.99
## [3,]   2 27.6    0.99
## [4,]   3 31.6    0.99
## [5,]   4 35.0    0.99
## Type 3: with drift and trend 
##      lag  ADF p.value
## [1,]   0 16.7    0.99
## [2,]   1 23.4    0.99
## [3,]   2 27.8    0.99
## [4,]   3 31.9    0.99
## [5,]   4 35.5    0.99
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
pp.test(stocks[,4])
## Phillips-Perron Unit Root Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##  lag Z_rho p.value
##    5  -276    0.01
## ----- 
##  Type 2: with drift no trend 
##  lag Z_rho p.value
##    5  -276    0.01
## ----- 
##  Type 3: with drift and trend 
##  lag Z_rho p.value
##    5  -275    0.01
## --------------- 
## Note: p-value = 0.01 means p.value <= 0.01
#p-value<0,05 -> serie stationara 
#----

După cum se poate observa, seriile alese sunt staționare, luând în considerare rezultatele testului hillips-Perron.

Single Factor Model - regresie rentabilitate Hermes / Kering în funcție de indicele CAC40

Se aplică un model unic-factorial (single factor model), care presupune folosirea indicelui de piaţă ca fiind factor unic, cel mai important factor, ce influenţează rentabilitatea activului Kering sau Hermes.

Rentabilitatea activului i (Ri) poate fi definita sub forma:

Ri = alphai + betai*Rmi + Epsiloni; unde Rmi este rentabilitatea indicelui de piață.

Beta, care se numește coeficient de volatilitate, arata influența riscului sistematic / riscul de piață (cel care influenţează un număr mare de acţiuni, într-o proporţie mai mare sau mai mică) asupra activului.

SFM Kering

# b) SFM KEring~CAC40
#----
chart.Regression(Ra=stocks[,3],Rb=stocks[,1],Rf=0, fit=c("linear"), col=c("#66C2A5","#F46D43","#9E0142"), main="SFM pentru Kering",xlab = "RCAC40", ylab="RKering")

table.SFM(Ra=stocks[,3],Rb=stocks[,1],Rf=0, digits = 4)
##                     RKERING to RCAC40
## Alpha                          0.0002
## Beta                           1.3877
## Beta+                          1.3455
## Beta-                          1.2849
## R-squared                      0.4513
## Annualized Alpha               0.0634
## Correlation                    0.6718
## Correlation p-value            0.0000
## Tracking Error                 0.2091
## Active Premium                 0.1762
## Information Ratio              0.8424
## Treynor Ratio                  0.3232
#----

Coeficientul de volatilitate depășește pragul de 1 ( beta = 1.3877). Astfel. Titlul Kering este unul agresiv, ce va amplifica evoluțiile pieței.Se poate observa și că Punctele de pe grafic au o dispersie destul de mare sub si deasupra dreptei de regresie.

SFM Hermes

# b) SFM Hermes~CAC40
#----
chart.Regression(Ra=stocks[,2],Rb=stocks[,1],Rf=0, fit=c("linear"), col=c("#66C2A5","#F46D43","#9E0142"), main="SFM pentru Hermes",xlab = "RCAC40", ylab="RHermes")

table.SFM(Ra=stocks[,2],Rb=stocks[,1],Rf=0, digits = 4)
##                     RHERMES to RCAC40
## Alpha                          0.0004
## Beta                           0.9575
## Beta+                          0.9099
## Beta-                          1.1230
## R-squared                      0.5207
## Annualized Alpha               0.1125
## Correlation                    0.7216
## Correlation p-value            0.0000
## Tracking Error                 0.1219
## Active Premium                 0.1189
## Information Ratio              0.9755
## Treynor Ratio                  0.4086
#----

Cât despre coeficientul de volatilitate calculat pentru Hermes, acesta este pozitiv sub-unitar, foarte apropiat de 1. Astfel. Titlul Hermes este unul care va urma evoluția pieței, neutru spre agresiv (beta = 0.9575). O dispersie și mai amre a punctelor față de dreapta de regresie se poate observa și în cazul de față.

Ambele valori are R-squared sunt în jurul valorii de 50%, nu foarte satisfăcător.

Index Model

Modelul presupune că există o variabilă care influenţează toate rentabilităţile acţiunilor şi că, pentru o singură acţiune, cel puţin o singură variabilă influenţează rentabilitatea acesteia.

Atunci, ecuația de bază presupune legătura dintre rentabilitatea în exces a activului şi rentabilitatea în exces a indicelui de piaţă:

Euația de bază: RBrandi - rf = alphai + betai *(RCAC40 - rf) + epsiloni; unde:
1. RBrand - rf = rentabilitatea în exces a activului riscant față de cel fără risc
2. RCAC40 - rf = rentabilitatea în exces a pieţei faţă de activul fără risc sau market risk premium

În graficele de mai jos se pot observa regresiile rezultate prin ajustarea seriilor de timp aferente Kering / Hermes și CAC40 cu activul fără risc.

#Grafic - regresie Kering si Hermes
chart.Regression(Ra=stocks[,3],Rb=stocks[,1],Rf=stocks[,4], fit=c("linear"), col=c("#66C2A5","#F46D43","#9E0142"), main="Index Model pt Kering")

chart.Regression(Ra=stocks[,2],Rb=stocks[,1],Rf=stocks[,4], fit=c("linear"), col=c("#66C2A5","#F46D43","#9E0142"), main="Index Model pt Hermes")

În tabelele de mai jos se pot observa valorile pentru coeficienții alfa și beta ( coeficientul de volatilitate).

table.SFM(Ra=stocks[,3],Rb=stocks[,1],Rf=stocks[,4], digits = 4)
##                     RKERING to RCAC40
## Alpha                          0.0007
## Beta                           0.9812
## Beta+                          0.9845
## Beta-                          1.0126
## R-squared                      0.9397
## Annualized Alpha               0.1812
## Correlation                    0.9694
## Correlation p-value            0.0000
## Tracking Error                 0.2091
## Active Premium                 0.1762
## Information Ratio              0.8424
## Treynor Ratio                  0.2550
table.SFM(Ra=stocks[,2],Rb=stocks[,1],Rf=stocks[,4], digits = 4)
##                     RHERMES to RCAC40
## Alpha                          0.0003
## Beta                           1.0187
## Beta+                          1.0115
## Beta-                          1.0305
## R-squared                      0.9804
## Annualized Alpha               0.0918
## Correlation                    0.9901
## Correlation p-value            0.0000
## Tracking Error                 0.1219
## Active Premium                 0.1189
## Information Ratio              0.9755
## Treynor Ratio                  0.1575

Prin comparație cu regresiile precedente neajustate, coeficienții beta prezintă o scădere.

În cazul Kering - beta a scăzut de la valoarea de 1.3877, la valoarea de 0.9812. Astfel titlul se apropie de comportamentul unui titlu neutru care va urma fluctuațiile indicelui de piață CAC40. Titlul devine din unul agresiv, în unul normal-agresiv(beta < 0).

În cazul Hermes - beta a crescut de la valoarea de 0.9575, la valoarea de 1.0187. Astfel titlul trece de la caracterul de normal-agresiv, la un comportament agresiv (beta >1).

Totuși, Valorile pentru R-squared in ambele cazuri trec de 905, lucru foarte satisfăcător, indicând că aproximativ 90% din informația totală a fost modelată prin Index Model.

CAPM - Capital Asset Pricing Model

Modelul CAPM se foloseşte pentru a determina o rată a rentabilităţii unei acţiuni care se adaugă la un portofoliu deja bine diversificat, ştiind că riscul acestei acţiuni este nediversificabil.

Pentru acțiunile Kering și Hermes,se va determina coeficientul de volatilitate beta. Astfel se poate calcula rentabilitatea în exces faţă de rentabilitatea activului fără risc ca fiind o funcţie liniară de rentabilităţi în exces ale pieţei (în funcţie de diferite valori ale lui beta).

În setul nostru de date, există 255 de date/zile înregistrate. Va fi calculat beta pentru cele două modele (cel calculat la Index Model) - Kering, CAC40, rf si Hermes, CAC40, rf - si apoi vom considera setul numai cu 253 de înregistrări, previzionând rentabilitatea pentru ziua 254.

##                   RCAC40  RHERMES  RKERING       rf
## Observations    254.0000 254.0000 254.0000 254.0000
## NAs               0.0000   0.0000   0.0000   0.0000
## Minimum          -0.0357  -0.0351  -0.0701  -0.1781
## Quartile 1       -0.0026  -0.0045  -0.0077  -0.0240
## Median            0.0016   0.0020   0.0017  -0.0041
## Arithmetic Mean   0.0010   0.0014   0.0016  -0.0008
## Geometric Mean    0.0010   0.0013   0.0015  -0.0022
## Quartile 3        0.0056   0.0079   0.0102   0.0178
## Maximum           0.0272   0.0340   0.0874   0.3062
## SE Mean           0.0005   0.0007   0.0011   0.0034
## LCL Mean (0.95)   0.0000   0.0000  -0.0005  -0.0074
## UCL Mean (0.95)   0.0020   0.0027   0.0038   0.0059
## Variance          0.0001   0.0001   0.0003   0.0029
## Stdev             0.0083   0.0111   0.0172   0.0538
## Skewness         -0.6881  -0.3317   0.0255   0.9088
## Kurtosis          2.4597   0.9771   3.5161   5.9129
##                     RKERING to RCAC40
## Alpha                          0.0007
## Beta                           0.9812
## Beta+                          0.9845
## Beta-                          1.0126
## R-squared                      0.9397
## Annualized Alpha               0.1828
## Correlation                    0.9694
## Correlation p-value            0.0000
## Tracking Error                 0.2100
## Active Premium                 0.1780
## Information Ratio              0.8478
## Treynor Ratio                  0.2573
##                     RHERMES to RCAC40
## Alpha                          0.0003
## Beta                           1.0187
## Beta+                          1.0115
## Beta-                          1.0305
## R-squared                      0.9804
## Annualized Alpha               0.0926
## Correlation                    0.9901
## Correlation p-value            0.0000
## Tracking Error                 0.1223
## Active Premium                 0.1201
## Information Ratio              0.9816
## Treynor Ratio                  0.1589
## [1] 0.0009583796
## [1] 0.001023718
## [1] 0.0009648995
## [1] 0.001030383
Kering Real Kering Previzionat Hermes Real Hermes Previzionat
0.0009583796 0.0009648995 0.001023718 0.001030383

În urma rulării modelului CAPM, rentabilitățile previzionate sunt foarte apropiate de rentabilitățile așteptate.

Funcția Valoare Simplă

Functia Valoare - definiție

Functia Valoare - definiție

#lambda =2.25 - sentimentul la pierdere / impactul emotional e 225%
#a si b sunt ambele 0.88
#oamenii tind sa supraestimeze probabilitățile mici și să le subestimeze pe cele mari

#pas 1 - Analiza rentabilitati lunare pt cele 2 actiuni + comparație riscuri ----
#riscul unei actiuni e impartit in riscul specific companiei/sistematic (decizii companie) si riscul datorat pietei / r nesistematic (piata a scazut)

#formula care calculeaza rentabilitatea lunara pe 2019

#Hermes
t(table.CalendarReturns(stocks[,2], digits = 4))
##            2019
## Jan      1.1574
## Feb     -0.2508
## Mar     -0.2713
## Apr      0.9659
## May     -0.6348
## Jun      1.0838
## Jul      0.6960
## Aug      1.2720
## Sep      0.5073
## Oct     -0.8303
## Nov      0.0589
## Dec     -0.7449
## RHERMES  3.0160

În tabelul de mai sus se pot observa rentabilitățile lunare pe 2019 pentru Hermes. Luna a doua cea mai rentabilă lună după luna august este luna ianuarie, se poate observa efectul lunii ianuarie. S-a observat că în luna ianuarie există o tendință crescătoare a prețurilor stocurilor. Din 1928 și până în 2018, indicele S&P500 a crescut în 62% din ani (56 din 91 ani).
Rentabilitatea toala pe 2019 pentru Hermes a fost de 3.

#kering2
t(table.CalendarReturns(stocks[,3], digits = 4))
##            2019
## Jan      1.2029
## Feb     -0.2700
## Mar      1.5495
## Apr      0.3810
## May     -1.8122
## Jun      0.8728
## Jul     -0.3925
## Aug      1.1600
## Sep      0.6025
## Oct     -0.1370
## Nov     -0.9422
## Dec     -0.1876
## RKERING  1.9919
#nov e cu -, a scazut ; ian rentab 0.45 - efectul lunii ianuarie, lumea dupa sarbatori se apuca si investeste - e pe plus, octombvrie au crescut f mult amandoua!
#analizam efectul lunii ianuarie

Efectul lunii ianuarie este vizibil dar nu atât de puternic așa cum este în cazul Hermes. Rentabilitatea toatlă pe anul 2019 a Kering a fost de 1.99, lucru așteptat,având în vedere caracterul mai riscant al acestei acțiuni. totuși, Considerând faptul că o acțiune Hermes a fost și încă este mai scumpă decât una Kering, Rentabilitatea mai mică în cazul Kering nu este încurajatoare.

#pas 1.1  -riscurile specifice companiei si pietei ----

# r sistematic se datoreaza deciziilor de managemnt
# r nesistematic e dat de evolutia activului pe piata, legatura cu piata

t(table.SpecificRisk(Ra = stocks[,2:3], Rb= stocks[,1], Rf = stocks[,4], digits = 4))
##         Specific Risk Systematic Risk Total Risk
## RHERMES        0.1215          0.8545     0.4183
## RKERING        0.2073          0.8231     0.4758
# R total - e abaterea std - sunt cam la fel de riscante, kering e puuuutin ma riscant
#r specific - ambele companii erau p[este indicele de piata, indicele de piata nu infl riscul deci riscul e cel ce decurge din r de manangement. 
        #daca titlul e neutru sau urmareste piata, daca pita ascade, scade si compania
# r sistematic- riscul la care ma astept
  • În tabelul de mai sus se pot observa următoarele:
    • Riscul Total - putem observa că Riscul Total asociat Kering este mai mare
    • Riscul specific - ambele companii aveau rentabilități peste indicele de piață, indicele de piață nu influențează riscul, așadar, riscul decurge din deciziile de management, deci Risc Sistematic
    • Riscul Sistematic - este riscul așteptat ce decurge din decizii de management al firmei/grupului.

Am calculat funcțiile valoare pentru rentabilitățile acțiunilor Kering si Hermes. Ca parametrii ai modelului, am folosit valoarea lui lambda = 2.25, iar a si b sunt ambele 0.88 (Tversky si Kahneman, 1992).

Au rezultat următoarele rentabilități psihologice:

table.Stats(KERING, digits = 4)
##                  RKering Val_Kering
## Observations    254.0000   254.0000
## NAs               0.0000     0.0000
## Minimum          -0.0701    -0.2168
## Quartile 1       -0.0077    -0.0311
## Median            0.0017     0.0037
## Arithmetic Mean   0.0016    -0.0081
## Geometric Mean    0.0015    -0.0091
## Quartile 3        0.0102     0.0177
## Maximum           0.0874     0.1171
## SE Mean           0.0011     0.0027
## LCL Mean (0.95)  -0.0005    -0.0134
## UCL Mean (0.95)   0.0038    -0.0027
## Variance          0.0003     0.0019
## Stdev             0.0172     0.0434
## Skewness          0.0255    -1.3453
## Kurtosis          3.5161     3.2044
table.Stats(HERMES, digits = 4)
##                  RHermes Val_Hermes
## Observations    254.0000   254.0000
## NAs               0.0000     0.0000
## Minimum          -0.0351    -0.1179
## Quartile 1       -0.0045    -0.0195
## Median            0.0020     0.0042
## Arithmetic Mean   0.0014    -0.0051
## Geometric Mean    0.0013    -0.0056
## Quartile 3        0.0079     0.0141
## Maximum           0.0340     0.0510
## SE Mean           0.0007     0.0019
## LCL Mean (0.95)   0.0000    -0.0089
## UCL Mean (0.95)   0.0027    -0.0014
## Variance          0.0001     0.0009
## Stdev             0.0111     0.0300
## Skewness         -0.3317    -1.2671
## Kurtosis          0.9771     1.7025
#minimum = -0.09 - 9% perceputa ca si cand pierzi 28%
# pt maximum - analizam si vedem ca diferenta intre maxime e mai mica decat la minim - vs perceptie

Se poate observa în cazul amânduror companii, pierderile au un impact psihologic mai mare decât câștigurile. Deși rentabilitatea medie e pozitivă, dar foarte mică, impactul general perceput este unul negativ de și mai mare în modul decât rentabilitatea medie.

  • Kering
    • Minime: valoarea reală a rentabilității minime a fost de -7%, iar cea perceputa de -22% — diferență de 14%
    • Maxime: valoarea relală a rentabilității maxime a fost de 9%, iar cea perceputa de 12% — deferență de doar 3%
  • Hermes
    • Minime: valoarea reală a rentabilității minime a fost de -4%, iar cea perceputa de -12% — diferență de 8%
    • Maxime: valoarea relală a rentabilității maxime a fost de 3%, iar cea perceputa de 5% — deferență de doar 2%

Mai jos se pot observa grafice cu rentabilitățile firmelor și rentabilitățile psihologice asociate:

#  Grafice rentabilitati si fct valoare -----

#Kering
chart.RollingPerformance(KERING, main = "Performanta Lunara Relativa pt Kering și Valoarea Rentabilitatii", legend.loc = "topright", colorset = c("#66C2A5","#F46D43","#9E0142"))

chart.RollingPerformance(HERMES, main = "Performanta Lunara Relativa pt Hermes și Valoarea Rentabilitatii", legend.loc = "topright", colorset = c("#66C2A5","#F46D43","#9E0142") )

#----

Graficele de mai jos reprezintă funcțiile valoare alea activelor.

# repr grafic functie faloare----
# transf obj zoo in df si ordonaM dupa functia valoare----
#Kering
KERING1 = as.data.frame(KERING)
KERING1 = transform(KERING1, Dates = as.Date(rownames(KERING1)))

Kord1 = KERING1[order(KERING1[,2]), ]
##view(Kord1)
Kord1 = Kord1[,-3]
##view(Kord1)

#Hermes
HERMES1 = as.data.frame(HERMES)
HERMES1 = transform(HERMES1, Dates = as.Date(rownames(HERMES1)))

Hord1 = HERMES1[order(HERMES1[,2]), ]
##view(Hord1)
Hord1 = Hord1[,-3]
##view(Hord1)
#----

#Grafice functii valoare ordonate----

plot(Kord1, type = "l", main = "Functia valoare pentru Kering", col = c("#66C2A5","#F46D43","#9E0142"),xlab = "rentabilitate Kering", ylab = "valoare Kering")

plot(Hord1, type = "l", main = "Functia valoare pentru Hermes", col = c("#66C2A5","#F46D43","#9E0142"),xlab = "rentabilitate Hermes", ylab = "valoare Hermes")

#----

În graficele ce reprezintă funcțiile valoare, se poate observa un punct în care panta dreptei se schimbă, în dreptul valorii 0 de pe axe. Aceasta este reprezentarea grafică a modului în care sunt percepute diferit pierderile față de câștiguri.

Analiza investiției inițiale - funcția valoare simplă

La acest pas vom analiza raspunsurile a 2 respondenți - AB și AC - la prima dintre întrebările legate de investiții. Presupunem o suma de 5000 Euro, împartita între cele doua actiuni. Vom calcula functia valoare in cazul in care respondentii ar investi suma de 500Euro in mod separat in cele două acțiuni - astfel vom afla care dintre cei doi va resimti o rentabilitate perceputa mai mare în urma investitiei.

AB a ales să investeasca 1500euro in Gucci si 3500 Euro în Hermes. AC a ales să inestească 2000 Euro in Gucci și 3000 Euro în Hermes

####pas 2 Analiza investitiei initaile pe piata de capital si valoarea in timp a banilor ---- 
# - ex 5000 euro - analizati val investitiei in cele 2 actiuni pronind de la o suma aleasa aleator de investit in nume personal (apoi facem in numele unei firme, vedem dc merita)

# time value of money cu media geometrica
Return.cumulative(KERING[,1], geometric = T) 
##                           x
## Cumulative Return 0.4528302
Return.cumulative(HERMES[,1], geometric = T)
##                           x
## Cumulative Return 0.3948911
#calc castigul prezent
# AB 
valAB_K = 1500 * (Return.cumulative(KERING[,1], geometric = T))
valAB_H = 3500 * (Return.cumulative(HERMES[,1], geometric = T)) #castigul in prezent cu TVM - 430 de dolari

tvmAB_K = 1500 + valAB_K
tvmAB_H = 3500 + valAB_H

# AC 
valAC_K = 2000 * (Return.cumulative(KERING[,1], geometric = T))
valAC_H = 3000 * (Return.cumulative(HERMES[,1], geometric = T)) #castigul in prezent cu TVM - 430 de dolari

tvmAC_K = 2000 + valAC_K
tvmAC_H = 3000 + valAC_H#daca inmultim asta cu inflatia aflam valoarea reala a banilor investiti initial

### functia valoare pt tvm kering  - perceptia acestei sume
v_tvmAB_kering = tvmAB_K^0.88
v_tvmAC_kering = tvmAC_K^0.88
v_tvmAB_kering
##                          x
## Cumulative Return 866.3819
v_tvmAC_kering
##                          x
## Cumulative Return 1115.978
v_tvmAB_herms = tvmAB_H^0.88
v_tvmAC_herms = tvmAC_H^0.88
v_tvmAB_herms
##                          x
## Cumulative Return 1761.876
v_tvmAC_herms
##                          x
## Cumulative Return 1538.375
vInvestAB = v_tvmAB_kering + v_tvmAB_herms
vInvestAC = v_tvmAC_kering + v_tvmAC_herms
vInvestAB
##                          x
## Cumulative Return 2628.258
vInvestAC
##                          x
## Cumulative Return 2654.352

Se pare că ambii respondenți vor percepe aceste investiții ca fiind mult mai puntin rentabile față de valoarea lor reală.

Funcția de ponderi decizionale

AC și AB

AC a spus ca, din perspectiva unei firme, ar investi 500.000euro astfel: jumătate Hermes, jumătate Kering.

Acestor probabilități p si q, li se va atașa o pondere decizională pi(p) și pi(q). În cadrul funcției de ponderi decizionale va fi considerat un gama = 0.7.

# pas 3 
# se folosesc probabilitatile de investire in cele 2 actiuni si se transforma in pi(p) si pi(q) care sn ponderi decizionale, p si q se transf in pi de p si pi de q
# se folosesc sumele de bani investite in cele 2 actiuni si se calculeaza valoarea lor cu functia v(x)
# se calculeaza tvm pt sume folosind cumulative return
# se calculeaza valorea in timp a banilor investiti intr o actiune
# se calculeaza valoarea finala a banilor/a prospectului care reprezinta de fapt perceptia decidentului asupra castigului asteptat din investirea in cele 2 actiuni

p<-0.5
q <- 0.5
gama <- 0.7

# functia de ponderi deccizionale
pi.p = p^gama / (p^gama + q^gama)
pi.q = q^gama / (p^gama + q^gama)

#ponderile sunt amandoua 0.5

#calc castigul prezent
#AC
valAC_K2 = 500000 * (Return.cumulative(KERING[,1], geometric = T))
valAC_H2 = 500000 * (Return.cumulative(HERMES[,1], geometric = T)) 

tvmAC_K2 = 500000 + valAC_K2
tvmAC_H2 = 500000 + valAC_H2#daca inmultim asta cu inflatia aflam valoarea reala a banilor investiti initial

#teoria prospectelor
EU.AC = pi.p*tvmAC_K2 + pi.q*tvmAC_H2
EU.AC
##                          x
## Cumulative Return 711930.3

Partea a III-a - Sentiment Analysis

Personalitățile respondenților

# 1. Încărcare date ----
sent_text <- read.csv("text_mining.csv", header = T, sep = ",")
dim(sent_text)
## [1]  3 13
##view(sent_text)
#----

# 2. Curatarea datelor----

sent_text<= na.omit(sent_text)
## Warning in Ops.factor(left, right): '<=' not meaningful for factors

## Warning in Ops.factor(left, right): '<=' not meaningful for factors

## Warning in Ops.factor(left, right): '<=' not meaningful for factors

## Warning in Ops.factor(left, right): '<=' not meaningful for factors

## Warning in Ops.factor(left, right): '<=' not meaningful for factors

## Warning in Ops.factor(left, right): '<=' not meaningful for factors

## Warning in Ops.factor(left, right): '<=' not meaningful for factors

## Warning in Ops.factor(left, right): '<=' not meaningful for factors

## Warning in Ops.factor(left, right): '<=' not meaningful for factors

## Warning in Ops.factor(left, right): '<=' not meaningful for factors

## Warning in Ops.factor(left, right): '<=' not meaningful for factors
##      ID Note notaGucci notaHermes text textGucci textHermes asoc asocGucci
## [1,] NA   NA      TRUE       TRUE   NA        NA         NA   NA        NA
## [2,] NA   NA      TRUE       TRUE   NA        NA         NA   NA        NA
## [3,] NA   NA      TRUE       TRUE   NA        NA         NA   NA        NA
##      asocHermes q1brand q1produs q2firma_brand
## [1,]         NA      NA       NA            NA
## [2,]         NA      NA       NA            NA
## [3,]         NA      NA       NA            NA
sent_text1<-data.frame(sent_text)
#view(sent_text)
dim(sent_text)
## [1]  3 13
#----

##Pas3. Citirea lexicoanelor----

##avem 3 tipuri de lexicoane: afinn, bing, loughran, ncr
##comanda get_sentiments = extrage sentmentiele

get_sentiments("afinn")
## # A tibble: 2,477 x 2
##    word       value
##    <chr>      <dbl>
##  1 abandon       -2
##  2 abandoned     -2
##  3 abandons      -2
##  4 abducted      -2
##  5 abduction     -2
##  6 abductions    -2
##  7 abhor         -3
##  8 abhorred      -3
##  9 abhorrent     -3
## 10 abhors        -3
## # ... with 2,467 more rows
##avem dimensiunea de 2467 de cuvinte pe 2 coloane

get_sentiments("bing")
## # A tibble: 6,786 x 2
##    word        sentiment
##    <chr>       <chr>    
##  1 2-faces     negative 
##  2 abnormal    negative 
##  3 abolish     negative 
##  4 abominable  negative 
##  5 abominably  negative 
##  6 abominate   negative 
##  7 abomination negative 
##  8 abort       negative 
##  9 aborted     negative 
## 10 aborts      negative 
## # ... with 6,776 more rows
##avem 6776 de cuvinte si coloana a doua ne arata sentimentul (pozitiv sau negativ)

##get_sentiments("loughran")

get_sentiments("nrc")
## # A tibble: 13,901 x 2
##    word        sentiment
##    <chr>       <chr>    
##  1 abacus      trust    
##  2 abandon     fear     
##  3 abandon     negative 
##  4 abandon     sadness  
##  5 abandoned   anger    
##  6 abandoned   fear     
##  7 abandoned   negative 
##  8 abandoned   sadness  
##  9 abandonment anger    
## 10 abandonment fear     
## # ... with 13,891 more rows
##sentimentele pentru acest lexicon sunt mai complexe: trust, fear, anger etc
#----

###Radar chart personalitati
#Folosim col Personalitate chestionar

textPersAACPI <- tibble(ID=chestionar[1:45,3], text=as.character(chestionar[1:45,6]))
textPersResp <- tibble(ID=chestionar[46:48,3], text=as.character(chestionar[46:48,6]))

#despartim un cuv pe linie
tokens_persAACPI<-textPersAACPI %>%
        unnest_tokens(word,text)
dim(tokens_persAACPI)
## [1] 130   2
tokens_persResp<-textPersResp %>%
        unnest_tokens(word,text)
dim(tokens_persResp)
## [1] 13  2
tokens_persResp <- tokens_persResp %>%
        filter(!word %in% c("and"))

#cream col speciala
tokens_persAACPI["tip"]<-c("AACPI")
#view(tokens_persAACPI)

tokens_persResp["tip"]<-c("Respondent")
#view(tokens_persResp)

#unim intr un singur tabel
tokens_pers<- bind_rows(tokens_persAACPI, tokens_persResp)
dim(tokens_pers)
## [1] 142   3
###Radar chart
nrc<-get_sentiments("nrc")


scores_nrc<-tokens_pers %>%
        inner_join(nrc, bt=c("word"="word")) %>%
        filter(!grepl("positive|negative", sentiment)) %>%
        count(tip, sentiment) %>%
        spread(tip, n)
## Joining, by = "word"
#view(scores_nrc)
##tabelul arata intensitatea sentimentului pentru brandul respectiv. Unde avem n/a inseamna ca nu exista sentimentul respectiv

###Grafic interactiv 
##windows()
chartJSRadar(scores_nrc)

###Sentiment analysis - branduri

#Pas4. Prelucrarea textului (transformam data frameul intr-un tibble)----
#Gucci
text_gucci <- tibble(ID=sent_text[["ID"]], text=as.character(sent_text[["textGucci"]]))
#view(text_gucci)
#Hermes
text_hermes <- tibble(ID=sent_text[["ID"]], text=as.character(sent_text[["textHermes"]]))
#view(text_hermes)
#----

##Pas5. Agregam coloanele text pentru cele 2 firme generand o coloana suplimentra de recunoastere a firmei la care se refera textul----

text_gucci["brand"]<-c("Gucci")
#view(text_gucci)

text_hermes["brand"]<-c("Hermes")
#view(text_hermes)
#----

##Pas6. Impartim fiecare cuvant pe cate un rand ----

#?unnest_tokens()

tokens_gucci<-text_gucci %>%
        unnest_tokens(word,text)
dim(tokens_gucci)
## [1] 237   3
tokens_hermes<-text_hermes %>%
        unnest_tokens(word,text)
dim(tokens_hermes)
## [1] 211   3
#----

##Pas7. Unim cele 3 df in unul singur----

tokens_brands<- bind_rows(tokens_gucci, tokens_hermes)
dim(tokens_brands)
## [1] 448   3
#----

##Pas8. Eliminam cuvintele care nu exprima sentimente/cuvintele inutile (is, etc, a...) ----

# ##Varianta 1. putem elimina cuvintele folosind tidy text cu stop warns (eliminarea unor cuvinteprestab)
# 
 # clean_tokens <- tokens_brands %>%
 #         anti_join(stop_words)
 # #view(clean_tokens)
 # dim(clean_tokens)
 # 
 #  clean_tokens <-clean_tokens %>%
 #    filter(!word %in% c("brand", "brands", "product", "products", "based", "don't", "dont"))
 #  
  
##Varianta 2
clean_tokens <- tokens_brands %>%
        filter(!word %in% c("and","on","their","etc","are","of","the","but","about","all",
                            "more","then","than","a","some","very","so","my","it","is",
                            "comes","to","for","tend","be","i","although","like","has",
                            "in","over","maybe","we","can't","can","say","i'm","thinking",
                            "most","seems","quite","fact","reason","with","not","don't",
                            "at","by","too","when","me","they","have","or","that",
                            "everytime","them","without","this","ranked","if","even",
                            "6","up","as","well","buy","8","think","both","also","make","birthday",
                            "21st","the","are","i","and","men","things","kills", "an", "its",                                                                                 "itself", "gucci", "brand", "brands", "hermes", "product", "products", "based", "don't", "dont", "overall"))
dim(clean_tokens)
## [1] 195   3
#----
 
##Pas9. Determinarea celor mai des folosite cuvinte pentru fiecare brand----
clean_tokens %>%
        filter(brand =="Gucci") %>%
        count(word, sort=TRUE)
## # A tibble: 90 x 2
##    word            n
##    <chr>       <int>
##  1 believe         2
##  2 belt            2
##  3 clothes         2
##  4 collections     2
##  5 green           2
##  6 know            2
##  7 patern          2
##  8 quality         2
##  9 red             2
## 10 through         2
## # ... with 80 more rows
clean_tokens %>%
        filter(brand =="Hermes") %>%
        count(word, sort=TRUE)
## # A tibble: 86 x 2
##    word           n
##    <chr>      <int>
##  1 appreciate     2
##  2 classic        2
##  3 find           2
##  4 good           2
##  5 history        2
##  6 luxury         2
##  7 quality        2
##  8 10             1
##  9 alone          1
## 10 anything       1
## # ... with 76 more rows
#----

##Pas10. Grafice pentru cele mai des folosite cuvinte 

g1<-clean_tokens %>%
        filter(brand == "Gucci") %>%
        count(word, sort=TRUE) %>%
        filter(n>1) %>%
        mutate(word=reorder(word,n)) %>%  ##ordonez cuvintele ai sa avem cuvintele ordonate dupa nr de de utilizari/cat de des se intalnesc
        ggplot(aes(word,n))+
        geom_bar(stat="identity", fill="#9E0142")+
        labs(x="Numarul de repetii ale aceluiasi cuvant", y="Cuvantul/Word", titile="Cele mai des folosite cuvinte pt Gucci")+
        coord_flip()

g2<-clean_tokens %>%
        filter(brand == "Hermes") %>%
        count(word, sort=TRUE) %>%
        filter(n>1) %>% 
        mutate(word=reorder(word,n)) %>%  ##ordonez cuvintele ai sa avem cuvintele ordonate dupa nr de de utilizari/cat de des se intalnesc
        ggplot(aes(word,n))+
        geom_bar(stat="identity", fill="#F46D43")+
        labs(x="Numarul de repetii ale aceluiasi cuvant", y="Cuvantul/Word", titile="Cele mai des folosite cuvinte pt Dior")+
        coord_flip()

##Unim cele 2 grafice

plots_brands<-list(g1,g2)
marrangeGrob(plots_brands, nrow=1, ncol=2)

##Pas11. Generarea de wordclouds pentru fiecare brand in parte ----

clean_tokens %>%
        filter(brand =="Gucci") %>%
        count(word) %>%
        with(wordcloud(word,n,max.words = 100,colors=brewer.pal(8,"Dark2")))
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## way could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## exuberance could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## purchase could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## italian could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## however could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## working could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## makes could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## green could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## consider could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## elegant could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## outside could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## branding could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## presents could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## related could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## years could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## impact could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## belt could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## classic could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## you could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## luxury could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## generally could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## money could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## nothing could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## red could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## believe could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## collections could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## don’t could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## patent could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## presented could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## because could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## same could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## know could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## extravagant could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## come could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## capitalising could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## marketing could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## knowledge could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## appreciate could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## wouldn't could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## history could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## clothes could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## designers could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## colors could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## considering could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## overrated could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## known could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## look could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## symbol could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## unified could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## recent could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## hard could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## doesn't could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## image could not be fit on page. It will not be plotted.

clean_tokens %>%
        filter(brand =="Hermes") %>%
        count(word) %>%
        with(wordcloud(word,n,max.words = 100,colors=brewer.pal(8,"Dark2")))
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## classic could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## influence could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## appreciation could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## weight could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## strength could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## average could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## diverse could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## certain could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## much could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## great could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## such could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## luxury could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## ellegance could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## purchase could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## french could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## strong could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## feelings could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## perfumes could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## bags could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## expansive could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## current could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## good could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## scarves could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## power could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## would could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## birkin could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## lineup could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## trustworthy could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## tasteful could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## worn could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## michele could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## elegant could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## fashion could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## anything could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## something could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## money could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## positive could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## quality could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## however could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## bag could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## knowledge could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## find could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## personally could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## carries could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## one could not be fit on page. It will not be plotted.
## Warning in wordcloud(word, n, max.words = 100, colors = brewer.pal(8, "Dark2")):
## silk could not be fit on page. It will not be plotted.

#----

##Acelasi grafic folosind lexiconul nrc

sent_gucci1<-clean_tokens %>%
        filter(brand == "Gucci") %>%
        inner_join(get_sentiments("nrc")) %>%
        count(word, sentiment,sort=TRUE) %>%
        ungroup()
## Joining, by = "word"
sent_gucci1
## # A tibble: 42 x 3
##    word        sentiment     n
##    <chr>       <chr>     <int>
##  1 belt        anger         2
##  2 belt        fear          2
##  3 belt        negative      2
##  4 green       joy           2
##  5 green       positive      2
##  6 green       trust         2
##  7 classic     positive      1
##  8 distasteful disgust       1
##  9 distasteful negative      1
## 10 elegant     joy           1
## # ... with 32 more rows
sent_gucci1 %>%
        group_by(sentiment) %>%
        top_n(10) %>%
        ungroup() %>%
        mutate(word=reorder(word,n)) %>%  ##le reordonamn in functie de cat de des intalnite sunt
        ggplot(aes(word, n, fill=sentiment))+
        geom_col(show.legend = FALSE)+
        facet_wrap(~sentiment, scales="free_y")+
        labs(x="Word", y="Contributie", title="Gucci")+
        coord_flip()
## Selecting by n

sent_hermes1<-clean_tokens %>%
        filter(brand == "Hermes") %>%
        inner_join(get_sentiments("nrc")) %>%
        count(word, sentiment,sort=TRUE) %>%
        ungroup()
## Joining, by = "word"
sent_hermes1
## # A tibble: 50 x 3
##    word         sentiment        n
##    <chr>        <chr>        <int>
##  1 classic      positive         2
##  2 good         anticipation     2
##  3 good         joy              2
##  4 good         positive         2
##  5 good         surprise         2
##  6 good         trust            2
##  7 luxury       joy              2
##  8 luxury       positive         2
##  9 appreciation joy              1
## 10 appreciation positive         1
## # ... with 40 more rows
sent_hermes1 %>%
        group_by(sentiment) %>%
        top_n(10) %>%
        ungroup() %>%
        mutate(word=reorder(word,n)) %>%  ##le reordonamn in functie de cat de des intalnite sunt
        ggplot(aes(word, n, fill=sentiment))+
        geom_col(show.legend = FALSE)+
        facet_wrap(~sentiment, scales="free_y")+
        labs(x="Word", y="Contributie", title="Gucci")+
        coord_flip()
## Selecting by n

##Pas11. Generati un grafic de tip rardar chart pentru a evidentia intensitatea sentimentelor generate de un brand

nrc<-get_sentiments("nrc")
scores_nrc<-clean_tokens %>%
        inner_join(nrc, bt=c("word"="word")) %>%
        filter(!grepl("positive|negative", sentiment)) %>%
        count(brand, sentiment) %>%
        spread(brand, n)
## Joining, by = "word"
#view(scores_nrc)
##tabelul arata intensitatea sentimentului pentru brandul respectiv. Unde avem n/a inseamna ca nu exista sentimentul respectiv

###Grafic interactiv 
#windows()
chartJSRadar(scores_nrc)

Bibliografie

[1] http://store.ectap.ro/articole/773_ro.pdf “Testarea eficienţei informaţionale în formă slabă a pieţei de capital româneşti”; Andrei STĂNCULESCU și Eugen MITRICĂ, Academia de Studii Economice, Bucureşti

Anexa 1 - Alegeri la momentul de timp t0

Răspunsurile Respondenților La Chestionar - Gucci, Armani, Dior, Hermes

Chestionar Gucci, Armani, Dior, Hermes - AC

Chestionar Gucci, Armani, Dior, Hermes - AC

Chestionar Gucci, Armani, Dior, Hermes - AB

Chestionar Gucci, Armani, Dior, Hermes - AB

Chestionar Gucci, Armani, Dior, Hermes - AC

Chestionar Gucci, Armani, Dior, Hermes - AC

##Anexa 2 - Alegeri la momentul de timp t1

Răspunsurile Respondenților La Chestionar - Gucci, Hermes investiții Gucii Hermes

Chestionar Gucci,Hermes - AC

Chestionar Gucci,Hermes - AC

Chestionar Gucci,Hermes - AC

Chestionar Gucci,Hermes - AC

Chestionar Gucci,Hermes - AC

Chestionar Gucci,Hermes - AC