Documente Academic
Documente Profesional
Documente Cultură
2
Indicatorii folosiți în realizarea proiectului sunt următorii:
Modul în care am ales indicatorii a fost acela de a urmări o corelație între numărul de
doctoranzi, a ponderii populației cu studii superioare și cum acestea influențează numărul
de brevete, mărci înregistrate și desene/modele, dar și numărul de angajări în domenii ce
necesită cunoștințe avansate și numărul de exporturi de produse bazate pe tehnologie
medie și avansată.
Statistici descriptive
3
sub 186. Referitor la ponderea populației cu studii superioare, țara ce se clasează pe ultimul
loc este Italia(23.1). Pe primul loc se află Cipru având această pondere egală cu 241.8. O
medie pentru cele 30 de țări ar fi de 130.10, unde 25% dintre valori se află sub pragul de
72.95, 50% sub 139.95, iar 75% sub 169.38. În cazul celui de-al treilea indicator minimul are
valoarea 12.5 și este reprezentat de Bulgaria, iar maximul în valoare de 280.40 este
reprezentat de Suedia. De asemenea, 25% dintre valori se află sub pragul de 50.77, 50%
sunt sub 85.95, 75% sub 164.05. Media în cazul celor 30 de țări este de 109.97.
Când vine vorba de numărul de brevete, indicatorul 20, țara cu cele mai puține(2.2)
este Republica Macedonia, iar țara cu cele mai multe este Suedia. O medie calculată în cazul
acestor țări are valoarea de 68.31. De asemenea, și în cazul mărcilor înregistrate, indicatorul
21, țara cu cele mai puține este Turcia, iar țările cu cele mai multe sunt: Luxemburg, Malta
și Cipru. Media mărcilor înregistrate în cele 30 de țări este de 128.72. Analiza indicatorului
22, numărul de modele înregistrate, ne arată că țara situată pe ultimul loc este Republica
Macedonia, rezultatul fiind de așteptat ținând cont că aceasta era țara și cu cele mai puține
brevete. Pe primul loc se situează Malta, țară ce a avut și cele mai multe mărci înregistrate.
În cazul acestui indicator discutăm de o medie de 84.23.
O ultimă categorie a indicatorilor analizați îi include pe ultimii doi, I23 și I24. Când
discutăm despre primul, țara ce se clasează pe primul loc este Luxemburg, atingând maximul
de 211.7. Pe ultimul loc întâlnim Republica Macedonia. Media țărilor ce au intrat în analiza
indicatorului 23 este 109. Pentru I24 țara cu cele mai puține exporturi a fost Grecia, iar cu
cele mai multe, Ungaria. Media a fost de 87.77.
Când vine vorba de abaterea standard indicatorul ce are valoarea cea mai mare este
I3, iar cel cu cea mai mică este I25. În cazul primului valorile acestuia se abat de la medie cu
83.44, iar în cazul celui de-al doilea cu 31.97.
4
Figura 3 Diagrama boxplot
Prin analiza diagramei boxplot putem observa că doar în ultimul indicator studiat se
găsește o valoare aberantă și anume un minim de 4.8, dat de Grecia. Ținând cont că doar un
singur outlier nu poate influența analizele făcute în continuarea lucrării am decis să nu fie
eliminat.
5
Figura 4 Matricea de corelație
La o primă vedere putem afirma faptul că indicatorii sunt corelați între ei. Pentru a
putea testa dacă coeficienții acestora sunt semnificativi din punct de vedere statistic vom
interpreta tabelul din imaginea de mai jos:
Coeficientul dintre I1 și I2 cu valoarea 0.2 nu este semnificativ statistic fiind mai mic
decât pragul de 0.05, dar despre cel dintre I1 și I3 putem afirma că este semnificativ statistic
(0.0003 < 0.05). Pentru a putea vedea mai bine care coeficienți sunt semnificativi din punct
de vedere statistic am creat graficul de mai jos:
6
Figura 6 Matricea de corelație cu coeficienți seminificativi
Putem afirma că toți coeficienții de corelație sunt pozitivi, iar 12 dintre aceștia nu sunt
semnificativi statistic luând în considerare un prag de 0.05. O legătură puternică există între
I3 (Ponderea populației care participă la formare) și I20 (Ponderea populației care participă
la formare).
7
În această figură putem observa pe diagonala principala histogramele fiecărui
indicator. Pentru indicatorul I2 spre exemplu Skewness are valoarea 0.074, iar Kurtosis -
0.9766, ceea ce ne indică o repartiție platicurtică, asimetrică la dreapta. Deasupra diagonalei
principale întâlnim valorile coeficienților de corelație. Cei ce sunt semnificativi statistic sunt
reprezentați prin steluțe. Se demonstrează faptul că între I3 și I20 există o corelație
puternică, având valoarea de 0.84. Sub diagonala principală se observa împrăștierea
punctelor și legăturile dintre aceștia.
Figura 8 Screeplot
8
Figura 9 Biplot
În imaginea de mai sus putem observa că I2 este puternic corelat cu I21, I1 este
împreună cu I20, I3, I23, I22 și mai rămâne I25. Astfel avem încă un indiciu că 3 componente
principale ar fi de ajuns în cadrul analizei noastre. De asemenea se poate observa că țările
analizate tind să se grupeze în mijloc, având și câteva excepții precum Cipru, Luxemburg,
Turcia și Republica Macedonia. Biplot-ul ne mai poate oferi un indiciu și pentru atunci când
vorbim de clusterizare, țările grupându-se în 3 sau 4 clustere.
Figura 10 Biplot 3D
9
În acest grafic se poate observa că, de exemplu, Republica Macedonia se află mult mai
departe față de celelalte țări decât am fi crezut urmărind doar biplot-ul. De asemenea,
celelalte țări sunt destul de apropiate din punct de vedere informațional. Întrucât Republica
Macedonia s-a evidențiat prin mai multe puncte de minim și maxim în momentul în care am
realizat statisticile descriptive asupra datelor, era de așteptat ca acum să nu fie chiar atât de
grupată cu celelalte țări.
Folosind funcția PCA din programul R am obținut tabelul de mai sus în care se observă
că primele 3 componente principale rețin 80% din informație. Acest procent ne
demonstrează ca am luat decizia corectă atunci când am ales să păstrăm doar trei
componente principale.
Pentru a observa cum sunt construite cele trei componente principale cu ajutorul
indicatorilor vom studia tabelul din figura de mai sus. Cu ajutorul ”Dim” din acesta putem
descrie ecuațiile componentelor principale. Un exemplu ar fi: CP1= 0.671*I1 + 0.507*I2
+0.878* I3 + 0.808* I20 + 0.691*I21 + 0.650*I22 + 0.866*I23 + 0.208*I25. De asemenea
contribuția fiecărui indicator la variația componentei principale este dată de ”ctr”, el fiind
calculat ca fracția dintre ”cos2” și suma elementelor de pe coloana ”cos2” așadar putem
afirma că de exemplu I1 contribuie cu 11.78% pentru prima componentă, 20.22% pentru cea
10
de-a doua și cu 5.66% pentru cea de-a treia. Pentru a putea vizualiza această informație mai
ușor am creat graficele ce urmează.
Se poate observa că prima componentă conține 47.8% din informație, iar cea de-a
treia 15%. De asemenea indicatorul I22 contribuie cel mai mult în realizarea acestor două
componente, dar și indicatorii I23 și I3 aduc un plus de informație.
11
Din această figură reiese faptul că cea de-a doua componentă principală conține
17.4% din informație. Indicatorii I1, I20, I3, I23 și I21 contribuie cel mai mult în realizarea
primelor doua componente principale.
Pentru ultimele două componente principale contribuie cel mai mult indicatorii I25 și
I2.
Analiza cluster
12
În tabelul de mai sus se regăsesc coeficienții de corelație dintre variabilele inițiale și
componentele principale. Astfel de exemplu indicatorul I1 este corelat cel mai bine cu prima
componentă principală, ceea ne indică că acesta a ajutat la construcția ei, pe când
indicatorul I2 este corelat cu ultima componentă principală. Așadar prima componentă
principală conține: I1, I3, I20, cea de-a doua: I21, I22, I23 și ultima: I2 și I25.
Prima metodă prin care s-a ales clusterizarea datelor este metoda Ward. Cu ajutorul
acesteia am creat prima dendogramă.
13
Figura 18 Grafic silhouette
În cazul în care alegem să împărțim datele în două clustere observăm că Spania (țara
9) nu va fi încadrată bine. Faptul că este pe partea negativă ne arată că ea ar fi trebuit să fie
in clusterul 2 și nu în primul. Țările aflate la frontieră ar fi reprezentate de 6 (Estonia) și 1
(Belgia). De asemenea media coeficienților este redusă (0.34).
14
În cazul în care alegem trei clustere observăm că lucrurile se îmbunătățesc. Toate
țările sunt încadrate corespunzător în clustere, Spania fiind acum situată doar la frontieră.
De asemenea și media coeficienților a mai crescut, fiind 0.38.
Pentru a alege cea mai bună grupare pentru țările din analiză, vom face clusterizarea și
prin metoda K-means.
15
Figura 21 Grafic silhouette
În acest caz Spania nu este repartizată corect, iar media coeficienților este și mai mică.
Astfel pentru metoda K-means cea mai bună împărțire ar fi în 2 clustere care ar arăta astfel:
16
În concluzie cea mai bună metodă de clusterizare ar fi metoda Ward, ea având media
coeficienților cea mai mare. Astfel cele 3 clustere ar fi alcătuite astfel:
Analiza corespondențelor
În acest capitol am ales să vedem ce fel de masă preferă oamenii la prânz în funcție de
mijlocul de transport cu care se deplasează la locul de muncă. Am început analiza prin a
introduce în soluția 1, soluția 2 întrucât la final să rămână una singură.
Astfel oamenii se pot deplasa la locul de muncă folosind propria mașină, metroul,
RATB-ul sau transport ecologic. În funcție de aceste mijloace de transport ne-am propus să
vedem dacă preferă să comande la birou de la diverse restaurante, cumpere de la
supermarket, să iasă la masă în afara biroului, să-și aducă pachet de acasă sau să cumpere
de la tonomat. O primă soluție a acestei analize ar fi:
17
Figura 23 Ballonplot în cadrul corepondențelor
18
În prima figură am mai observat că pe lângă tonomat, oamenii nu preferă să se
deplaseze cu RATB sau Transportul ECO. Acest fapt este demonstrat și în figura de mai sus,
unde se vede că RATB nu se grupează cu nimic, dar TransportECO este apropiat de 2 soluții
și anume, ”Cumpăr de la supermarket” și ”Ies la masa în afara biroului”. Din acest motiv în
continuarea analizei am preferat să unim RATB cu Metrou, ce poate fi considerată o singură
variantă, reconsiderată a fiind transport în comun.
Figura 25 Ballonplot
Astfel, cei mai mulți oameni care merg cu mașina preferă să comande la birou, cei mai
mulți care se deplasează cu metroul, ca și cei care aleg transportul ECO, preferă să iasă la
masă în afara biroului. Un număr mai exact al acestor persoane este regăsit în tabelul de mai
jos:
Figura 26 Rezultate
19
Figura 27 Harta simetrică după modificări
20
Regresia logistică
Scopul analizei este acela de a vedea în ce mod indivizii stabiliți în Gemania doresc să-
și deschidă o proprie afacere sau nu. Variabila considerată dependentă este ”bstart”.
Aceasta reprezintă răspunsul dat de indivizi la întrebarea ” Încercați să vă deschideți o nouă
afacere?”. Variabilele pe care le-am considerat independente sunt:
Volumul eșantionului pe baza căruia s-a realizat analizat este de 3444 respondenți din
Germania. Dintre aceștia aproximativ 7% au dat un răspuns pozitiv la întrebarea ” Încercați
să vă deschideți o nouă afacere?”.
21
- Există diferențe semnificative între femei și bărbați în ceea ce privește aceeași
decizie;
- În ceea ce privește vârsta pentru respondenții ce sunt în intervalul 45-64,
preponderent pentru cei cu vârsta cuprinsă între 55 și 64 de ani există diferențe
semnificative în ceea ce privește probabilitatea de a-și deschide propria afacere față de
ceilalți.
În urma celor de mai sus am creat un alt model în care am eliminat gemhhinc, iar
pentru vârstă am recreat alte categorii astfel:
Interpretările rămân aceleași, mai puțin pentru vârstă unde se poate observa că există
diferențe semnificate între categoria 2 și celelalte.
- 119% mai mari pentru cei care în momentul studiului nu lucrează față de cei care
dețin un loc de muncă;
- 54% mai mici pentru studenți sau pensionari;
- 331% mai mari pentru cei care consideră că au aptitudini;
- 233% mai mari pentru cei care au o cunoștință ce și-a deschis propria afacere în
ultimii 2 ani, față de cei care nu cunosc pe nimeni;
- 25% mai mari pentru bărbați față de femei;
22
- 52% mai mici pentru cei din categoria2 (vârsta cuprinsă între 35 și 64 de ani) față de
celelalte 2 categorii.
Aria de sub curba ROC este de 78%. Pentru un punct de pe curbă în care True Positive
Rate este 0.7, False Positive Rate ar putea fi 0.3. În momentul în care am încerca să re-
echilibrăm datele folosind pachetul ROSE diferențele dintre categoriile selectate și cele de
bază ar fi mai semnificative, iar aria de sub curba ROC crește cu 1% (79%).
Putem observa că diferențele dintre acestea și cele inițiale sunt destul de mici.
23
Figura 33 Curba ROC
Consider că modelul are performanțe medii, aria de sub curbă fiind totuși una mică.
Prin această metoda aria ar scădea la 70%. Astfel, consider că cel mai bun model ar fi
putea fi considerat al doilea, cel în care am folosit datele rose.
Metode contrafactuale
Metoda folosită pentru a face asocierea este de matching bazată pe un scor de
propensitate obținut cu ajutorul regresiei. În această analiză ne-am propus să observăm
dacă venitul indivizilor ce au primit tratament este diferit de cel al indivizilor care nu au
primit.
Dacă ne uităm doar la mediile veniturilor celor care au primit și celor care nu au primit
tratament vom observa o diferență de 1794.34, veniturile celor cu tratament fiind mai mari
decât a celorlalți. Cum această diferență nu este tocmai corespunzătoare întrucât mai sunt
și alte variabile ce influențează venitul, nu doar faptul că au primit sau nu tratament, vom
folosi în continuare metoda amintită în primul paragraf. Astfel variabilele independente
folosite sunt:
24
- age – vârsta respondenților;
- educ - nivelul de educație, număr de clase studiate;
- black - rasa indivizilor, variabilă binară;
- hisp - rasa indivizilor, variabilă binară;
- married - statutul marital, variabilă binară;
- nodeg r - prezența diplomei de bacalaureat, variabilă binară.
Output-ul regresiei logistice din figura de mai sus ne indică faptul că cel mai
semnificativ indicator în ceea ce privește venitul indivizilor ar fi cel care ne arată dacă au
diplomă de bacalaureat sau nu.
În urma aplicării funcției Match() se observă că diferența dintre media veniturilor celor
care au primit tratament, față de cea a indivizilor care nu au primit este de 2302, mai mare
decât cea pe care o obținusem inițial. De asemenea putem afirma că această diferență este
semnificativă din punct de vedere statistic întrucât p-value este mai mic decât pragul de
0.05, acesta având valoarea 0.002. Numărul total de observații este de 445, dintre care 185
au primit tratament.
Pentru a observa dacă asocierea a fost făcută corect în continuare vom studia output-
ul obținut cu ajutorul funcției MatchBalance():
25
26
Figura 37 Output obținut cu ajutorul funcției MatchBalance
27
Figura 38 Analiză variablila Age
Pentru variabila “age” se poate observa că valorile se abat destul de mult la final, ceea
ce ne indică că match-ul nu a fost făcut corect pentru această variabilă. În schimb pentru
variabila ”educ” graficul arată mai bine și demonstrează că concluzia trasă mai sus de a
păstra această variabilă este una corectă.
Am decis să reiau același model în care să elimin variabilele ”age” și ”black”. Sinteza
aplicării metodei contrafactuale este următoarea:
28
Figura 40 Sinteza aplicării metodei contrafactuale
Se poate observa că diferența scade, iar p-value chiar dacă a mai crescut tot este sub
pragul de 0.05 și ne indică că diferența este semnificativă. De asemnea, outputul funcției
MatchBalance() s-a îmbunătățit și este următorul:
29
Figura 41 Output funcție MatchBalance
De exemplu pentru variabila ”educ” p-value pentru testul Kolmogovor Smirnov după
matching se modifică de la 0.86 la 1. Și pentru primele trei secțiuni lucrurile s-au
îmbunătățit, valorile scăzând destul de mult după matching.
Diferența obținută de data aceasta este semnificativă din punct de vedere statistic și
are valoarea de 2027.9.
30
31
32
Din punct de vedere al corectitudinii asocierilor făcute, ultima metodă folosită este cea
mai bună. Astfel putem concluziona și spune că indivizii care au primit tratament au un venit
mai mare cu 2027 față de cei care nu au primit tratament.
În cadrul acestei analize a fost creat un chestionar astfel încât să simuleze procesul
de alegere a unui telefon, respondenții primind sarcina de a alege dintre diferite profile de
telefoane. Au fost utilizate 4 atribute pentru a defini produsul analizat, fiecare fiind
reprezentat ca o variabilă categorială cu 2 nivele astfel:
Primul pas urmat a fost de generare al setului complet de profile ce poate fi realizat și
anume un număr total de 16. Dintre acestea au fost extrase 8 profile întrucât erau
dominate. Astfel output-ul primului pas arată în felul următor:
33
Experimentul folosit în acest exemplu conține un singur bloc, ceea ce înseamnă că
respondenții au primit aceleași întrebări. De exemplu întrebarea 6 solicită respondentului să
aleagă între 2 profile:
1. Un telefon care are o memorie peste 32, rezoluția peste 12, diagonala sub
5.5, iar prețul este peste 2000 lei;
2. Un telefon care are o memorie sub 32, rezoluția sub 12, diagonala peste 5.5 și
prețul sub 2000 lei.
34
Respondenții au răspuns prin ”1” sau ”2” în funcție de profilul pe care l-au preferat.
Astfel tabelul ce conține răspunsurile primite arată în felul următor:
Din acest tabel putem extrage următoarele informații: respondentul 1, care a răspuns
blocului 1 de întrebări, la prima sarcină a ales profilul 1, la a doua profilul 2 și tot așa. Analog
se poate interpreta și pentru ceilalți respondenți. Numărul total de indivizi ce au răspuns la
chestionar este de 25.
Se poate observa că primele 3 caracteristici ale unui telefon sunt semnificative din
punct de vedere statistic, în schimb ce prețul, în cazul acestui experiment nu este. Astfel
putem interpreta în felul următor:
35
Arbori
Continuăm studiul de la regresia logistică cu ajutorul arborilor de clasificare. Scopul
este același, de a afla ce îi îndeamnă pe oameni să devină antreprenori. Țara aleasă rămâne
în continuare Germania, iar datele pe care se va lucra sunt cele re-echilibrate cu ajutorul
pachetului ”rose”.
Începem prin analiza arborelui ce conține toate variabilele descrise în baza de date
„antreprenori”.
Dacă ne uităm în prima ramură, cea din stânga, observăm că oamenii ce consideră că
nu dețin aptitudinile necesare pentru a deveni antreprenor au fost încadrați în clasa NU
(aceștia dețin o proporție de 45%). Pe ramura din dreapta:
36
- cei ce consideră că dețin aceste aptitudini și cunosc o persoană ce și-a deschis o
afacere în ultima perioadă au fost încadrați în clasa DA (28%);
- cei care nu cunosc o astfel de persoană, au vârsta în categoria 1 (până în 34 de ani) și
consideră că teama de eșec (fearfail) nu reprezintă un obstacol pentru deschiderea unei
afaceri, au fost încadrați în clasa DA (6%), cei care au considerat că această teamă reprezintă
un obstacol au fost încadrați în clasa NU (2%);
- cei care nu cunosc o persoana ce și-a deschis de curând o afacere, au vârsta în
categoria 2 (între 35 și 64 de ani), provin dintr-o gospodărie cu un venit redus sau ridicat au
fost încadrați în clasa NU (14%). Cei care provin dintr-o gospodărie cu un venit mediu și nu
au o diplomă de bacalaureat sau au studii postliceale sau anumite cursuri au fost încadrați în
clasa NU (3%) cei cu studii superioare au fost încadrați în clasa DA (3%).
Pentru a alege cel mai bun model și numărul de noduri terminale ce ar trebui să fie
incluse în arbore vom studia graficul ce ne indică rezultatele validării încrucișate.
37
Vom alege ultima valoare de sub linia orizontală din rezultatul validării încrucișate,
adică cp=0.012, ceea ce implică un arbore cu 7 noduri terminale și 6 ramificări. Astfel,
arborele final va arăta în felul următor:
O mică concluzie ce poate fi extrasă este aceea ce, factorii principali ce țin de
alegerea unui individ de a-și deschide o afacere sau nu, sunt cei ce țin de aptitudinile sale,
faptul dacă cunosc sau nu o persoană ce și-a deschis o afacere, frica de eșec și educația.
38
Random forest
Uitându-ne la grafic, putem afirma cu ușurință că acest model de predicție este cel mai
bun. De asemenea, aria de sub curba ROC are valoarea 0.84.
39
ANEXE:
1. library(corrplot)
2. library(ggplot2)
3. library(Hmisc)
4. library(lattice)
5. library(survival)
6. library(Formula)
7.
8. date<-read.csv("indicatori.csv")
9. View(date)
10. ind<-date[,2:9]
11. rownames(ind, date$Tara)
12. View(ind)
13. View(date)
14. summary(ind)
15. a<-sd(ind$I1)
16. b<-sd(ind$I2)
17. c<-sd(ind$I3)
18. d<-sd(ind$I20)
19. e<-sd(ind$I21)
20. f<-sd(ind$I22)
21. g<-sd(ind$I23)
22. h<-sd(ind$I25)
23. m=c(a,b,c,d,e,f,g,h)
24. View(m)
25. boxplot(ind, col=c("lightcyan","lightgreen","lightgoldenrod1","indianred1","ivory","hotpink2"
,"lawNgreen","AQUAMARINE"))
26. View(ind$I25)
27. c<-round(cor(ind),2)
28. c
29. pairs(ind,col="hotpink3")
30. c2<-rcorr(as.matrix(ind))
31. c2
32.
33. corrplot( c2$r, type="upper", p.mat=c2$P, sig.level= 0.05, insig="blank")
34. library(PerformanceAnalytics)
35. library(xts)
36. library(zoo)
37. chart.Correlation(ind, histogram = TRUE, pch=19)
38. skewness(ind$I22)
39. kurtosis(ind$I23)
40. # ACP ---------------------------------------------------------------------
41.
42. # metoda 1 ----------------------------------------------------------------
43. acp1<-princomp(ind,cor=TRUE, scores=TRUE)
44. summary(acp1)
45. plot(acp1, type="l",col="deepskyblue")
46. biplot(acp1)
47. scoruri<-acp1$scores
48.
49. library(scatterplot3d)
50.
51. grafic3d<- scatterplot3d(scoruri[,1:3],color="red",pch=4)
52. text(grafic3d$xyz.convert(scoruri[,1:3]), labels=date$Tara)
53. cor(ind, scoruri[,1:3])
54.
55. library(rgl)
56. plot3d(acp1$scores[,1:3],col=c("blue","red","yellow"),labels=date$Tara)
57. text3d(acp1$scores[,1:3],texts=date$Tara)
58.
59.
60. # metoda 2 ----------------------------------------------------------------
40
61.
62. acp2<-prcomp(ind, center=TRUE, scale=TRUE)
63. summary(acp2)
64. plot(acp2, type="l",col="hotpink3")
65. biplot(acp2)
66. scoruri2<- acp2$scores
67. cor(ind,scoruri2[,1:3])
68. #plot3d(acp2$scores[,1:3],col=c("blue","red","yellow"),labels=date$Tara)
69. #text3d(acp2$scores[,1:3],texts=date$Tara)
70.
71. # metoda 3 ----------------------------------------------------------------
72.
73. library(FactoMineR)
74. acp3<-PCA(ind)
75. summary(acp3)
76. library(factoextra)
77. fviz_pca_var(acp3,axes=c(3,1), col.var="contribuie")
78. acp3
79.
80. #rotire
81. varimax<-varimax(acp2$rotation[,1:3])
82. scorurir<-scale(ind)%*% varimax$loadings
83. cor(ind,scorurir)
84.
85. # clusterizare ------------------------------------------------------------
86.
87.
88. # WARD -----------------------------------------------------------------
89.
90. library(cluster)
91. library(factoextra)
92. library(ape)
93.
94. ?hclust()
95. d<- dist(scorurirotite[,1:3],method = "euclidean")
96. sol1<- hclust(d, method = "ward.D2")
97. plot(sol1,labels=date$Tara, col="steelblue1",hang=-1)
98. rect.hclust(sol1, k=3, border="blue")
99. rect.hclust(sol1,k=2, border="blue")
100. sol1.1<-cutree(sol1, k=2)
101. s1.1<-silhouette(sol1.1, d)
102. plot(s1.1, col=c("aquamarine","lightpink"))
103. sol1.2<-cutree(sol1, k=3)
104. s1.2<-silhouette(sol1.2, d )
105. plot(s1.2, col=c("aquamarine","lightpink","lightgreen"))
106. s1.2 # in ce cluster se duce tara
107.
108.
109. # K-means -----------------------------------------------------------------
110.
111. sol2<-kmeans(scorurirotite[,1:3],2)
112. s2.2<-silhouette(sol2$cluster,d)
113. plot(s2.2,col=c("aquamarine","lightpink","lightgreen"))
114. fviz_cluster(list(data=scorurirotite[,1:3],cluster=sol2$cluster, labels=date$Tara))
115. clusplot(scorurirotite[,1:3],sol2$cluster,color=TRUE,shade=TRUE, labels=2, lines=0)
116.
117.
118. table (sol1.2,sol2$cluster)
119. table(sol1.2, sol3.1)
120.
121.
122. # Corespondente -----------------------------------------------------------
123.
124.
125. rasp<-read.csv("formular3.csv")
126. View(rasp)
41
127. attach(rasp)
128. rasp2<- subset(rasp,Solutie2!="")
129. View(rasp2)
130. rasp2$Solutie1<- rasp2$Solutie2
131. rasp3<- rbind(rasp,rasp2)
132. View(rasp3)
133. raspuns<-rasp3[-2]
134. View(raspuns)
135. levels(Transport)
136. levels(Solutie1)
137. tabel<-table(raspuns$Solutie1, raspuns$Transport)
138. View(tabel)
139. library(reshape2)
140. library(gplots)
141. balloonplot(t(tabel), main ="Corespondenta-Transport", xlab ="", ylab="",
142. label = FALSE, show.margins = FALSE)
143. levels(raspuns$Solutie1)
144. levels(raspuns$Solutie1)[levels (raspuns$Solutie1)%in%c("Tonomat")]<-"Cumpar de la
supermarket"
145. levels(raspuns$Solutie1)
146. tabel<-table(raspuns$Solutie1, raspuns$Transport)
147. tabel<-tabel[-5,]
148. tabel
149. library(ca)
150. corespond<- ca(tabel)
151. summary(corespond)
152. windows()
153. plot(corespond)
154. levels(raspuns$Transport)[levels(raspuns$Transport)%in%c("RATB")]<-"Metrou"
155. tabel<-table(raspuns$Solutie1, raspuns$Transport)
156. tabel
157. tabel<-tabel[-5,]
158. balloonplot(t(tabel), main ="Corespondenta-Pret", xlab ="", ylab="",
159. label = FALSE, show.margins = FALSE)
160. snicorespond<- ca(tabel)
161. summary(corespond)
162. plot(corespond)
42
1. # pachete -----------------------------------------------------------------
2.
3. library(ROSE)
4. library(memisc)
5. library(ROCR)
6. library(ggplot2)
7. library(Hmisc)
8. library(corrplot)
9. library(redcapAPI)
10. library(PerformanceAnalytics)
11. library(support.CEs)
12. library(AlgDesign)
13. library(Matching)
14. library(rgenoud)
15. library(survival)
16. library(rpart)
17. library(rpart.plot)
18. library(ROSE)
19. library(ROCR)
20. library(randomForest)
21.
22. # Regresie logistica -----------------------------------------------------
23.
24. a<- data.frame(as.data.set(spss.system.file("antrep.sav")))
25. View(a)
26. attach(a)
27. table(a$knowent)
28. table(country)
29. country<-subset(a, country=="Germany")
30. table(country$bstart)
31. variabile<-which(names(country) %in%
32. c("bstart","gemwork3", "gemhhinc", "gemeduc", "knowent", "suskill","fearfa
il", "gender", "age9c"))
33.
34. country<-country[,variabile]
35. country<-na.omit(country)
36. head(country)
37. table(country$bstart)
38. # functie regresie logistica GLM
39. model1<-glm(bstart~
gemwork3+suskill + gemhhinc+ knowent+ gender+ age9c, data=country, family="binomial")
40. summary(model1)
41. exp(coef(model1))
42. table(country$gemwork3)
43.
44. table(country$age9c)
45. levels(country$age9c)[levels(country$age9c) %in% c("0-17","18-24","25-34")]<- "categorie1"
46. levels(country$age9c)[levels(country$age9c) %in% c("35-44","45-54","55-64")]<- "categorie2"
47. levels(country$age9c)[levels(country$age9c) %in% c("65-120")]<- "categorie3"
48. table(country$age9c)
49. model2<-glm(bstart~ gemwork3+suskill+knowent+gender +age9c,data=country,family = "binomial")
50. summary(model2)
51. exp(coef(model2))
52. #curba ROC
53. yhat<- predict(model2, type="response")
54. pr<-prediction(yhat, country$bstart, label.ordering = NULL)
55. perf<-performance(pr, "tpr", "fpr")
56. windows()
57. plot(perf, colorize= TRUE, lwd=5)
58. performance(pr, "auc")
59.
60. #re-echilibram
61. table(country$bstart)
62. date.rose<-ROSE(bstart~.,data=country,p=0.4, seed = 123)$data
63. table(date.rose$bstart)
64. model<-glm(bstart~ gemwork3+suskill+knowent+gender +age9c,data=date.rose,family = "binomial")
43
65. summary(model)
66. exp(coef(model))
67. yhat<- predict(model, type="response")
68. pr<-prediction(yhat, date.rose$bstart, label.ordering = NULL)
69. perf<-performance(pr, "tpr", "fpr")
70. windows()
71. plot(perf, colorize= TRUE, lwd=5)
72. performance(pr, "auc")
73.
74. country1<-country[,c(1,2,7,8)]
75. View(country1)
76. View(country)
77. perfmRose<- ROSE.eval(bstart~., data= country1,
78. learner = glm, method.assess = "LKOCV", K=5,
79. control.learner = list(family=binomial),
80. control.rose=list(p=0.4),seed=123, trace=TRUE)
81. summary(perfmRose)
82. #asa scade, nu e ok
83.
84.
85. # Metode Contrafactuale ---------------------------------------------------
86. ?lalonde
87. data("lalonde")
88. View(lalonde)
89. table(lalonde$treat)
90. head(lalonde)
91. mean(lalonde$re78[lalonde$treat== 1])
92. mean(lalonde$re78[lalonde$treat== 0])
93. diferenta<-mean(lalonde$re78[lalonde$treat== 1]) -mean(lalonde$re78[lalonde$treat== 0])
94. diferenta
95. scor<- glm(treat~ age + educ+ black+ hisp+ married+ nodegr, data= lalonde, family=binomial)
96. summary(scor)
97. efect<-Match(Y=lalonde$re78, Tr= lalonde$treat, X= scor$fitted, estimand = "ATT",
M=1, replace= TRUE)
98. summary(efect)
99. MatchBalance(treat~ age + educ+ black+ hisp+ married+ nodegr, match.out= efect, data=lalonde,
nboots = 200)
100. qqplot(lalonde$age[efect$index.control], lalonde$age[efect$index.treated])
101. abline(coef=c(0,1), col=2)
102. qqplot(lalonde$educ[efect$index.control], lalonde$educ[efect$index.treated])
103. abline(coef= c(0,1),col=4)
104. scor<- glm(treat~ educ+ hisp+ married+ nodegr, data= lalonde, family=binomial)
105. efect<-Match(Y=lalonde$re78, Tr= lalonde$treat, X= scor$fitted, estimand = "ATT",
M=1, replace= TRUE)
106. summary(efect)
107. MatchBalance(treat~ educ+ hisp+ married+ nodegr, match.out= efect, data=lalonde,
nboots = 200)
108. library(rgenoud)
109. x<-cbind(lalonde$age, lalonde$educ, lalonde$black, lalonde$hisp, lalonde$married,
lalonde$nodegr)
110. genetic<- GenMatch(Tr=lalonde$treat, X=x, pop.size = 1000)
111. mgen1<-Match(Y=lalonde$re78, Tr=lalonde$treat, X=x, Weight.matrix = genetic)
112. summary(mgen1)
113. MatchBalance(treat~ age+ educ+ black+ hisp+ married+ nodegr,
match.out= mgen1, data=lalonde, nboots = 200)
114. # Analiza Conjoint --------------------------------------------------------
115.
116. ffd<-gen.factorial(c(2,2,2,2),
varNames = c("Memorie","Rezolutie","Diagonala","Pret"),factors = "all")
117. View(ffd)
118. ffd<-ffd[-c(1,4,6,8,9,11,15,16),]
119. set.seed(100)
120. des<-rotation.design(candidate.array = ffd, attribute.names = list(Memorie=c("sub
32","peste 32"), Rezolutie=c("sub 12","peste 12"),
121. Diagonala=c("sub
5.5", "peste 5.5"), Pret=c("sub 2000","peste 2000")),
44
122. nalternatives = 2, nblocks=1, row.renames= FALSE,
randomize= FALSE, seed=100)
123. desmat<-make.design.matrix(choice.experiment.design = des, optout = FALSE,
124. categorical.attributes = c("Memorie","Rezolutie","Diagonala
","Pret"),
125. unlabeled = TRUE)
126. q<-questionnaire(choice.experiment.design = des)
127. rasp<-read.table("RaspunsuriDM.txt",header=TRUE, sep= "\t")
128. View(rasp)
129. dataset<- make.dataset(respondent.dataset = rasp,
choice.indicators = c("I1","I2","I3","I4","I5","I6","I7","I8"),
130. design.matrix = desmat)
131. rezultat<-
clogit(RES~ASC+peste.32+peste.12+peste.5.5+peste.2000 + strata(STR),data=dataset)
132. summary(rezultat)
133.
134. # Arbori ------------------------------------------------------------------
135. #simpli
136. library(rpart)
137. library(rpart.plot)
138. library(ROSE)
139. library(ROCR)
140.
141. modelarb1<-rpart(bstart~ ., method="class", data=date.rose)
142. summary(modelarb1)
143. View(a)
144. datarose<-ROSE(bstart~. , data=date.rose , p=0.4, seed=123)$data
145. windows()
146. prp(modelarb1, type=3, extra=106, under=TRUE, box.palette = "GyPu")
147. plotcp(modelarb1)
148. printcp(modelarb1)
149.
150. arboref<-prune(modelarb1, cp=0.012)
151. arboref
152. prp(arboref, type=3, extra=106, under=TRUE, box.palette = "GyPu")
153.
154. summary(arboref)
155.
156. esantion<- sample(1:nrow(date.rose), 1130) #1130, 80% din esantionul nostru de 1418
linii
157. train<-date.rose[esantion,]
158. test<-date.rose[-esantion,]
159.
160. p<- predict(modelarb1, test, type="prob")[,2] #prob - probabilitatea pe clasa 1 si
pe clasa 2, [,2]- pentru a alege a 2a clasa, YES
161. pred<-prediction(p, test$bstart)
162. roc<-performance(pred, "tpr", "fpr")
163. plot(roc, colorize = TRUE, lwd=5)
164. performance(pred, "auc")
165.
166.
167. #random forest
168.
169. rf<-randomForest(x=train[,-7],y=train$bstart, importance= TRUE,
ntree=1000, replace= TRUE,
170. xtest=test[,-7], ytest=test$bstart)
171. rf$oob.times
172. predictii<-rf$predicted
173. rf$importance
174. predictions=as.vector(rf$votes[,2])
175. pred=prediction(predictions,train$bstart)
176. perf_AUC=performance(pred,"auc")
177. AUC= perf_AUC@y.values[[1]]
178. perf_ROC=performance(pred,"tpr","fpr")
179. plot(perf_ROC, main="ROC plot",colorize=TRUE, lwd=5)
180. performance(pred,"auc")
45
181.
182. View(date.rose)
183. # comparatie --------------------------------------------------------------
184.
185. testare<-rf$test
186. pred1<-predict(model, test, type="response")
187. pred2<-predict(modelarb1,test, type="prob")
188. pred3<-testare$predicted
189.
190. preds<-cbind(pred1, pred2, pred3)
191. View(preds)
192. prednot<-prediction(preds, labels=cbind(test$bstart,test$bstart, test$bstart))
193. perf<-performance(prednot,"tpr","fpr")
194. plot(perf, col=as.list(1:3))
195. legend("bottomright", legend=c("logistica","arbore","forest"),pch=19,col=c("black",
"red","yellow"))
46