Analisi dell'attrito dei dipendenti utilizzando la regressione logistica con R

Contenuti

Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati.

“Per vincere sul mercato, devi vincere sul posto di lavoro” –Steve Jobs, fondatore di Apple Inc..

introduzione

Perché utilizziamo la regressione logistica per analizzare l'attrito dei dipendenti??

Se un dipendente rimarrà o lascerà un'azienda, la tua risposta è semplicemente binomiale, vale a dire, può essere “SÌ” oh “NO”. Quindi, possiamo vedere che la nostra variabile dipendente Attrito dei dipendenti è solo una variabile categoriale. Nel caso di una variabile dipendente categoriale, non possiamo usare la regressione lineare, poi, dobbiamo usare"REGRESSIONE LOGISTICA“.

Metodologia

Qui, indosserò 5 Semplici passaggi per analizzare l'attrito dei dipendenti utilizzando il software R

  1. RACCOLTA DATI
  2. PRE-TRATTAMENTO DEI DATI
  3. DIVIDERE I DATI IN DUE PARTI “ADDESTRAMENTO” E “PROVE”
  4. COSTRUISCI IL MODELLO CON THE “SET DI DATI DI ALLENAMENTO”
  5. ESEGUI IL TEST DI PRECISIONE UTILIZZANDO IL “IMPOSTAZIONE DATI DI PROVA”

Esplorazione dei dati

Questo set di dati viene raccolto dal dipartimento delle risorse umane di IBM. Il set di dati contiene 1470 osservazioni e 35 variabili. Entro 35 variabili, "Usura" è la variabile dipendente.

Una rapida occhiata al set di dati:

51270attrito201-5769482
57847attrito202-1-1421806

Dai un'occhiata:

99468diagramma-2343121

Preparazione dei dati

  • Modificare i tipi di dati:

    Primo, Dobbiamo cambiare il tipo di dati della variabile dipendente “Portare”. È dato sotto forma di "Sì" e "No", vale a dire, è una variabile categoriale. Per realizzare un modello adatto dobbiamo convertirlo in forma numerica. Per questo, assegneremo il valore 1 a "Sì" e valore 0 a "No" e lo renderemo numerico.

    JOB_Attrition$Attrito[JOB_Attrition$Attrito=="Sì"]=1
    JOB_Attrition$Attrition[JOB_Attrition$Attrito=="No"]=0
    JOB_Attrition$Attrition=as.numeric(JOB_Attrition$Attrito)

    prossimo, cambieremo tutte le variabili di “carattere” un “Fattore”

    Ci sono 8 variabili carattere: viaggi d'affari, dipartimento, formazione scolastica, campo educativo, Genere, funzione lavorativa, stato civile, nel tempo. I numeri di colonna sono 2, 4, 6, 7, 11, 15, 17, 22 rispettivamente.

    JOB_Attrition[,C(2,4,6,7,11,15,17,22)]=lapply(JOB_Attrition[,C(2,4,6,7,11,15,17,22)],come.fattore)

    Finalmente, C'è un'altra variabile “Più di 18” che ha tutte le voci come “E”. È anche una variabile di carattere. Diventeremo numerici poiché ha un solo livello, quindi trasformarsi in un fattore non darà un buon risultato. Per questo, assegneremo il valore 1 a "Y" e lo trasformeremo in numerico.

    JOB_Attrition$Over18[JOB_Attrition$Over18=="E"]=1
    JOB_Attrition$Over18=as.numeric(JOB_Attrition$Over18)

Dividere il set di dati in “addestramento” e “prova”

In qualsiasi analisi di regressione, dobbiamo dividere il set di dati in 2 parti:

  1. SET DI DATI DI ALLENAMENTO
  2. IMPOSTAZIONE DATI DI PROVA

Con l'aiuto del set di dati di allenamento, creeremo il nostro modello e testeremo la sua accuratezza utilizzando il set di dati di test.

