社会を<モデル>でみる:数理社会学への招待
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)