## RFI Analysis

Expanding on my prior post about Bootstrap Analysis, this post is a demonstration of one particular technique for learning more about how deep the rabbit hole goes when you are exploring a new data set.

RFM analysis is a way to summarize the interactions your customers have with your organization. Using the three concepts of Recency, Frequency and Monetary Value, and their various interactions and combinations you can create a very simple statistical model of the value of a given set of customers.

Now, what if your customers are not spending money? Changing Monetary Value to the Intensity of their interactions with your organization, store, or web-site is one way to use the common tools available for RFM analysis as an RFI analysis.

Recency - How recently, according to some definition, did an interaction occur?

Frequency - How frequently does a particular customer or set of customers perform an interaction?

Intensity - How intently did the customer interact?

Each of these metrics needs to be interpreted in the context of your particular brand.

Here is a small example visualization using some random data I generated:

I generated a list of customers, randomly assigned them to 5 different stores. After that I set up a random number generator in Excel to populate the three metrics of Recency, Frequency, and Intensity.

In this particular case Recency could be how recently a customer visited a store in a Month. So if a customer visited on the last day of the month, the Recency would be high. Frequency is how frequently this customer visited this store during the month. Intensity could be how much money, or how much time they spent in the store.

So long as the metric is applicable to your use-case, and the definitions are consistent throughout the analysis, each of them

This analysis tool can be applied in a variety of settings where there is recurring interactions between a customer base, and a set of customers.

With the proper visualization of data similar to the above image, many data points can be represented. In this case we represent the RFI metric itself as a point in the geometric cube. The shape of the point represents the store. The color represents the customer.

So in this simple diagram there are 5 dimensions of data represented.

The R code to do this is:

#Load the correct packages for 3d representation and reading csv files

library(scatterplot3d)

library(readr)

#read the data

rfm.df <- read_csv('rfm.csv')

#Define some shapes based on unique store

shapes = c(16,17,18,19,20)

shapes <- shapes[as.numeric(rfm.df$Store)]

rfm.df$Customer <- as.factor(rfm.df$Customer)

s3d <- scatterplot3d(rfm.df$Recency,rfm.df$Frequency,rfm.df$Monetary,

xlab="Recency",ylab="Frequency",zlab="Monetary Value",pch=shapes,color=as.integer(rfm.df$Customer))

legend(s3d$xyz.convert(.9,1,0.8),legend=levels(rfm.df$Customer),text.col=as.integer(rfm.df$Customer),cex=1)

library(scatterplot3d)

library(readr)

#read the data

rfm.df <- read_csv('rfm.csv')

#Define some shapes based on unique store

shapes = c(16,17,18,19,20)

shapes <- shapes[as.numeric(rfm.df$Store)]

rfm.df$Customer <- as.factor(rfm.df$Customer)

s3d <- scatterplot3d(rfm.df$Recency,rfm.df$Frequency,rfm.df$Monetary,

xlab="Recency",ylab="Frequency",zlab="Monetary Value",pch=shapes,color=as.integer(rfm.df$Customer))

legend(s3d$xyz.convert(.9,1,0.8),legend=levels(rfm.df$Customer),text.col=as.integer(rfm.df$Customer),cex=1)

Thanks, this is a very common sense way of explaining a way to determine your "best" customers. It should be easy to explain to upper management and provide powerful insight. BZ

ReplyDelete