set.seme(1000)
ranuni=campione(x=c("Addestramento","test"),taglia=numero(JOB_Attrition),sostituire=T,problema=c(0.7,0.3))
TrainingData=JOB_Attrition[ranuni =="Addestramento",]
TestingData=JOB_Attrition[ranuni =="test",]
ora(Dati di allenamento)
ora(Dati di prova)

Abbiamo diviso con successo l'intero set di dati in due parti. Ora abbiamo 1025 Dati di allenamento e 445 Dati di test.

Costruzione del modello

Ora costruiamo il modello seguendo alcuni semplici passaggi come segue:

  1. Identificare variabili indipendenti
  2. Incorporare la variabile dipendente “Portare” nel modello.
  3. Trasformare il tipo di dati dell'oggetto “carattere” un “formula”
  4. Incorporare i dati di TRAINING nella formula e creare il modello
independentvariables=colnames(JOB_Attrition[,2:35])
independentvariables
Model=paste(variabili indipendenti,collapse="+")
Model
Model_1=paste("Attrito~",Modello)
Model_1
class(Model_1)
formula=as.formula(Model_1)
formula

Produzione:

14898rstudio_holncm09ym-3555991

Prossimo, Incorporeremo "Dati di allenamento" nella formula utilizzando la funzione "glm" e costruiremo un modello di regressione logistica.

Trainingmodel1=glm(formula = formula,data=Dati di allenamento,famiglia="binomiale")

Ora, disegneremo il modello dal “Selezione passo passo”Metodo per ottenere variabili significative dal modello. L'esecuzione del codice ci darà un elenco di output in cui le variabili vengono aggiunte e rimosse in base alla nostra importanza del modello. Il valore dell'AIC ad ogni livello riflette la bontà del rispettivo modello. Mentre il valore continua a scendere, si ottiene un modello di regressione logistica che si adatta meglio.

L'applicazione della sintesi sul modello finale ci darà l'elenco delle variabili significative finali e le rispettive informazioni importanti..

Modello di allenamento1=passo(oggetto = Trainingmodel1,direzione = "entrambi")
riepilogo(Modello di allenamento1)
40939screenshot20202020-10-2920190126-5610146
50366screenshot20202020-10-2920190219-9243156

Dal nostro risultato precedente possiamo vedere, Viaggio di lavoro, Distanza da casa, Soddisfazione per l'ambiente, Coinvolgimento del lavoro, Soddisfazione lavorativa, Stato civile, Numero di aziende lavorate, Col tempo, Soddisfazione nelle relazioni, Anni di lavoro totali, Anni in azienda, anni dall'ultima promozione, anni nella posizione attuale tutte queste sono le variabili più importanti nel determinare l'attrito dei dipendenti. Se l'azienda si occupa principalmente di queste aree, ci saranno meno possibilità di perdere un dipendente.

Una rapida visualizzazione per vedere quanto queste variabili influenzano il “indossare”

76582cruscotto-7286729
70771cruscotto202-9019661

Qui ho usato Tableau per queste visualizzazioni; non è bello Questo software semplifica il nostro lavoro.

Ora, possiamo realizzare lo spettacolo di Hoshmer-Lemes test di bontà di adattamento sul set di dati, giudicare la precisione della probabilità prevista del modello.

L'ipotesi è:

H0: Il modello si adatta bene.

H1: Il modello non si adatta bene.

e, valore p> 0,05 accetteremo H0 e rifiuteremo H1.

Per eseguire il test in R dobbiamo installare il mkMisc pacchetto.

HLgof.test(fit=Trainingmodel1$fitted.values,obs=Modello di allenamento1$y)
91427screenshot20202020-10-2920191715-5135086

Qui, possiamo vedere che il p-value è maggiore di 0.05, quindi accetteremo H0. Ora, è dimostrato che il nostro modello è ben regolato.

Generazione di una curva ROC per i dati di allenamento

