神経筋接合シュミレーション−2
こちらの手直しをしようと思っている。
今回のポイントは
1、行列を使う
2、神経と筋に数を一緒にしない
3、tabulate()を使う
*tabulate();数を数え上げる
ー数は一以上から整数値でカウント(ただし、小数点ありの場合は切り捨て)
example(tabulate)
tabult> tabulate(c(2,3,5))
[1] 0 1 1 0 1
tabult> tabulate(c(2,3,3,5), nbins = 10)
[1] 0 1 2 0 1 0 0 0 0 0
tabult> tabulate(c(-2,0,2,3,3,5)) # -2 and 0 are ignored
[1] 0 1 2 0 1
tabult> tabulate(c(-2,0,2,3,3,5), nbins = 3)
[1] 0 1 2
tabult> tabulate(factor(letters[1:10]))
[1] 1 1 1 1 1 1 1 1 1 1
> letters[1:10]
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
> factor(letters[1:10])
[1] a b c d e f g h i j
Levels: a b c d e f g h i j
> tabulate(letters[1:10])
以下にエラー tabulate(letters[1:10]) :
'bin' は数値または因子でなければなりません
> tabulate(c(1.5,2,3))
[1] 1 1 1
> tabulate(c(3/2,1/3,3.8))
[1] 1 0 1
> tabulate(c(2/3,1/3,3.8,3.8,10))
[1] 0 0 2 0 0 0 0 0 0 1
> tabulate(c(3,3.8,3.8,5.2,6))
[1] 0 0 3 0 1 1
やってみた。
# 筋肉細胞の数をN、神経細胞の数をnとする(N>nが現実っぽい)
# 時間経過が縦にくるように、筋肉細胞は列に並べる
# 1回の単位時間が経つと全ての神経が違う筋肉支配をしようと試みる
# 新たな支配が上手くいくかは、その時における神経の支配筋肉数に比例するとする
#基本仮定は前回の僕の想定と同じにする
N<- 1000
n<-100
time<-1000
kinnniku<-matrix(0 , time , N)
sinnkei<-matrix(0 , time , n)
p<- sample(1:n , N, replace = T)
p
kinnniku[1, ] <-p
sinnkei[1, ]<- tabulate(kinnniku[1, ])
for( j in 1: (time - 1) ){
p1<- sample(1:n, N, replace = T)
p <- sinnkei[ j , ]
for( i in 1 : N ){
a<-kinnniku[ j, i ]
b<-p1[ i ]
num.a <- p[ a ]
num.b <- p[ b ]
prob.i <- c( num.a , num.b )/(num.a + num.b )
new.i <- sample(c( a ,b ), (num.a + num.b ) , prob = prob.i , replace=T)
kinnniku[ j+1, i ]<- new.i [1]
}
sinnkei[ j+1, ] <-tabulate( kinnniku[j+1, ] , nbins=n)
}
plot(sort(sinnkei[ time, ]))
んー、どうしてこんなに先生のと結果が変わるのだろう…??
塊が所々出来ている…これがクラスターか??
これからこちらで自主学習しよう!