Scale Purchased

The Scale Purchased node changes the Willingness To Pay (WTP) values of individual Customers within the Input WTP Matrix according to the Product each Customer purchased.

Scaling individual Customer WTP values depending upon earlier Product purchases is helpful in a number of situations. For example, 'Learning Curves' may be simulated as Customers gain more familiarity with Products after purchase, and 'Switching Costs' may be simulated as it becomes increasingly difficult for a Customer to switch to another Product after purchasing the same Product multiple times. Firms may also experiment with the effectiveness of free trials, expecting both the WTP of Customers to increase after they have tried using the Product, and the 'Volume' demanded to increase so that each Customer buys more Quantity. The 'Law Of Diminishing Marginal Utility' can be simulated for Customers who purchase Products multiple times.

Individual WTP values can be scaled if a Customer does purchase the Focus Product or does not purchase the Focus Product. The WTP of Products related to the purchased Focus Product may also be scaled. This is useful when, for example, a Customer's WTP for a Brand increases after purchasing just a single Product. Several Scale Purchased nodes can be cascaded one after the other to fine-tune the updated WTP values depending upon the relationship between the purchased Focus Product and other Products in the Market.

More Help: Examples and sample workflows can be found at the Scientific Strategy website: www.scientificstrategy.com.

Options

Standard Options

