最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

R語言SIR模型網(wǎng)絡(luò)結(jié)構(gòu)擴(kuò)散過程模擬SIR模型(Susceptible Infected Recovered )代碼實(shí)

2023-05-23 23:28 作者:拓端tecdat  | 我要投稿

全文鏈接:http://tecdat.cn/?p=14593

最近我們被客戶要求撰寫關(guān)于SIR模型的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。

與普通的擴(kuò)散研究不同,網(wǎng)絡(luò)擴(kuò)散開始考慮網(wǎng)絡(luò)結(jié)構(gòu)對于擴(kuò)散過程的影響。這里介紹一個(gè)使用R模擬網(wǎng)絡(luò)擴(kuò)散的例子

基本的算法非常簡單:生成一個(gè)網(wǎng)絡(luò):g(V, E)。隨機(jī)選擇一個(gè)或幾個(gè)節(jié)點(diǎn)作為種子(seeds)。每個(gè)感染者以概率p(可視作該節(jié)點(diǎn)的傳染能力,通常表示為ββ)影響與其相連的節(jié)點(diǎn)。其實(shí)這是一個(gè)最簡單的SI模型在網(wǎng)絡(luò)中的實(shí)現(xiàn)。S表示可感染(susceptible), I表示被感染(infected)。易感態(tài)-感染態(tài)-恢復(fù)態(tài)(SIR)模型用以描述水痘和麻疹這類患者能完全康復(fù)并獲得終身免疫力的流行病。對于SIR流行病傳播模型,任意時(shí)刻節(jié)點(diǎn)只能處于易感態(tài)(S)或感染態(tài)(I)或恢復(fù)態(tài)(R)。易感態(tài)節(jié)點(diǎn)表示未被流行病感染的個(gè)體,且可能被感染;感染態(tài)節(jié)點(diǎn)表示已經(jīng)被流行病感染且具有傳播能力;恢復(fù)態(tài)節(jié)點(diǎn)則表示曾感染流行病且完全康復(fù)。與SIS模型類似,每一時(shí)間步內(nèi),每個(gè)感染態(tài)節(jié)點(diǎn)以概率λλ嘗試感染它的鄰居易感態(tài)節(jié)點(diǎn),并以概率γγ變?yōu)榛謴?fù)態(tài)。SIR模型可以表達(dá)為:

S = S(t)是易感個(gè)體的數(shù)量, I = I(t)是被感染的個(gè)體的數(shù)目, R = R(t)是恢復(fù)的個(gè)體的數(shù)目。

第二組因變量代表在三個(gè)類別的總?cè)丝诘谋壤?。所以,如果N是總?cè)丝冢?90萬在我們的例子),我們有

S(T)= S(T)/ N,人口的易感部分, Ⅰ(T)= I(t)的/ N的人口感染分?jǐn)?shù)并 R(T)= R(t)的/ N,人口的康復(fù)部分。

解這個(gè)微分方程,我們可以得到累計(jì)增長曲線的表達(dá)式。有趣的是,這是一個(gè)logistic增長,具有明顯的S型曲線(S-shaped curve)特征。該模型在初期跨越臨界點(diǎn)之后增長較快,后期則變得緩慢。因而可以用來描述和擬合創(chuàng)新擴(kuò)散過程(diffusion of innovations)。當(dāng)然,對疾病傳播而言,SI模型是非常初級的(naive),主要因?yàn)槭芨腥镜膫€(gè)體以一定的概率恢復(fù)健康,或者繼續(xù)進(jìn)入可以被感染狀態(tài)(S,據(jù)此擴(kuò)展為SIS模型)或者轉(zhuǎn)為免疫狀態(tài)(R,據(jù)此擴(kuò)展為SIR模型)。免疫表示為R,用γγ代表免疫概率(removal or recovery rate)。對于信息擴(kuò)散而言,這種考慮暫時(shí)是不需要的。

第一步,生成網(wǎng)絡(luò)。

規(guī)則網(wǎng)

g =graph.tree(size, children =2); plot(g)

g =graph.star(size); plot(g)

g =graph.full(size); plot(g)

g =graph.ring(size); plot(g)

g =connect.neighborhood(graph.ring(size), 2); plot(g) # 最近鄰耦合網(wǎng)絡(luò)

# 隨機(jī)網(wǎng)絡(luò)g =erdos.renyi.game(size, 0.1)# 小世界網(wǎng)絡(luò) g = rewire.edges(erdos.renyi.game(size, 0.1), prob = 0.8 )# 無標(biāo)度網(wǎng)絡(luò) g =barabasi.game(size) ; plot(g)

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

用航空公司復(fù)雜網(wǎng)絡(luò)對疫情進(jìn)行建模

左右滑動查看更多

01

02

03

04

