Documente Academic
Documente Profesional
Documente Cultură
Numarul cel mai mare de respondenti este din Statele Unite, anume 11.353 persoane.
Din totalul de 25.955 de persoane care au raspuns din cele 10 tari, 8220 invata un limbaj de
programare nou odata la cateva luni, 9974 odata pe an, 7144 odata la cativa ani si doar 617
odata la 10 ani.
Mai jos, vom folosi analiza corespondentelor pentru a reprezenta informatia din tabelele
prezentate anterior.
-In coloana cor regasim contributia axei principale la inertia unui anumit punct.
-Coloana mass ne arata cati respondenti exista pentru fiecare frecventa de invatare a unui nou
limbaj.
-In coloana ctr este calculate contributia absoluta la inertie a unui anumit punct.
Avem nevoie de 3 dimensiuni pentru a prelua 100% din varianta totala : prima axa explica
78.5% din inertia totala, cea de-a doua 18.5%, iar ultima 3%. Valoarea inertiei totale este
0.005120. Cea mai mare contributie o are China, de 45%, iar mai mult de jumatate din
developeri invata un limbaj de programare nou odata pe an (51.4%).
Prima frecventa (evry) , a treia (oncy) si a patra (oncv) se coreleaza puternic cu prima axa, in
timp ce a doua coreleaza cu cea de-a doua axa (oncd). Belgia,Franta,Rusia,Anglia, Statele
Unite coreleaza cu prima axa , iar Australia, Canada,China, Germania,Italia coreleaza cu cea
de-a doua axa.
Asocierea dintre tari si raspunsuri este redata prin graficul de mai jos. Pirma axa explica
78.5% din varianta totala, iar a doua 18.5%. Categoria Every Few Months este pozitionata
mai in stanga fata de restul, iar China ocupa o pozitie aproape izolata fata de celelalte tari
,deci distinctia facuta de respondentia chinezi este mare.
Verificam bonitatea modelului:
Observam 3 dimensiuni, preluand 100% din varianta totala. Prima explica 78.52%, a doua
18.46%, iar ultima 3.01%.
Observam ca prima dimensiune contribuie cel mai mult la varianta totala, in timp ce a doua si
a treia considerabil mai putin.
2. Regresia logistica
Au fost selectati angajatii peste 18 ani si impartiti pe intervale , anume 18-25, 26-30, 30-45 si
45+ .
Putem deduce ca varsta minima a unui respondent este de 18 ani, jumatate din respondenti au
o varsta mai mica de 30 ani. 75% au varsta mai mica de 36 ani, in timp ce doar 25% au peste.
Facand un plot, ne putem da seama ca cei mai multi respondenti se incadreaza in pirmele
doua categorii de varsta.
In imaginile de mai jos, putem observa impartirea respondetilor pe categorii de varsta.
Prin definirea variabilei target, WannaQuit, scopul nostru este de a incadra respondentia intr-
o categorie: cei care vor sa plece din firma in viitor (1) si cei care nu vor sa plece (0).
Urmarim frecventa unor variabile in functie de variabila cea noua, WannaQuit, pe
care am stabilit-o, cu ajutorul tabelelor de mai jos:
Se poate observa faptul ca cei mai multi respondenti, aflati in jurul varstei de 30 de ani, sunt
satisfacuti cu jobul pe care il au prezent si nu doresc sa plece, insa sunt deschisi catre
oportunitati noi.
data=DateRegresie,
In screenshot-ul de mai jos, avem rezultatele estimarii unui model de regresie logistica:
Rezultatul prezentat reda informatii referitoare la influenta pe care o au factorii analizati
asupra probabilitatii ca un angajat sa plece din companie.
Curba ROC (Receiver Operating Characteristics) este o curbă bidimensională care prezintă
grafic valorile perechi ale sensibilităţii (axa OY, rata adevărat pozitivilor) şi specificităţii (axa OX,
(1-Sp) = rata falşi pozitivilor) şi permitând astfel evaluarea unui semn/test diagnostic. 1
Aria de sub curba Roc este de 100%, deci am obtinut un clasificator bun.
http://romedinf2019.umfcluj.ro/index.php?option=com_k2&view=item&id=1318:l05romcs&Itemid=249&lang
=ro
3. Arbori de clasificare
Variabila NEWOvertime – Cei mai multi programatori fac overtime-uri de maxim 1-2 ori pe
luna.
Variabila OrgSize -Observam ca cei mai multi oameni lucreaza in organizatii cu 20-99 de
angajati.
# Pachete -----------------------------------------------------------------
# Instalare pachete
# Incarcare pachete
sapply(pacheteBDSA, library, character.only =T)
library(plyr);
library(dplyr);
install.packages("readr")
library(readr)
NEWCollabToolsWorkedWith,NEWDevOpsImpt,NEWJobHunt,,NEWJobHuntResearch,NEWL
earn,
NEWOffTopic,NEWOnboardGood,NEWOvertime,NEWPurchaseResearch,NEWPurpleLink,NE
WSOSites,NEWStuck,
OpSys,OrgSize,PurchaseWhat, Sexuality,SOAccount,SOComm,SOPartFreq))
dim(Data2020)
# 38 variabile pastrate in analiza
View(Data2020)
#Analizam raspunsurile respondentilor din 10 tari referitor la cat de des invata un limbaj de
programare nou.
#Analizam cele 2 observatii alese, tara si frecventa invatarii unui limbaj nou de programare
table(DateTari$NEWLearn)
attach(DateTari)
tc_apl02<-table(Country,NEWLearn)
margin.table(tc_apl02,1)
margin.table(tc_apl02,2)
prop.table(tc_apl02)
view(tc_apl02)
chisq.test(tc_apl02)
install.packages("tidyverse")
install.packages('useful')
library(useful)
library(ggplot2)
quartz()
plot(corespondente_NEWLearn, lines=c(FALSE,F))
install.packages("FactoMineR")
install.packages("factoextra")
library(FactoMineR)
library(factoextra)
res.ca <- CA(tc_apl02,graph = FALSE)
summary(res.ca)
eig.val <-get_eigenvalue(res.ca)
eig.val
fviz_screeplot(res.ca,addTabels=TRUE, ylim=c(0,50))
#2
DateRegresie$JobSat1<-factor(DateRegresie$JobSat)
table(DateRegresie$JobSat,DateRegresie$JobSat1)
DateRegresie<-DateRegresie%>%
filter(!is.na(JobSat))
dim(DateRegresie)
DateRegresie<-DateRegresie %>%
filter(Age>=18)
dim(DateRegresie)
DateRegresie %>%
filter(!is.na(Age)) %>%
ggplot(aes(Age)) +
geom_density(color = "white", fill="steelblue", adjust=5) + labs(x = "Age",
y="Densitate",
caption = ) +
ggtitle("Varsta") + theme_gray(base_size = 12)
summary(DateRegresie$Age)
~WannaQuit
dim(DateRegresie)
summary(DateRegresie)
View(DateRegresie)
DateRegresie<- DateRegresie %>%
mutate(WannaQuit = as.factor (case_when (JobSat1 == "Very dissatisfied" ~ 1,
JobSat1 == "Slightly dissatisfied" ~ 1, JobSat1== "Slightly satisfied"
~0,
JobSat1=="Very satisfied" ~0) ))
DateRegresie <- DateRegresie %>% filter(!is.na(WannaQuit))
attach(DateRegresie)
table(DateRegresie$WannaQuit)
table(DateRegresie$Age, DateRegresie$WannaQuit)
table(DateRegresie$JobSat1, DateRegresie$WannaQuit)
table(DateRegresie$JobSat, DateRegresie$WannaQuit)
table(DateRegresie$JobSeek, DateRegresie$WannaQuit)
summary(DateRegresie$WannaQuit)
DateRegresie <-DateRegresie %>% filter(!is.na(WannaQuit))
summary(DateRegresie$Age)
DateRegresie <-DateRegresie %>%
filter(!is.na(Age))
summary(DateRegresie$JobSat1)
summary(DateRegresie %>% select(c(WannaQuit,Age,JobSat1,JobSeek)))
exp(coef(model1))
install.packages('arm')
pred1 <- predict(model1, type = "response")
summary(pred1)
y_pred_num1 <- ifelse(pred1 > 0.5, 1, 0)
table(y_pred_num1)
library(R)
pred<-prediction(pred1, y_act1)
class(pred)
class(DateRegresie)
View(pred)
summary(pred)
quartz()
pred%>% performance(measure = "tpr", x.measure = "fpr") %>% plot(colorize =T, lwd=7)
?rpart
table(DateRegresie$NEWOvertime)
DateRegresie$NEWOvertime1<-factor(DateRegresie$NEWOvertime,
labels=c("NSD","SD","SS","VD","VS"))
table(DateRegresie$NEWOvertime,DateRegresie$NEWOvertime1)
DateRegresie$OrgSize1<-factor(DateRegresie$OrgSize, labels=c("LAA") )
table(DateRegresie$OrgSize,DateRegresie$OrgSize1)
library(rpart)
library(rpart.plot)
arbore1 <- rpart(WannaQuit ~ Age1 + JobSeek + OrgSize1 + NEWOvertime1,
data=DateRegresie, method="class", minsplit = 2, cp=-1, minbucket = 1,
maxdepth=5)
printcp(arbore1)
plotcp(arbore1)
summary(arbore1)
# Varianta 1)
#reprezentarea grafica a arborelui complet prin functia "prp"
quartz()
prp(arbore1, type=2, extra=106, under=TRUE, fallen.leaves=FALSE, box.palette = "BuPu",
tweak = 1)
library(rattle)
library(rpart)
library(rpart.plot)
library(RColorBrewer)
# Varianta 2)
??fancyRpartPlot
quartz()
fancyRpartPlot(arbore1, palettes="PuOr",type = 2, leaf.round = 3, tweak = 3.5)
?rpart
plotcp(arbore1)
install.packages("p")
library("p")
auc(DateRegresie$WannaQuit, pred_tree[,"1"])
# grafic curba .
y_pred_num <- ifelse(pred_tree > 0.5, 1, 0)
y_pred <- factor(y_pred_num, levels = c(0, 1))
y_actual <- DateRegresie$WannaQuit
# Reprezentam grafic curba
prediction(pred_tree[,2], y_actual) %>%
performance(measure = "tpr", x.measure = "fpr") %>%
plot(col ='chartreuse3', lwd=3, lty=1, main="AUC Classification Tree Model")
# Adaugam legenda pe grafic
legend("bottomright", legend=c("Classification Tree", "Baseline (AUC 50%)"),
col=c("chartreuse3", "black"), lty=1:2, cex=1)