Integra R, Tabella y Excel

Contenuti

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

introduzione

In questo articolo, Mostrerò come eseguire un'analisi di regressione e ottimizzare il prezzo del noleggio in R, quindi incolla il valore in excel, che in seguito si collegherà nuovamente a Tableau per eseguire ulteriori calcoli con altri campi nel set di dati originale.

Questo tipo di perfetta integrazione tra 3 Diversi strumenti di analisi possono aiutare gli analisti di dati a eseguire indagini statistiche in R, quindi migra i risultati in Tableau e visualizzali in modo digeribile per i lettori aziendali.

Introduzione al set di dati utilizzato e requisiti aziendali

Il set di dati per questo esempio è tratto dal progetto Capstone all'interno “Excel un MySQL: Tecniche analitiche per le aziende”. Questa è una tabella che contiene informazioni sugli immobili in affitto di un'azienda, con informazioni sul tasso di occupazione degli affitti a breve termine e il prezzo medio dell'affitto per notte. Abbiamo anche dati sul prezzo in percentile 10 e percentile 90 di proprietà simili nella stessa regione.

Il nostro requisito aziendale è trovare un prezzo ottimizzato per ogni proprietà, in modo che le entrate possano essere massimizzate. Poiché il reddito è una funzione del tasso di occupazione * prezzo di affitto per notte * 365 (supponendo che la proprietà possa essere affittata tutto l'anno), dobbiamo esprimere il tasso di occupazione in funzione del prezzo di affitto per notte, che può essere fatto con una semplice regressione lineare

Il prossimo compito è eseguire la funzione di ottimizzazione R, proprio come usiamo Risolutore in Excel, per ogni proprietà o ogni riga nel set di dati.

Con il prezzo ottimizzato e il tasso di occupazione previsto, possiamo calcolare l'utile lordo totale dell'azienda e fare molte altre analisi.

Collega R con Tableau

26593cattura-5554563

Per prima cosa dobbiamo connettere Tableau con R.

Prima di collegare R con Tableau, assicurati che la tua console R abbia già installato Rserve.

library("Rserve")

Rserve()

Ora, R dovrebbe stampare ‘Iniciando Rserve …’. Si observa este resultado, entonces R se está comunicando con Tableau para establecer una conexión.

2) Abra Tableau y haga clic en Ayuda> Configuración y rendimiento> Administrar conexiones de servicios externos.
3) En el cuadro de diálogo que se abre, elija ‘localhostpara Servidor y escriba ‘6311para Puerto.
4) Dopo, haga clic en Probar conexión

Ora, debería aparecer un cuadro de diálogo que diga: ‘Conectado con éxito al servicio R serve’. Significa que está listo para usar R con Tableau

Cree un campo calculado que ejecute código R en Tableau

Cree un campo calculado y pegue el siguiente código:

SCRIPT_REAL(
"df <- data.frame(.arg1,.arg2,.arg3,.arg4,.arg5)

modello <-lm(dati=df,.arg1 ~ .arg2)

Create revenue function. 
revenue <- funzione(dati,attraverso) {
par_vs_10th <- par-data$.arg3
normalized_price <-0.1+0.8*par_vs_10th/data$.arg5
fcst_occupancy <-coef(modello)['(Intercettare)']+coef(modello)['.arg2']*normalized_price
fcst_st_revenue <-fcst_occupancy*365*par
fcst_st_revenue
}

Run optim for each row in df. Find the value of "attraverso"-rent price-that can optimize revenue function
per (io in 1:ora(df)) 
{df[io,'optimized_price'] <-ottimale(122,revenue,dati=df[io,],method='L-BFGS-B', control=list(fnscale=-1),inferiore=df[io,'.arg3']) }

#restituisce il prezzo ottimizzato come output per il campo calcolato
df$ottimizzato_prezzo",

somma([Tasso di occupazione]),
media([sample_price_percentile]),
media([Percentile10esimo prezzo]),
media([Percentile 90esimo prezzo]),
media([percentile_90th_vs_10th]),
attr([ID proprietà Ws]))

Il codice R deve essere scritto in una funzione come SCRIPT_REAL, che restituisce valori numerici. Esistono altre funzioni R simili in Tableau, come SCRIPT_BOOL e SCRIPT_INT, in base ai valori che vuoi recuperare.

Prima di correre, dobbiamo creare una tabella: df <-data.frame (.arg1, .argomento2,…)

.arg1, .arg2... sono i campi dell'origine dati in Tableau. Sono le parole in grassetto del codice. .arg1 è il tasso di occupazione, .arg2 es el sample_price_percentile.

Il R_code sarà racchiuso tra parentesi (”“). L'ultima riga di codice: df $ optim_price determinerà il valore di ritorno per questo calcolo.

Per una spiegazione dettagliata sull'esecuzione della regressione lineare e ottimale in R, vedi link sotto:

https://nguyenkhoi6394.github.io/Excel-to-MySQL-Capstone-Project/Using_Optim_for_a_dataframe_in_R.html

Questo calcolo è un calcolo tabellare. Assicurati che sia calcolato insieme all'ID proprietà.

89327pic1-3291782

Creemos una vista para ver esta misura.

46025pic2-7680083