Customer Selected Focus Product
The column containing the 'Focus Product' each Customer in the Input WTP Matrix Purchased or considered. The Focus Product defines the 'Scale Product Set' for each Customer that all will change in accordance with the user-specified 'Scale Scenario'.
Scale Product Set
The set of Products that will change in accordance with the user-specified 'Scale Scenario'. The 'Scale Product Set' may or may not include the Focus Product, other Products with the same Brand, Store, Location, Family, Category or Platform as the Focus Product, and Products that are top Competitive Rivals with the Focus Product. The degree of Competitive Rivalry is determined by the sensitivity the Focus Product has to a change in Price by the other Products in the Market. Each Customer may have a different Focus Product, so the Scale Product Set may be different for each Customer.
Number of Additional Scale Products
The number of additional Products to include in the 'Scale Product Set'. The user may specify the 'Scale Product Set' include a 'Top Number of Rival Products' (that is, the most competitive Products) or the 'First Number of Listed Products' (that is, the Products listed first in the 'Input Product Array'). In these cases, the actual number of Products to include in the 'Scale Product Set' is determined by this option. Not all 'Scale Product Set' selections require the 'Number of Additional Scale Products' option.
Scale Scenario
The method by which the Products in the 'Scale Product Set' will be changed. The WTP of each individual Customer can be raised/lowered by a fixed or even or variable amount, or can trend towards a value. The options include:
No Change: The individual Customer WTP value remains unchanged.
Set to Fixed Value: Set the individual Customer WTP value to the Fixed Value.
Set to Variable Value: Set the individual Customer WTP value to the value in the corresponding row of another Customer Distribution.
Add Fixed Value: Add the Fixed Value to the existing individual Customer WTP value.
Add Variable Value: Add the value in the corresponding row of another Customer Distribution to the current individual Customer WTP value.
Add both Fixed Value and Variable Value: Add the Fixed Value then add the Variable Value to the current individual Customer WTP value.
Add Fixed Value Randomly by Fixed Rate: Randomize the fraction of the Fixed Value added to each WTP according to the Fixed Rate (0.0 = No Randomization, 1.0 = Highest Randomization = add a double-fraction of the Fixed Value to some Customers and add a zero-fraction to other Customers).
Add Fixed Value by Variable Rate: Scale the Fixed Value according to the Variable Rate then add it to the individual Customer WTP value. The higher the Variable Rate row, the more of the Fixed Value will be allocated to that Customer. All Variable Rate values should be positive (negative Rates will be ignored).
Spread Fixed Value Evenly: Spread out the Fixed Value evenly across all Customers by adding a proportional fraction of the Fixed Value to each WTP in the Customer Distribution.
Spread Fixed Value Evenly then Add Variable Value: Spread out the Fixed Value evenly then add the Variable Value to each Customer's WTP.
Spread Fixed Value Randomly by Fixed Rate: Randomize the fraction of the Fixed Value spread across each WTP according to the Fixed Rate (0.0 = No Randomization, 1.0 = Highest Randomization = add a double-fraction to some Customers and add a zero-fraction to other Customers).
Spread Fixed Value by Variable Rate: Spread out the Fixed Value according to the Variable Rate. The higher the Variable Rate row, the more of the Fixed Value will be allocated to that Customer. All Variable Rate values should be positive (negative Rates will be ignored).
Multiply by Fixed Rate then Add Fixed Value: Multiply the individual Customer WTP value by the Fixed Rate then Add the Fixed Value. A Fixed Rate of 1.0 (100% maximum) will make the complete adjustment.
Multiply by Fixed Rate then Add Variable Value: Multiply the individual Customer WTP value by the Fixed Rate then Add the Variable Value from the same row in another Customer Distribution.
Multiply by Variable Rate then Add Fixed Value: Multiply the individual Customer WTP value by the Variable Rate from the same row in another Customer Distribution then Add the Fixed Value.
Multiply by Variable Rate then Add Variable Value: Multiply the individual Customer WTP value by the Variable Rate from the same row in another Customer Distribution then Add the Variable Value.
Shift towards Fixed Value at Fixed Rate: Shift the individual Customer WTP value towards the Fixed Value at the Fixed Rate. A Fixed Rate of 0.5 will scale the value by 50% of the distance between the current value and the final value. A negative Fixed Rate will scale the value in the opposite direction.
Shift towards Fixed Value at Variable Rate: Shift the individual Customer WTP value towards the Fixed Value at the Variable Rate found in another Customer Distribution.
Shift towards Variable Value at Fixed Rate: Shift the individual Customer WTP value towards the Variable Value found in another Customer Distribution at the Fixed Rate.
Shift towards Variable Value at Variable Rate: Shift the individual Customer WTP value towards the Variable Value at the Variable Rate where both Variables are found in other Customer Distributions.
Fixed Value
This Fixed Value can be used to set the Customer's WTP, added to the Customer's WTP, or spread across all Customers in the Scale Product Set. The Customer's WTP can also be shifted towards this Fixed Value by either a Fixed or Variable Rate.
Fixed Rate
This Fixed Rate can be multiplied to the Customer's existing WTP. Or the Customer's WTP can be shifted towards another value at this Fixed Rate. For example, a Fixed Rate of 0.2 will shift the Customer's WTP by 20% of the distance towards the final value. A Fixed Rate of -0.2 will shift the Customer's WTP by 20% of the distance away from the value, while shifting at a rate greater than 1.0 will trigger a warning. If Spreading the Fixed Value Randomly by the Fixed Rate, then this Fixed Rate needs to be set between 0.0 and 1.0. A 'Spread By Fixed Rate' = 0.0 provides no randomization, while a 'Spread By Fixed Rate' = 1.0 will randomly spread between 0% and 200% of the Fixed Value across all Customers.
Variable Value Column
The row value found in this Customer Distribution is used as a Variable Value. The Variable Value can be added to the Customer's WTP or can set the Customer's WTP, or the Customer's WTP can be shifted towards this Variable Value by either a Fixed Rate or Variable Rate.
Variable Rate Column
The row value found in this Customer Distribution is used as a Variable Rate. The Variable Rate can be multiplied to the Customer's WTP, or can be the rate at which the Customer's WTP is shifted towards either a Fixed Value or Variable Value.

Advanced Options

Scale Customer Distribution Reference Column
Find the name of the Customer Distributions to scale by looking in the selected Attribute Column within the Input Product Array. For example, if the Brand of the Purchased Product is 'MyBrand' then the node can scale the values found in the 'MyBrand' column within the WTP Matrix.
Scale Customer Distribution Reference Qualifier
Scale the Customer Distributions having the same name as the Products from the 'Scale Product Set' followed by the Qualifier. For example, a Qualifier of 'Capacity' will match 'Product_One_Capacity', a Qualifier of 'Convenience' will match 'Product Two Convenience', and a Qualifier of 'Reliability' will match 'ProductThreeReliability'. Qualifiers are case-sensitive but may or may not be separated by a space, underscore, or other character. Qualifiers can also be appended to the value found in the Reference Column. The Qualifier is blank by default so the Customer Distribution matching each Product name will be scaled.
Save Randomizing Seed
A Randomizing Seed can be saved to ensure Customer Distributions are always scaled in the same way. The 'New' button will generate a new Randomized Seed. Disable the CheckBox to generate a new Randomizing Seed each time the node is run. Manually set a new Randomizing Seed if this node is copied to avoid adding bias to the overall model.
Keep Zero WTP when Demand Shredded
Customer Demand for a Product can be Shredded by setting the Customer's Willingness To Pay (WTP) value to zero in the WTP Matrix. Shredding Demand reduces the possibility of Customers switching to unlikely Products outside of their normal Consideration Set. By checking this selection, this node will not change any WTP value that is already zero.
Suppress Warnings
When 'Suppress Warnings' is switched on the node will not report any warning generated while running.
Debug Mode
When 'Debug Mode' is switched on the Output Product Array will contain a count of the number of changes made to each Customer Distribution. The Output Product Array will also contain the Debug Mode results if no Input Product Array has been provided.

