Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

- JMP User Community
- :
- Discussions
- :
- Next Bext Product in Standard JMP, not Pro

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

Highlighted
##

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Next Bext Product in Standard JMP, not Pro

Aug 17, 2018 9:50 AM
(4112 views)

Hi,

I am using the standard JMP, not the Pro one...

And I would like to build a next best product category model. For example if a customer has bought Product category A, what's the next product they are more likely to purchase Is it feasable in the JMP version I am using? I only have 6 product categories, so nothink like Market Basket Analysis

Your help would be much more appreciated as it is quite urgent.

Thank you so much

Thank You

2 REPLIES 2

Highlighted
##

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Re: Next Bext Product in Standard JMP, not Pro

Created:
Aug 18, 2018 5:36 AM
| Last Modified: Aug 18, 2018 5:42 AM
(4065 views)
| Posted in reply to message from Statistician 08-17-2018

Not sure what the best way is, maybe the contingency platform, but here's an idea:

I'm guessing you don't have enough data on each customer to make a personalized prediction, so this idea uses the data for all the customers to make a guess. I built a table of synthesized data with a sequence of purchases, like this:

And make suggestions like this:

**last purchase: 1 suggests next purchase: 2****last purchase: 2 suggests next purchase: 3****last purchase: 3 suggests next purchase: 4****last purchase: 4 suggests next purchase: 5****last purchase: 5 suggests next purchase: 6****last purchase: 6 suggests next purchase: 1**

```
totalProds = 6;
maxPurchases = 10;
totalCustomers = 1000;
_p = 1; // customers buy the next product in the sequence 10% of the time and a random product 90% ...
nextprod = Function( {}, // this is a synthetic model, just to have some data to play with
If( Random Uniform() > .90, // this is a weak relationship
_p = _p + 1;
If( _p > totalProds, _p = 1 );//
, // else
_p = Random Integer( 1, totalProds )
);
Return( _p );
);
// customers have up to maxPurchases, represented as a list of product numbers (starting at 1)
customerHistory = Function( {},
{result = {}, i},
For( i = Random Uniform( 1, maxPurchases ), i > 0, i -= 1,
Insert Into( result, nextprod() )
);
Return( result ); // {4, 5, 5, 1, 2, 4, 4, 6}
);
// make a customer table with synthetic data
dt = New Table( "Untitled",
Add Rows( totalCustomers ),
New Column( "customer", Character, "Nominal", Formula( Right( Char( 1e9 + Row() ), 8 ) ) ),
New Column( "purchases", Expression, "Nominal", Formula( customerHistory() ) ),
);
dt << runformulas; // make the table formulas ready
dt:customer << deleteformula; // and remove the formulas
dt:purchases << deleteformula; // in case the table needs sorting, etc
// record every pair of purchaces in a matrix
pairs = J( totalProds, totalProds, 0 );
For( irow = 1, irow <= N Rows( dt ), irow += 1,
p = dt:purchases[irow]; // p is a list from the data table
While( N Items( p ) >= 2, // as long as p has at least 2 items
pairs[p[1], p[2]] += 1; // use the first two as indexes to the pairs matrix
Remove From( p, 1 ); // remove the first item from p
);
);
Show( pairs ); // display the matrix
// sumarize the results
For( i = 1, i <= totalProds, i += 1,
Write( "\!nlast purchase: ", i, " suggests next purchase: ", Loc Max( pairs[i, 0] ) )
);
```

The last line might need a little explanation: pairs[i,0] means row i, all the columns. LocMax is a function that returns the location of the maximum value. Since the product numbers are assigned starting at 1, that location is also the product number that is purchased most often after product i is purchased.

Craige

Highlighted
##

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Re: Next Bext Product in Standard JMP, not Pro

What does your data look like? Do you have a "basket" for each customer?

I think a possible simple solution could be to start with each basket as a row of data. Then you would have indicator columns for each product category: 1 = puchased; 0 = not purchased.

Then the multivariate correlations (Analyze > Multivariate Methods > Multivariate) of these indicator variables will tell you about which product categories were purchased together.

Article Labels

There are no labels assigned to this post.