Ora abbiamo ottimizzato il prezzo di ogni immobile.

tuttavia, ora si verifica un problema. Questa misura è un calcolo tabellare e possiamo avere un solo valore per proprietà quando lo guardiamo in una tabella. Non possiamo incorporarlo in un altro calcolo.

Ad esempio, Voglio normalizzare il prezzo ottimizzato a un valore percentile utilizzando la seguente formula:

0,1 + 0,8 * (prezzo ottimizzato 10° percentile prezzo) / (90° percentile contro 10°)

Tableau genererà un errore, dicendo che non possiamo mescolare una misura aggregata con un valore non aggregato. Questo è davvero scomodo e inflessibile, poiché potremmo voler sfruttare un calcolo codificato R per molte più misurazioni.

81229pic3-1992674

Per mitigare questo problema, Ho trovato una soluzione: scrivi i valori ottimizzati per R su file csv o excel, luego una este nuevo conjunto de datos con la Origine dati original en Tableau para la creación de otras visualizaciones o medidas.

Integrazione finale

Creiamo un altro campo di calcolo in Tableau, chiamato Script. Questa volta non restituiremo un valore numerico, ma scriveremo gli output in un file CSV esterno. Nel mio esempio, Scrivo in CSV per semplicità, ma puoi anche scrivere nel file xlsx se preferisci.

SCRIPT_REAL(
"df <- data.frame(.arg1,.arg2,.arg3,.arg4,.arg5)
 modello <-lm(dati=df,.arg1 ~ .arg2)

revenue <- funzione(dati,attraverso){
 par_vs_10th <- par-data$.arg3
 prezzo_normalizzato <-0.1+0.8*par_vs_10th/data$.arg5
 fcst_occupancy <-coef(modello)['(Intercettare)']+coef(modello)['.arg2']*prezzo_normalizzato
 fcst_st_revenue <-fcst_occupancy*365*par
 fcst_st_revenue
 }

 per (io in 1:ora(df)) {df[io,'optimized_price'] <-ottimale(122,revenue,dati=df[io,],method='L-BFGS-B', control=list(fnscale=-1),inferiore=df[io,'.arg3']) }
df$prezzo_normalizzato_ottimizzato<-0.1+0.8*(df$ottimized_price-df$.arg3)/(df$.arg5)

#Crea un nuovo dataframe, sostituendo .arg2(sample_percentile_price) con il prezzo ottimizzato normalizzato
nuovo <-data.frame(.arg2=df$prezzo_ottimizzato_normalizzato)

#Prevedi il tasso di occupazione in base al prezzo ottimizzato e aggiungi come nuova colonna a df
df["Previsione di occupazione"]=prevedere.lm(modello, nuovi dati=nuovi)

#Aggiungi ID proprietà a df
df["ID proprietà Ws"]= .arg6

#Scrivi df in un file CSV
 scrivere.tabella(df,'D:/Documenti/Analisi aziendale/4. Visualizzazione/Capstone aziendale/Blogathon/new.csv',settembre=',',row.names=FALSO,citazione=FALSO,col.names = TRUE)
 ",
somma([Tasso di occupazione]),
media([sample_price_percentile]),
media([Percentile 10° Prezzo]),
media([Percentile 90esimo prezzo]),
media([percentile_90th_vs_10th]),
attr([ID proprietà Ws]))

Il prossimo passo è creare un nuovo foglio, chiamato Foglio 2, ad esempio. Prossimo, trascina l'ID proprietà e la misura dello script su Dettagli sulla scheda del marchio.

Dovresti vedere un messaggio come il seguente:

59814pic4-2654978

Basta ignorare quel messaggio di errore. Apri la cartella che hai specificato nel calcolo dello script e vedrai che è stato appena creato un nuovo file CSV.

20200pic5-2674267
87604pic6-7481776

Il nostro prossimo compito è più semplice, collega semplicemente la cartella di lavoro di Tableau a questo file CSV e uniscilo all'origine dati originale, secondo chiave esterna: ID proprietà WS.

71228pic7-8411117

Ora, a Pannello di dati, un nuovo set di dati è disponibile per l'uso.

80811pic8-6387792

Poiché abbiamo il prezzo ottimizzato e il tasso di occupazione previsto come campi normali, possiamo usarli per calcoli aggiuntivi senza problemi relativi al livello aggiuntivo come sopra.

Supponiamo di voler creare una misura chiamata Gross Revenue = Optimized Price * Tasso di occupazione * 365. Il calcolo è ora valido.

74361pic9-9876650

Nel futuro, en caso de que haya cambios en los datos de addestramento (segno del prezzo a notte), o se aggiungi più funzioni al modello lineare. Basta aprire il foglio 2 di nuovo per riattivare il processo e recuperare nuovi risultati.

Note finali

La capacità di scrivere codice R in un calcolo rende Tableau più flessibile del suo rivale, Potenza BI, in termini di connessione con piattaforme di analisi dati esterne. Quando si combina Tableau, Excel e R, possiamo utilizzare la potenza di molti strumenti contemporaneamente per le nostre pratiche analitiche.

Avere altre idee e casi d'uso relativi all'uso di Python e R in Tableau? Non esitate a commentare questo articolo..

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.