Un'altra tecnica per analizzare la bontà di adattamento della regressione logistica è il Misure ROC (caratteristiche di funzionamento del ricevitore). Le misure ROC sono la sensibilità, specificità 1, falso positivo e falso negativo. Le due misure che usiamo ampiamente sono la sensibilità e la specificità.. La sensibilità misura la bontà dell'accuratezza del modello, mentre la specificità misura la debolezza del modello.

Per farlo in R dobbiamo installare un pacchetto PROC.

baratto = roccia(risposta=Modello di allenamento1$y,predittore = Trainingmodel1$fitted.values,trama=T)
baratto $ auc
66928screenshot202020-10-2920193331-5125387

L'area sotto la curva: 0.8759

Interpretazione della figura:

Il grafico di queste due misurazioni ci fornisce un grafico concavo che mostra come la sensibilità sta aumentando 1-la specificità sta aumentando ma a una velocità decrescente. Il valore C (AUC) o il valore dell'indice di concordanza fornisce la misura dell'area sotto la curva ROC. Se c = 0,5, avrebbe significato che il modello non può discriminare perfettamente tra 0 e 1 risposte. Quindi implica che il modello iniziale non può dire perfettamente quali dipendenti lasceranno e chi rimarranno..

Ma qui possiamo vedere che il nostro valore c è molto maggiore di 0.5. è 0,8759. Il nostro modello può perfettamente discriminare tra 0 e 1. Perciò, possiamo concludere con successo che si tratta di un modello ben adattato.

Creazione della classifica per il set di dati di allenamento:

trpred=ifelse(test=Trainingmodel1$fitted.values>0.5,si = 1, no=0)
tavolo(Modello di allenamento1$y,trpred)

I set di codici di cui sopra, il valore previsto della probabilità maggiore di 0, .5, allora il valore dello stato è 1, altrimenti è 0. in base a questo criterio, Questo codice ripubblica le risposte “sì” e “No” a partire dal “Portare”. Ora, È importante comprendere la percentuale di stime che corrispondono alla credenza iniziale ottenuta dal set di dati. Qui confronteremo la coppia (1-1) e (0-0).

Ho 1025 dati di allenamento. Abbiamo previsto {(839 + 78) / 1025} * 100 =89% correttamente.

Confronto del risultato con i dati del test:

Ora confronteremo il modello con i dati di test. È molto simile a un test di precisione.

testpred=predict.glm(object=Trainingmodel1,newdata=TestingData,tipo = "risposta")
testpred
tsroc=roc(response=TestingData$Attrition,predittore = testpred,trama=T)
tsroc$auc

Ora, abbiamo incorporato i dati dei test nel modello di addestramento e vedremo il ROC.

37841screenshot20202020-10-2920200245-2760062

L'area sotto la curva: 0,8286 (c valore). È anche di gran lunga superiore a 0,5. È anche un modello ben montato.

Crea la tabella di classificazione per il set di dati del test

testpred = ifelse(test = testpred>0.5,si=1,no=0)
tavolo(TestDati$Attrito,testpred)
73149screenshot202020-10-2920200549-8021438

Ho 445 dati di test. abbiamo previsto correttamente {(362 + 28) / 445} * 100 =87,64%.

Dovuto, possiamo dire che il nostro modello di regressione logistica è un modello molto ben adattato. Qualsiasi insieme di dati sull'abbandono dei dipendenti può essere analizzato utilizzando questo modello.

Quale pensi sia un buon modello? Commenta qui sotto

37243screenshot202020-10-302007590420hr20matrics-4455403

CONCLUSIONE:

Abbiamo imparato con successo come analizzare l'attrito dei dipendenti utilizzando "REGRESSIONE LOGISTICA" con l'aiuto del software R. Solo con un paio di codici e un set di dati adeguato, un'azienda può facilmente capire di quali aree deve occuparsi per rendere il posto di lavoro più confortevole per i propri dipendenti e ripristinare l'energia delle proprie risorse umane per un periodo più lungo.

L'immagine in primo piano è tratta da trainingjournal.com

Link al mio profilo LinkedIn:

https://www.linkedin.com/in/tiasa-patra-37287b1b4/

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.