modelDiffusion

Social diffusion via direct contacts and/or a basic conversion rate

Extends from Icons.SubsystemActuator (Icon for subsystems with flow ports).

Information

This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.

This is more or less the classical Bass diffusion model [5] that explains how new products get adopted in a population:  Potential adopters turn into adopters being affected either by advertising or promotion (i.e., as innovators) or by social interaction ("word of mouth") with adopters (i.e., as imitators).

The basic model for diffusion can also be used to model the spread of infectious diseases (→SIR). Since the disease is ultimately spread by contact with an infected person, the fractionalAdoptionRate in this case should be zero.

While the structure in principle folllows Sterman's implementation [3, chapter 9], the component has been put in a more general form. We have to distinguish the following subgroups that make up the total population of potential contacts for social interaction:

  • Potential adopters ("susceptible")—the stock connected to portA

  • Adopters ("infected")—the stock connected to portB

  • Other population ("immune") the sub population that is neither adopter or potential adopter

  • Other adopters ("other infected") the sub population that is also influencing potential adopters, but not the "next stage" (adopters/infected)

Depending upon the structural parameter nextStageIsInfluencing we may choose to take the converted adopters out of the group of influencers, e.g., a freshly converted adopter may not yet be entusiastic enough, while more elaborate epidemic models like the SEIR model distinguish an exposed stage, that is not yet infectious.

Implementation

The behavior of the component is exactly specified by the following equations:


totalPopulation = potentialAdopters + otherPopulation + adopters + otherAdopters
adoptionRate = potentialAdopters · fractionalAdoptionRate
conversionRate = potentialAdopters·(otherAdopters [+ adopters])·adoptionFraction·contactRate / totalPopulation
totalAdoptionRate = adoptionRate + conversionRate

Notes

  • All else being equal the process will produce S-shaped growth of adopters.

  • If advertising has no effect there needs to be a seed of initial adopters to set off the dynamics.

  • The classical Bass model only has two parameters. This can be obtained as a special case of the given structure by simply setting contactRate and totalPopulation to 1. The parameters fractionalAdoptionRate and adoptionFraction then correspond to the parameters used by Bass (note: the units for adoptionFraction are then different.

Parameters

TypeNameDefaultDescription
StringiconLabel (from SubsystemActuator)""
PeopleotherAdoptersunspecifiedOther adopters involved in influencing potential adopters
PeopleotherPopulationunspecifiedOther potential contacts that are neighter adopters or potential adopters
RatecontactRateunspecifiedSocial contacts per person per period for adopters
RatefractionalAdoptionRateunspecifiedBasic conversion rate independent from social contacts
FractionadoptionFractionunspecifiedFraction of social contacts that will result in adoption
Structural Parameters
BooleanhasConstantOtherAdoptersfalse= true, if other adopters are given by the parameter and not by the continuous input
BooleanhasConstantOtherPopulationfalse= true, if other population is given by the parameter and not by the continuous input
BooleanhasConstantContactRatefalse= true, if the rate of social contacts is given by the parameter and not by the continuous input
BooleanhasConstantFractionalAdoptionRatefalse= true, if the fractional adoption rate is given by the parameter and not by the continuous input
BooleanhasConstantAdoptionFractionfalse= true, if true the adoption fraction is given by the parameter and not by the continuous input
BooleannextStageIsInfluencingtrue= true, if true the next stage (adopters) are influencing potential adopters

Connectors

TypeNameDefaultDescription
Interfaces.Connectors.FlowPortportAPort connected to stock of potential adopters
Interfaces.Connectors.FlowPortportBPort connected to stock of adopters
DataOutPortdataOutExpandable connector for output
DataInPortdataInExpandable connector for input

Contents

NameDescription
DataOutPortOutput connector
DataInPortInput connector

Revisions

  • Connectors DataOutPort and DataInPort changed to encapsulated expandable connector classes in v2.1.0.

  • Values for optional parameter inputs changed to unspecified in v2.1.0.