Input Ports

Icon
Input Product Array (optional): The set of Products that define the Market. Each row corresponds to a Product that competes for customers in the Market. If only the name of the Focus Product is needed then the 'Input Product Array' is optional. But if the 'Scale Product Set' of Products is more complicated (for example, if the WTP of all same-Brand Products need to be scaled) then the Input Product Array is required. The 'Input Product Array' should have the following columns:
  1. Product (string): The name of the Product corresponding to a column of the same name in the 'Input WTP Matrix' or the 'No Sale' Product.
  2. Price (double): The Price of each Product in the Market. Price is needed to calculate the degree of Competitive Rivalry when determining which Products to include in the 'Scale Product Set'. Products with missing Prices are deemed to be Out-of-Stock.
  3. Description (string): The description of the Product or the full name of the Product if the Product field contains an identification number.
  4. Brand (optional): The Brand of the Product. This is needed if the 'Scale Product Set' is to include all same-Brand Products.
  5. Store (optional): The Store which sells the Product. This is needed if the 'Scale Product Set' is to include all same-Store Products.
  6. Location (string): The name of the Product Location. The Location can be a name, or it can be used flexibly to indicate the speed of delivery as 'Overnight Delivery', 'Second Day Delivery', 'Third Day Delivery', etc.
  7. Family (string): The name of the Product Family. Generally used to link together related Products. Several Product SKUs can all be part of the same Family.
  8. Category (string): The name of the Product Category. Several Product Families may be part of the same Category.
  9. Platform (string): The name of the Product Platform. The Platform is a general purpose label that can be used in any way. It can, for example, indicate whether the Product is sold both 'Online' as well as 'Offline'.