第二步,隨機(jī)選取一個(gè)或n個(gè)隨機(jī)種子。?

# initiate the diffusers seeds_num =1 diffusers =sample(V(g),seeds_num) ; diffusers ## + 1/50 vertex: ## [1] 43 infected =list() infected[[1]]=diffusers#

第三步,傳染能力

在這個(gè)簡單的例子中,每個(gè)節(jié)點(diǎn)的傳染能力是0.5,即與其相連的節(jié)點(diǎn)以0.5的概率被其感染,每個(gè)節(jié)點(diǎn)的回復(fù)能力是0.5,即其以0.5的概率被其回復(fù)。在R中的實(shí)現(xiàn)是通過拋硬幣的方式來實(shí)現(xiàn)的。

## [1] 0

顯然,這很容易擴(kuò)展到更一般的情況,比如節(jié)點(diǎn)的平均感染能力是0.128,那么可以這么寫:節(jié)點(diǎn)的平均回復(fù)能力是0.1,那么可以這么寫

p =0.128 coins =c(rep(1, p*1000), rep(0,(1-p)*1000)) sample(coins, 1, replace=TRUE, prob=rep(1/n, n)) ## [1] 0 n =length(coins2) sample(coins2, 1, replace=TRUE, prob=rep(1/n, n)) ## [1] 0

當(dāng)然最重要的一步是要能按照“時(shí)間”更新網(wǎng)絡(luò)節(jié)點(diǎn)被感染的信息。

keep =unlist(lapply(nearest_neighbors[,2], toss)) new_infected =as.numeric(as.character(nearest_neighbors[,1][keep >=1])) diffusers =unique(c(as.numeric(diffusers), new_infected)) return(diffusers)} set.seed(1);

開啟擴(kuò)散過程!

先看看S曲線吧:

# # "growth_curve"num_cum =unlist(lapply(1:i, function(x) length(infected[[x]]) )) p_cum =num_cum time =1:i ## Large initial population size (X=1000) parms <-c(beta=0.01, gamma=0.1) x0 <-c(S=49,I=1,R=0)a <-c("beta*S*I","gamma*I") nu <-matrix(c(-1,0,+1,-1,0,+1),nrow=3,byrow=TRUE) out <-ssa(x0,a,nu,parms,tf=4,simName="SIR model")

為了可視化這個(gè)擴(kuò)散的過程,我們用紅色來標(biāo)記被感染者。

# generate a palette# plot(g, layout =layout.old) set.seed(1)# library(animation)# start the plot m =1



same=numeric(0) for(m in 2:length(health)) if(length(setdiff(health[[m ]],health[[m -1 ]]) )==0){same=c(same,m) } health=health[-same] infected=infected[-same]#

如同在Netlogo里一樣,我們可以把網(wǎng)絡(luò)擴(kuò)散與增長曲線同時(shí)展示出來:

set.seed(1) # start the plot m =1 p_cum=numeric(0) h_cum=numeric(0) i_cum=numeric(0) while( m<50 ) {# start the plot layout(matrix(c(1, 2, 1, 3), 2,2, byrow =TRUE), widths=c(3,1), heights=c(1, 1)) V(g)$color = "white" V(g)$color[V(g)%in%infected[[m ]] ] = "red" V(g)$color[V(g)%in%health[[m ]]] = "green" if(m<=length(infected)) plot(pp~time, type ="h", ylab ="PDF", xlab ="Time",xlim =c(0,i), ylim =c(0,1), frame.plot =FALSE) m =m +1 }








點(diǎn)擊文末?“閱讀原文”

獲取全文完整代碼數(shù)據(jù)資料。

本文選自《R語言SIR模型(Susceptible Infected Recovered Model)代碼sir模型實(shí)例》。

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

