DiffusionSocial diffusion via direct contacts and/or a basic conversion rate |
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:
portA
portB
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.
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
otherAdopters |
Value: unspecified Type: People (#) Description: Other adopters involved in influencing potential adopters |
---|---|
otherPopulation |
Value: unspecified Type: People (#) Description: Other potential contacts that are neighter adopters or potential adopters |
contactRate |
Value: unspecified Type: Rate (1/s) Description: Social contacts per person per period for adopters |
fractionalAdoptionRate |
Value: unspecified Type: Rate (1/s) Description: Basic conversion rate independent from social contacts |
adoptionFraction |
Value: unspecified Type: Fraction Description: Fraction of social contacts that will result in adoption |
hasConstantOtherAdopters |
Value: false Type: Boolean Description: = true, if other adopters are given by the parameter and not by the continuous input |
hasConstantOtherPopulation |
Value: false Type: Boolean Description: = true, if other population is given by the parameter and not by the continuous input |
hasConstantContactRate |
Value: false Type: Boolean Description: = true, if the rate of social contacts is given by the parameter and not by the continuous input |
hasConstantFractionalAdoptionRate |
Value: false Type: Boolean Description: = true, if the fractional adoption rate is given by the parameter and not by the continuous input |
hasConstantAdoptionFraction |
Value: false Type: Boolean Description: = true, if true the adoption fraction is given by the parameter and not by the continuous input |
nextStageIsInfluencing |
Value: true Type: Boolean Description: = true, if true the next stage (adopters) are influencing potential adopters |
portA |
Type: FlowPort Description: Port connected to stock of potential adopters |
|
---|---|---|
portB |
Type: FlowPort Description: Port connected to stock of adopters |
|
dataOut |
Type: DataOutPort Description: Expandable connector for output |
|
dataIn |
Type: DataInPort Description: Expandable connector for input |
totalAdopters |
Type: Add_2 Description: Sum of adopters and other adopters |
|
---|---|---|
totalPotentialContacts |
Type: Add_3 Description: Total population with regard to potential contacts for adopters |
|
adjustedTotalAdopters |
Type: Add_2 Description: Depending on whether they influence or not the next stage (adopters) has to be added |
|
adoptersNotInfluencing |
Type: Gain Description: Input is multiplied by constant parameter |
|
adoptersInfluencing |
Type: PassThrough Description: Output is identical to input |
|
doNotAddAdopters |
Type: ConstantConverter Description: Do not add adopters to popoulation as they are already included |
|
addAdoptersToPopulation |
Type: PassThrough Description: Adopters are not influencing and thus have to be added to potential contacts |
|
potentialAdopters |
Type: FlowPortSensor Description: Potential Adopters as given by stock connected to port A |
|
adopters |
Type: FlowPortSensor Description: Level of adopters as given by stock connected to port B |
|
converting |
Type: Transition Description: Conversion of potential adopters to adopters |
|
parOtherPopulation |
Type: ConstantConverter Description: Constant opther population (optional) |
|
u_otherPopulation |
Type: PassThrough Description: Continuous input of other population (neither adopter nor potential adopter) |
|
potAdoptConcentration |
Type: Division Description: Concentration of potential adopters |
|
u_ContactRate |
Type: PassThrough Description: Rate of social contacts for adopters |
|
parContactRate |
Type: ConstantConverter Description: Social contact rate for adopters (people per people per period) |
|
contactsAdopters |
Type: Product_2 Description: Contacts with adopters per period |
|
contactsWithPotAdopt |
Type: Product_2 Description: Contacts of adopters with potential adopters |
|
u_AdoptionFraction |
Type: PassThrough Description: Conversion propability for interaction of potential adopters with adopters |
|
conversionRate |
Type: Product_2 Description: Rate of conversion |
|
u_FractAdoptRate |
Type: PassThrough Description: Continuous fractional adoption rate |
|
adopting |
Type: ProportionalTransition Description: Conversion independent from social contacts |
|
parAdoptionFraction |
Type: ConstantConverter Description: Constant adoption fraction (optional) |
|
totalAdoptionRate |
Type: Add_2 Description: Sum of two inputs |
|
parOtherAdopters |
Type: ConstantConverter Description: Constant opther adopters (optional) |
|
u_otherAdopters |
Type: PassThrough Description: Continuous input of other adopters envolved in influencing potential adopters |
|
parFractAdoptRate |
Type: ConstantConverter Description: Constant fractinal adoption rate (optional) |
BusinessSimulation.Examples Further extending the first example to explain new product diffusion |
|
BusinessSimulation.Examples Classical epidemic model by Kermack and McKendrick |
DataOutPort
and DataInPort
changed to encapsulated expandable connector
classes in v2.1.0.unspecified
in v2.1.0.