Icon
Input Willingness To Pay Matrix (double): The Willingness To Pay (WTP) Customer Distribution matrix for each Product column in the Market by each Virtual Customer row. The total number of Virtual Available Customers is equal to the number of rows in the WTP Matrix. In addition to each of the Product's WTP Customer Distributions, this 'Input WTP Matrix' can also contain two types of 'Dynamic Price' and two types of 'Dynamic Cost' Distributions that depend upon the Customers who Purchase the Product. These personalized 'Dynamic Prices' and 'Dynamic Costs' adjust the 'Static Price' and 'Static Cost' found in the 'Input Product Array' to calculate the Product's Margin. This 'Input WTP Matrix' may also contain 'Dynamic Volume' fields which allow Virtual Customers to Demand different levels of Quantity of each Product.
  1. Product01, Product02, etc (double): Each of the Products listed in the 'Input Product Array' should have a corresponding column in this 'Input WTP Matrix'. Each row represents a different Virtual Customer, and each value represents the Customer's Willingness To Pay (WTP) for each Product.
  2. Volume (double - optional): The personalized 'Dynamic Volume' of Product demanded by each Virtual Customer. For example, if the 'Input Product Array' contains a list of beverages of Volume 250ml, 330ml, 500ml, 750ml, and 1000ml then a Virtual Customer with a demanded Volume of '1000' could purchase a Quantity of either 4, 3, 2, 1, or 1 of the Products (respectively). If Customers are buying by Volume then they must purchase in whole number integers. For instance, if a Product had a Volume of 250ml but a Customer demanded 300ml then the Customer would only be able to buy 1 of that Product. Note that the excess Volume of 50ml received by the Customer is deemed to be of no value! The Price, WTP, and Consumer Surplus are all re-scaled by the relative Quantity demanded. When Customers buy in Volume then the Output Transactions field will differ from the Output Quantity field - otherwise these two values ought to be the same. Note that the 'Input Product Array' need not also contain a 'Volume' field. If the Product Volume is missing then the Product is presumed to be sold in Volumes of 1 Unit.
  3. _VOL (double - optional): The per-Product 'Dynamic Volume' (VOL) demanded by each Virtual Customer. This per-Product 'VOL' value will override the general 'Volume'. For example, a Virtual Customer buying laundry detergent might generally demand a 'Volume' of 2 (Litres) but might only demand a '_VOL' of 1 (Litre) for the concentrated detergent Product. Negative values will be replaced with a Demand Volume of zero '0'. If both of the 'Dynamic Volume' values ('Volume' and '_VOL') are missing then a default of '1' will be used.
  4. _PAV (double - optional): The Price Adjustment Variable (PAV) is the percentage adjustment to the Price (typically a Discount) a particular Customer would receive when they Purchase the Product. For example, if the Customer is entitled to a 10% Discount then the 'PAV' would be set to 0.90. The 'Price Adjustment Variable' column is identified by the Product's Name followed by a trailing 'PAV'. The 'PAV' designator can be upper-case or lower-case and may-or-may-not be separated by a space, underscore, or other single character. For example, 'Product_01_PAV' or 'Product 02 PAV' or 'Product03pav'.
  5. _PAF (double - optional): The Price Adjustment Fixed (PAF) is the fixed adjustment to the Product's Price. For example, if Customers pay different amounts for Shipping the Product then this could be modeled using the 'PAF' column. If the WTP Matrix contains both 'PAV' and 'PAF' columns, then the Price is first multiplied by the variable 'PAV' before adding the fixed 'PAF'. The 'Price Adjustment Fixed' column is also identified by the Product's Name followed by a trailing 'PAF' in a manner similar to the 'PAV' designator. The 'PAF' is a per-Unit Price. If the Customer purchases more than one Product then the 'PAF' is multiplied by the Customer's Demand.
  6. _CTS (double - optional): The Cost To Serve (CTS) is the additional Cost that must be incurred when a Product is sold to a particular Customer. This is a Dynamic Cost as some Customers are cheaper to serve than others, and is only incurred if the Customer actually Purchases the Product. The 'Cost To Serve' column is identified by the Product's Name followed by a trailing 'CTS'. The 'CTS' designator can be upper-case or lower-case and may-or-may-not be separated by a space, underscore, or other single character. For example, 'Product_01_CTS' or 'Product 02 CTS' or 'Product03cts'. The Customer's 'CTS' remains unchanged regardless of the Quantity of Product Units purchased by the Customer.
  7. _CTM (double - optional): The Cost To Make (CTM) depends not upon the individual Customer but upon the number of Customers who Purchase the Product. This 'Cost To Make' can be used to simulate the Law of Diminishing Returns. Starting from the first row in the column, each 'Cost To Make' row represents the incremental Cost of manufacturing each additional Product. If the Product is sold ten-times, then the total Dynamic Cost is the sum of the first 10 CTM rows. The 'Cost To Make' column is also identified by the Product's Name followed by a trailing 'CTM' in a manner similar to the 'CTS' designator.

Output Ports

Icon
Output Product Array: The Output Product Array is equivalent to the Input Product Array without any changes. The Product Array is simply passed through the node as a convenience to allow several of these 'Scale Purchased' nodes to be chained together. When 'Debug Mode' is switched on the Output Product Array will contain a count of the number of changes made to each Customer Distribution. The Output Product Array will also contain the Debug Mode results if no Input Product Array has been provided. The Debug Mode output columns include:
  1. Distribution: The Customer Distribution found in the Input WTP Matrix.
  2. Updates: The number of changes that were made to the individual Customer WTP values within the Customer Distribution.
Icon
Output Willingness To Pay Matrix: The scaled Willingness To Pay (WTP) Customer Distribution matrix for each Product column in the Market by each Virtual Customer row. The output Willingness To Pay values for individual Customers have been scaled depending upon whether the Customer purchased the Product and whether the Product is part of the 'Scale Product Set'. This scaled WTP Matrix can be directly connected to a downstream 'Simulate Market' or 'Profit Engine' node.

Views

This node has no views

Workflows

Links

Developers

You want to see the source code for this node? Click the following button and we’ll use our super-powers to find it for you.