社会を＜モデル＞でみる：数理社会学への招待

18章：なぜ宣伝しなくても流行がおこるのか。

モデルの説明：

x:流行に影響されていない人

y:流行に影響されている人

z:以前流行に影響されてが、もう影響されていない

t:時間

\delta x = -\alpha * x[t] * y[t] * \delta t

\delta y = (\alpha * x[t] * y[t] – \beta * y[t]) * \delta t

\delta z = \beta * y[t] * \delta t

# initialization vogue<-function(alpha, beta, inits, max_time){ dt=0.01 max_timeR = max_time - 1 x=c(inits[1], rep(0, max_timeR)) y=c(inits[2], rep(0, max_timeR)) z=c(inits[3], rep(0, max_timeR)) # main loop for (t in 1:max_timeR) { x[(t+1)] = x[t] - alpha*x[t]*y[t]*dt y[(t+1)] = y[t] + (alpha*x[t]*y[t] - beta*y[t])*dt z[(t+1)] = z[t] + beta*y[t]*dt } return(data.frame(x,y,z)) } vogue.plot<-function(dat) { plot(dat$x,type="l",lwd=4,col="blue", main="Typical Time Series of \"Vogue\" ", xlab="time", ylab="Number of People",cex.lab=1.3,ylim=c(0,dat$x[1])) lines(dat$y,type="l",lwd=4,col="red") lines(dat$z,type="l",lwd=4,col="green") legend("right", c("affected","not affected", "no longer affected"), col=c("red","blue","green"),lty=rep(1,3),lwd=4) } # running functions res<-vogue(0.0001, 0.1, c(10000, 100, 0), 5000) vogue.plot(res)