Learn R Programming

npdsim

The goal of npdsim is to simulate the demand for ready to launch new products over their life cycle, and to simulate their attributes. The generated data will help you test and compare your new product demand forecasting approaches.

The simulation of demand is based on the idea that each product has a demand level and a demand shape where level is the cumulative demand of the product over a specific number of time periods (the number of time periods is set by the user), and shape is the normalized demand over those periods. The attributes of each product are assumed to be linked to its shape and level.

Installation

You can install the development version of npdsim from GitHub with:

# install.packages("pak")
pak::pak("mohammedhichame/npdsim")

Example

This is a basic example which shows you how to simulate the demand and attributes for 200 products:

library(npdsim)

npd_data1 <- npd_data_sim(products_number=200,
                         periods_number=40,
                         shape_number=7,
                         level_number=30)

str(npd_data1)
#> 'data.frame':    8000 obs. of  13 variables:
#>  $ product_id : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ time       : num  1 2 3 4 5 6 7 8 9 10 ...
#>  $ demand     : num  8 18 22 27 32 43 50 56 72 78 ...
#>  $ attribute10: num  0.224 0.224 0.224 0.224 0.224 ...
#>  $ attribute8 : num  0.924 0.924 0.924 0.924 0.924 ...
#>  $ attribute1 : num  0.0923 0.0923 0.0923 0.0923 0.0923 ...
#>  $ attribute5 : num  0.393 0.393 0.393 0.393 0.393 ...
#>  $ attribute6 : num  0.74 0.74 0.74 0.74 0.74 ...
#>  $ attribute4 : num  0.594 0.594 0.594 0.594 0.594 ...
#>  $ attribute7 : num  0.618 0.618 0.618 0.618 0.618 ...
#>  $ attribute3 : num  0.282 0.282 0.282 0.282 0.282 ...
#>  $ attribute2 : num  0.368 0.368 0.368 0.368 0.368 ...
#>  $ attribute9 : num  0.335 0.335 0.335 0.335 0.335 ...

We show below, the plots of demand for the products with product_id=1,2,…,5:

You can also generate the demand over only the introduction and growth phases of products. For example :


npd_data2 <- npd_data_sim(products_number=200,
                         periods_number=40,
                         shape_number=7,
                         level_number=30,
                         shape_type="intro & growth")

We can also only simulate the demand or attributes of products using the functions demand_sim or attribute_sim_dep (or also attribute_sim_ind).

Copy Link

Version

Install

install.packages('npdsim')

Monthly Downloads

144

Version

1.0.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Mohammed Hichame BENBITOUR

Last Published

April 9th, 2025

Functions in npdsim (1.0.0)

shape_sim_random

Generate random (Bass, Trapezoidal or Triangular) shapes
shape_sim_ig

Generate generic shapes for the introduction and growth phases
attribute_sim_ind

Simulate the Attributes with the Assumption of Independent Attributes
npdsim_bass

Calculate the Bass probability
demand_sim

Simulate the demand for new products
attribute_sim_dep

Simulate the Attributes with the Assumption of Dependent Attributes
shape_sim

Generate the shape of demand
shape_sim_bass

Generate generic Bass shapes
npd_data_sim

Simulate the demand and attributes for new products
shape_sim_trapezoid

Generate trapezoidal shapes
shape_sim_triangle

Generate triangular shapes