Matlab用回歸、SEIRD模型、聚類預(yù)測美國總統(tǒng)大選、新冠疫情對中美經(jīng)濟(jì)的影響
數(shù)據(jù)分享|Python卷積神經(jīng)網(wǎng)絡(luò)CNN身份識別圖像處理在疫情防控下口罩識別、人臉識別
Python用RNN神經(jīng)網(wǎng)絡(luò):LSTM、GRU、回歸和ARIMA對COVID19新冠疫情人數(shù)時(shí)間序列預(yù)測
【視頻】Python用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)對不穩(wěn)定降雨量時(shí)間序列進(jìn)行預(yù)測分析|數(shù)據(jù)分享
深度學(xué)習(xí)實(shí)現(xiàn)自編碼器Autoencoder神經(jīng)網(wǎng)絡(luò)異常檢測心電圖ECG時(shí)間序列spss modeler用決策樹神經(jīng)網(wǎng)絡(luò)預(yù)測ST的股票
Python中TensorFlow的長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)、指數(shù)移動平均法預(yù)測股票市場和可視化
RNN循環(huán)神經(jīng)網(wǎng)絡(luò) 、LSTM長短期記憶網(wǎng)絡(luò)實(shí)現(xiàn)時(shí)間序列長期利率預(yù)測
結(jié)合新冠疫情COVID-19股票價(jià)格預(yù)測:ARIMA,KNN和神經(jīng)網(wǎng)絡(luò)時(shí)間序列分析
深度學(xué)習(xí):Keras使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類分析新聞組數(shù)據(jù)
用PyTorch機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
PYTHON用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)的參數(shù)優(yōu)化方法預(yù)測時(shí)間序列洗發(fā)水銷售數(shù)據(jù)
Python用Keras神經(jīng)網(wǎng)絡(luò)序列模型回歸擬合預(yù)測、準(zhǔn)確度檢查和結(jié)果可視化
R語言深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò) (CNN)對 CIFAR 圖像進(jìn)行分類:訓(xùn)練與結(jié)果評估可視化
深度學(xué)習(xí):Keras使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類分析新聞組數(shù)據(jù)
Python用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)對不穩(wěn)定降雨量時(shí)間序列進(jìn)行預(yù)測分析
R語言深度學(xué)習(xí)Keras循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)模型預(yù)測多輸出變量時(shí)間序列
R語言KERAS用RNN、雙向RNNS遞歸神經(jīng)網(wǎng)絡(luò)、LSTM分析預(yù)測溫度時(shí)間序列、 IMDB電影評分情感
Python用Keras神經(jīng)網(wǎng)絡(luò)序列模型回歸擬合預(yù)測、準(zhǔn)確度檢查和結(jié)果可視化
Python用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)對不穩(wěn)定降雨量時(shí)間序列進(jìn)行預(yù)測分析
R語言中的神經(jīng)網(wǎng)絡(luò)預(yù)測時(shí)間序列:多層感知器(MLP)和極限學(xué)習(xí)機(jī)(ELM)數(shù)據(jù)分析報(bào)告
R語言深度學(xué)習(xí):用keras神經(jīng)網(wǎng)絡(luò)回歸模型預(yù)測時(shí)間序列數(shù)據(jù)
Matlab用深度學(xué)習(xí)長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對文本數(shù)據(jù)進(jìn)行分類
R語言KERAS深度學(xué)習(xí)CNN卷積神經(jīng)網(wǎng)絡(luò)分類識別手寫數(shù)字圖像數(shù)據(jù)(MNIST)
MATLAB中用BP神經(jīng)網(wǎng)絡(luò)預(yù)測人體脂肪百分比數(shù)據(jù)
Python中用PyTorch機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
R語言實(shí)現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進(jìn)行回歸數(shù)據(jù)分析
SAS使用鳶尾花(iris)數(shù)據(jù)集訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)(ANN)模型
【視頻】R語言實(shí)現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進(jìn)行回歸數(shù)據(jù)分析
Python使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類
R語言用神經(jīng)網(wǎng)絡(luò)改進(jìn)Nelson-Siegel模型擬合收益率曲線分析
R語言基于遞歸神經(jīng)網(wǎng)絡(luò)RNN的溫度時(shí)間序列預(yù)測
R語言神經(jīng)網(wǎng)絡(luò)模型預(yù)測車輛數(shù)量時(shí)間序列
R語言中的BP神經(jīng)網(wǎng)絡(luò)模型分析學(xué)生成績
matlab使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對序列數(shù)據(jù)進(jìn)行分類
R語言實(shí)現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測和結(jié)果可視化
用R語言實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實(shí)例
使用PYTHON中KERAS的LSTM遞歸神經(jīng)網(wǎng)絡(luò)進(jìn)行時(shí)間序列預(yù)測
python用于NLP的seq2seq模型實(shí)例:用Keras實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯
用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類


R語言SIR模型網(wǎng)絡(luò)結(jié)構(gòu)擴(kuò)散過程模擬SIR模型(Susceptible Infected Recovered )代碼實(shí)的評論 (共 條)

分享到微博請遵守國家法律
会宁县| 黄大仙区| 玉屏| 昌图县| 勐海县| 微山县| 马关县| 大英县| 德惠市| 中江县| 瑞安市| 甘南县| 汾阳市| 竹山县| 镇江市| 吉隆县| 正定县| 肇州县| 新巴尔虎右旗| 托克逊县| 如皋市| 吉安县| 仁怀市| 克拉玛依市| 丰台区| 永平县| 黄浦区| 习水县| 尉犁县| 满城县| 时尚| 土默特右旗| 平邑县| 荥经县| 义马市| 梓潼县| 加查县| 南通市| 龙岩市| 英吉沙县| 哈尔滨市|