| Title: | Estimates Economic Variables for Word-of-Mouth-Campaigns |
|---|---|
| Description: | Methods for estimating profit, profit-maximizing price, demand and consumer surplus of Word-of-Mouth-campaigns on mean-field networks. |
| Authors: | Michael Scholz [cre, aut], Thomas Woehner [aut], Ralf Peters [ctb] |
| Maintainer: | Michael Scholz <[email protected]> |
| License: | GPL-3 |
| Version: | 1.2.0 |
| Built: | 2026-05-19 10:11:11 UTC |
| Source: | https://github.com/cran/WordOfMouth |
This packages provides classes, methods and functions for modeling Word-of-Mouth-campaigns. General model assumptions are:
monopoly market
no variable costs
network is the mean-field case of percolation
only those persons who bought a product will forward information about it
| Package: | WordOfMouth |
| Type: | Package |
| Version: | 1.2.0 |
| Date: | 2025-06-02 |
| License: | GPL-3 |
| Depends: | R (>= 3.0.1), methods |
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
Compares the welfare of the WoM campaign to the welfare of a fully informed market assuming a uniformly distributed willingness to pay.
compareToFIMarket(campaign)compareToFIMarket(campaign)
campaign |
Word-of-Mouth campaign as instance of class |
Data frame containing the profit-maximizing price, the resulting demand, profit, consumer surplus and economic welfare for a fully informed market and a WoM market.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
computeOptimalPrice computeProfit computeConsumerSurplus
network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) comparison <- compareToFIMarket(campaign) print(comparison)network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) comparison <- compareToFIMarket(campaign) print(comparison)
Computes the expected cumulative consumer surplus for a given Word-of-Mouth campaign at a given price.
computeConsumerSurplus(campaign, price)computeConsumerSurplus(campaign, price)
campaign |
Word-of-Mouth campaign as instance of class |
price |
Price as number in [0; 1] where 0 is the minimal and 1 is the maximal price. |
Expected cumulative consumer surplus.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
computeDemand computeProfit computeOptimalPrice
network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) surplus <- computeConsumerSurplus(campaign, price = 0.5) print(surplus)network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) surplus <- computeConsumerSurplus(campaign, price = 0.5) print(surplus)
Computes the expected demand for a given Word-of-Mouth campaign at a given price.
computeDemand(campaign, price)computeDemand(campaign, price)
campaign |
Word-of-Mouth campaign as instance of class |
price |
Price as number in [0; 1] where 0 is the minimal and 1 is the maximal price. |
Expected demand in number of persons.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
computeRoundDemand computeProfit computeConsumerSurplus computeOptimalPrice
network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) demand <- computeDemand(campaign, price = 0.5) print(demand)network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) demand <- computeDemand(campaign, price = 0.5) print(demand)
Computes the information costs that need to be surpassed in order to generate a higher profit than in a transparent market.
computeInformationCostsThreshold(campaign)computeInformationCostsThreshold(campaign)
campaign |
Word-of-Mouth campaign as instance of class |
Information costs in [0; 1] that need to be surpassed in order to generate a higher profit than in a transparent market.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
computeOptimalPrice computeProfit
network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) threshold <- computeInformationCostsThreshold(campaign) print(threshold)network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) threshold <- computeInformationCostsThreshold(campaign) print(threshold)
Computes the profit-maximizing for a given Word-of-Mouth campaign.
computeOptimalPrice(campaign)computeOptimalPrice(campaign)
campaign |
Word-of-Mouth campaign as instance of class |
Profit-maximizing price in [0; 1] where 0 is the lowest possible and 1 is the highest possible price.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
computeDemand computeProfit computeConsumerSurplus
network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) price <- computeOptimalPrice(campaign) profit <- computeProfit(campaign, price) print(price) print(profit)network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) price <- computeOptimalPrice(campaign) profit <- computeProfit(campaign, price) print(price) print(profit)
Computes the expected profit for a given Word-of-Mouth campaign at a given price.
computeProfit(campaign, price)computeProfit(campaign, price)
campaign |
Word-of-Mouth campaign as instance of class |
price |
Price as number in [0; 1] where 0 is the minimal and 1 is the maximal price. |
Expected profit as number of persons times price.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
computeDemand computeConsumerSurplus computeOptimalPrice
network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) profit <- computeProfit(campaign, price = 0.5) print(profit)network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) profit <- computeProfit(campaign, price = 0.5) print(profit)
Computes the expected demand for a given Word-of-Mouth campaign at a given price and a given round or a given round and all previous rounds
computeRoundDemand(campaign, price, round, previousRounds = TRUE)computeRoundDemand(campaign, price, round, previousRounds = TRUE)
campaign |
Word-of-Mouth campaign as instance of class |
price |
Price as number in [0; 1] where 0 is the minimal and 1 is the maximal price. |
round |
Round at which or until which the demand per round will be computed. |
previousRounds |
Should the demand of all previous rounds be returned or not. Default is TRUE. |
Expected demand in number of persons. Note that the first value in the demand vector is the number of initial consumers when previousRounds is TRUE. The number of initial consumers is (1-p)*seedingSize.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
computeDemand computeProfit computeConsumerSurplus computeOptimalPrice
network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) demand <- computeRoundDemand(campaign, price = 0.5, round = 3) print(demand)network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) demand <- computeRoundDemand(campaign, price = 0.5, round = 3) print(demand)
Computes the WoM intensity in a given Word-of-Mouth campaign.
computeWoMIntensity(campaign)computeWoMIntensity(campaign)
campaign |
Word-of-Mouth campaign as instance of class |
WoM intensity in [0; 1].
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) intensity <- computeWoMIntensity(campaign) print(intensity)network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) intensity <- computeWoMIntensity(campaign) print(intensity)
Calculates the impact of incentivizing WoM communication. Given a start forward probability and an expected end forward, probability this function calculates changes in demand, consumer surplus, profit, cost for incentivizing and economic welfare for i) keeping the optimal price for the start forward probability or ii) setting the optimized price for the expected forward probability.
incentivizeWoM(campaign, expProb, rewardCost = 0, keepStartPrice = FALSE)incentivizeWoM(campaign, expProb, rewardCost = 0, keepStartPrice = FALSE)
campaign |
Word-of-Mouth campaign as instance of class |
expProb |
Expected forward probability when incentivizing WoM. |
rewardCost |
Cost per consumer acquired through the incentivization strategy. |
keepStartPrice |
Logical value indicating whether or not (default) the optimized price for the start forward probability will also used for the expected forward probability. |
Data frame containing the profit-maximizing price, the resulting demand, profit, consumer surplus and economic welfare for the start WoM intensity and the expected WoM intensity.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
computeOptimalPrice computeProfit computeConsumerSurplus
network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) incentivization <- incentivizeWoM(campaign = campaign, expProb = 0.25, rewardCost = 0.05) print(incentivization)network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) incentivization <- incentivizeWoM(campaign = campaign, expProb = 0.25, rewardCost = 0.05) print(incentivization)
WoMCampaign objectShows a WoMCampaign object
## S4 method for signature 'WoMCampaign' show(object)## S4 method for signature 'WoMCampaign' show(object)
object |
An instance of the |
Shows an WoMCampaign object.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
WoMNetwork objectShows a WoMNetwork object
## S4 method for signature 'WoMNetwork' show(object)## S4 method for signature 'WoMNetwork' show(object)
object |
An instance of the |
Shows an WoMNetwork object.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
WoMCampaign
This class represents a WoM campaign that is performed on a given network to promote a durable good with no variable costs.
network(WoMNetwork) The network to which the WoM campaign is applied.
seedingSize(numeric) Number of consumers who are initially informed about the good by the firm.
forwardProbability(numeric) Probability at which a consumer forwards information about the good to others.
informationCosts(numeric) Costs to information one consumer about the good.
Objects can be created by calls of the form
new("WoMCampaign", ...). This S4 class describes WoMNetwork objects.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) print(campaign)network <- new("WoMNetwork", size = 1000, avgConnections = 5) campaign <- new("WoMCampaign", network = network, seedingSize = 10, forwardProbability = 0.2) print(campaign)
WoMNetwork
This class represents an average random graph.
size(numeric) The number of consumers in the network.
avgConnections(numeric) Average number of connections per consumer.
Objects can be created by calls of the form
new("WoMNetwork", ...). This S4 class describes WoMNetwork objects.
Michael Scholz [email protected]
Thomas Woehner [email protected]
Ralf Peters [email protected]
network <- new("WoMNetwork", size = 1000, avgConnections = 5) print(network)network <- new("WoMNetwork", size = 1000, avgConnections = 5) print(network)