Sunteți pe pagina 1din 46

Academia de Studii Economice București

Facultatea de Cibernetică, Statistică și Informatică Economică

PROIECT DATA MINING

Profesor: Monica MAIER


Studenți: Irina-Maria PAVEL, Rareș-Andrei ȘANDRU,
Masterat Cibernetică și Economie Cantitativă, grupa 1084
Cuprins
Statistici descriptive ................................................................................................................................ 3
Analiza componentelor principale .......................................................................................................... 8
Analiza cluster ....................................................................................................................................... 12
Analiza corespondențelor ..................................................................................................................... 17
Regresia logistică................................................................................................................................... 21
Metode contrafactuale ......................................................................................................................... 24
Analiza preferințelor utilizând tehnica conjoint ................................................................................... 33
Arbori .................................................................................................................................................... 36
Random forest ...................................................................................................................................... 39
ANEXE:................................................................................................................................................... 40

2
Indicatorii folosiți în realizarea proiectului sunt următorii:

I1 – Numărul absolvenților de doctorat per 1000 de locuitori

I2 – Ponderea populației cu studii superioare

I3 – Ponderea populației care participă la formare

I20 – Numărul de brevete

I21 – Numărul de mărci înregistrate

I22 – Numărul de desene/modele înregistrate

I23 – Numărul de angajări în activități ce necesită cunoștințe avansate

I25 – Numărul de exporturi de produse bazate pe tehnologie medie și avansată

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ă.

Figura 1 Tabel statistici descriptive pentru indicatorii aleși

Statistici descriptive

Atunci când discutăm despre numărul de doctoranzi raportat la 1000 de locuitori


putem observa că un minim s-ar afla în Turcia(16), iar maximul este reprezentat de Slovenia
și Elveția( 236). De asemenea în cele 30 de țări analizate o medie a numărului de doctoranzi
este de 123 raportat la 1000 de locuitori, 25% din valori sunt sub 64, 50% sub 115, iar 75%

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.

Figura 2 Valorile abaterii standard pentru indicatorii aleși

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:

Figura 5 Valorile corelațiilor dintre indicatori

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).

De asemenea, mai putem reprezenta legăturile dintre indicatori si cu ajutorul tabelului


din figura următoare.

Figura 7 Legătura dintre variabile

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.

Analiza componentelor principale

În urma analizei corelațiilor dintre variabile am ajuns la concluzia că analiza


componentelor principale este necesară în cadrul acestui set de date. Pentru a vedea câte
componente principale vom avea în urma analizei am realizat screeplot-ul din imaginea de
mai jos. Acesta a fost construit cu ajutorul funcției princomp().

Figura 8 Screeplot

Acesta ne oferă primul indiciul în cazul numărului de componente principale și anume


că am putea avea 3 sau chiar 4 componente.

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.

Ținând cont că alegem să păstrăm 3 componente principale am realizat o reprezentare


3D a biplot-ului de mai sus.

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.

Figura 11 Sinteză informații oferite de funcția PCA()

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.

Figura 12 Sinteză informații oferite de funcția PCA()

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ă.

Figura 13 Contribuția indicatorilor în cazul dimensiunilor 1 și 3

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.

Figura 14 Contribuția indicatorilor în cazul dimensiunilor 1 și 3

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.

Figura 15 Contribuția indicatorilor în cazul dimensiunilor 2 și 3

Pentru ultimele două componente principale contribuie cel mai mult indicatorii I25 și
I2.

Analiza cluster

În analiza cluster am ales să lucrăm cu scorurile rotite ale componentelor principale


întrucât acestea explicau cel mai bine modul în care fiecare indicator contribuia la fiecare
componentă principală.

Figura 16 Valorile scorilor rotite ale componentelor principale

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ă.

Figura 17 Dendograma obținută în urma clusterizării prin metoda Ward

Se poate observa cu ajutorul acesteia că țările ar putea fi împărțite fie în 2, fie în 3


clustere. Pentru a putea observa care este cea mai bună soluție am creat următoarele
grafice silhouette.

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).

Figura 19 Grafic silhouette

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.

Figura 20 Grafic silhouette

Se poate observa că în cazul a două clustere Belgia (1) nu va fi repartizată corect. De


asemenea și media coeficienților este scăzută, 0.34.

În cazul în care optăm pentru 3 clustere graficul silhouette va arăta astfel:

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:

Figura 22 Clustere obținute prin metoda k-means

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:

Cluster 1: Grecia, Lituania, Portugalia, Bulgaria, Polonia, Croația, Rep. Macedonia,


Turcia, Ungaria, Slovacia, Cehia, Italia.

Cluster 2: Malta, Luxemburg, Estonia, Cipru.

Cluster 3: Elveția, Danemarca, Finlanda, Germania, Austria, Olanda, Marea Britanie,


Irlanda, Franța, Slovenia, Belgia, Spania.

Se poate observa că țările dezvoltate precum Elveția, Franța, Marea Britanie,


Germania sunt clasificate în același cluster, pe când cele aflate în dezvoltare precum
Bulgaria, Polonia, Croația, în altul, între ele existând un alt cluster format în principal din
țările dezvoltate, dar foarte mici.

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:

Pentru o vizualizare mai ușoară a datelor am creat figura de mai jos:

17
Figura 23 Ballonplot în cadrul corepondențelor

Se observă că în acest caz mâncarea procurată de la tonomat nu este foarte preferată,


astfel încât am putea să introducem tonomatul în categoria ”Cumpăr de la supermarket”.
De asemenea, o altă reprezentare ar putea fi dată de graficul de mai jos:

Figura 24 Harta simetrică

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.

După aceste modificări preferințele decidenților arată în felul următor:

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:

1. Gemwork3- reprezintă statutul ocupațional și este încadrat în trei categorii(


angajat part-time sau full-time, student sau pensionat și în căutarea unui loc de muncă);
2. Gemhhinc- venitul gospodăriei, este împărțit în redus, mediu și ridicat;
3. Knowent- răspunde la întrebarea ”Cunoașteți pe cineva care și-a deschis
propria afacere în ultimii 2 ani?”, este o variabilă categorială binară;
4. Gender- genul indivizilor;
5. Age9c- vârsta indivizilor;
6. Suskill- variabilă ce arată dacă respondentul consideră că deține cunoștințele
necesare pentru a dezvolta o afacere.

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?”.

Așadar estimarea modelului este următoarea:

Figura 28 Output model

În urma studierii output-ului de mai sus putem ajunge la concluzia că:


- Există diferențe semnificative între persoanele care nu lucrează și cele care dețin
deja un loc de muncă, dar nu există diferențe semnificative între studenți/ pensionari și cei
care sunt în căutarea unui loc de muncă;
- Există diferențe semnificate între oamenii care consideră că au aptitudinile necesare
pentru a porni o afacere și cei care nu;
- Nu există diferențe semnificative atunci când discutăm despre venitul gospodăriei.
- Există diferențe semnificative între cei care cunosc pe cineva care și-a deschis
propria afacere în ultimii 2 ani față de cei care nu cunosc, în ceea ce privește decizia de a
deveni antreprenor;

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:

• Categoria1: vârsta cuprinsă între 0 și 34 ani;


• Categoria2: vârsta cuprinsă între 35 și 64 ani;
• Categoria3: vârsta cuprinsă între 65 și 120 ani.

Output-ul realizat este următorul:

Figura 29 Output realizat

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.

Mai departe am calculat estimațiile coeficienților și am realizat următorul tabel:

Figura 30 Estimațiile coeficienților

Așadar șansele de a porni o afacere, față de cele de a nu dezvolta o afacere sunt:

- 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.

Figura 31 Curba ROC

Curba ROC ne oferă informații cu privire la capacitatea de predicție a modelului:

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%).

În cel de-al doilea caz ar fi 2066 de răspunsuri negative și 1378 de răspunsuri


pozitive, raportul fiind de 60%-40%. Estimațiile coeficienților sunt următoarele:

Figura 32 Estimațiile coeficienților

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ă.

O altă încercare ce s-ar mai putea face ar fi prin validare încrucișată.

Figura 34 Modelul cu datele rose

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ă.

Figura 35 Output regresie logistică

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.

Figura 36 Sinteza aplicării metodei contrafactuale

Î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

Analizând rezultatele prezentate în tabelul de mai sus putem concluziona că matching-


ul nu a condus la diminuarea diferențelor existente între cele două grupuri în ceea ce
privește distribuția variabilelor explicative. Pentru variabilele age si black testul Kolmogorov
Smirnov ne indică că diferențele dintre distribuția variabilelor observată pentru setul de
control diferă semnificativ de cea observată pentru grupul tratement, ipoteza nula nu poate
fi acceptată. Aceste concluzii se pot observa si cu ajutorul graficelor cuantilelor. În opinia
mea celelalte variabile ar putea fi păstrate în model, match-ul fiind făcut corect.

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ă.

Figura 39 Analiză variabila Educ

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.

Un alt model ce se poate obține este cu ajutorul algoritmului genetic. Rezultatele


obținute cu ajutorul acestuia sunt:

Figura 42 Rezultate algoritm genetic

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.

Analiza preferințelor utilizând tehnica conjoint


Întrebarea la care ar trebui să răspundă aplicația dezvoltată este: ”Care este
contribuția atributelor ce definesc un telefon la decizia finală a unui consumator?”

Î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:

1. Capacitatea memoriei interne: sub 32/ peste 32;


2. Rezoluție cameră foto: sub 12/ peste 12;
3. Diagonală display: sub 5.5/ peste 5.5;
4. Prețul telefonului: sub 2000/ peste 2000.

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:

Figura 43 Output pas 1

Al doilea pas urmat a fost de generare a matricei experimentului. Aceasta constă în 8


sarcini, fiecare constând în alegerea profilului preferat de respondenți. Metoda folosită în
analiză a fost ”mix and match”, adică fiecare sarcină s-a obținut adăugând 1 la fiecare nivel
al atributelor. Al treilea pas este de transformare a matricei în chestionar, iar întrebările
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:

Figura 44 Tabel răspunsuri

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.

Rezultatul analizei este următorul:

Figura 45 Rezultat analiză

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:

1. Șansele de a achiziționa un telefon cu memoria internă mai mare de 32 sunt


cu 185% mai mari decât șansele de a selecta un telefon cu memoria mai mică de 32;
2. Șansele de a selecta un telefon cu rezoluția camerei foto peste 12 sunt cu
178% mai mari decât acelea de a selecta un telefon cu rezoluția mai mică;
3. Șansele de a achiziționa un telefon cu diagonala mai mare de 5.5 sunt cu
78% mai mari decât acelea de a selecta un telefon cu diagonala mai mică.

Dacă și prețul ar fi însemnat o variabilă semnificativă din punct de vedere statistic


atunci am fi putut interpreta în felul următor: șansele de a alege un telefon cu prețul de
peste 2000 lei sunt cu 16% mai mari decât de a achiziționa un telefon mai ieftin.

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”.

Figura 46 Arbore 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.

Figura 48 Valorile parametrului de complexitate

Figura 47 Rezultatul 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:

Figura 49 Arborele final

Unde coeficienții ce indică importanța variabilelor, sunt:

Figura 50 Importanța variabilelor

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

Figura 51 Curba ROC

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

S-ar putea să vă placă și