私は、R言語ソフトウェアを使用してBIB設計から接続行列を作成するための教育的割り当てに取り組んでいます。 問題に関連するWebページhttp://wiki.math.yorku.ca/index.php/R:_Incidence_matrixを見つけました。ただし、接続行列ではなくデータ行列を生成します。誰かがR言語コードを手伝ってくれませんか。BIB計画行列を取得するためのコードは次のとおりです。
b=4 # Number of Blocks
t=8 # Number of Column
z=c(1,2,3) # Shift
m=NULL
y=c(0)
w=c(y,cumsum(z) %%t) # cumsum() is for the running totals
p=seq(from=0, to=t-1, by=1)
l=NULL
for(i in 1:b)
{
for(j in 1:t)
{
l=c(l,rep((w[i]+p[j]+t)%% t))
}
}
#"BIB design" it has 4 rows (blocks b) and 8 column (treatments t)
x= matrix(c(l),nrow=b,ncol=t,byrow = TRUE)
print (x)
0 1 2 3 4 5 6 7
1 2 3 4 5 6 7 0
3 4 5 6 7 0 1 2
6 7 0 1 2 3 4 5
(一般に、任意のt処理およびbブロックサイズで生成できます)上記の計画行列x(4 * 8)を使用します。次の接続行列が必要です(8 * 8)
1 1 0 1 0 0 1 0
0 1 1 0 1 0 0 1
1 0 1 1 0 1 0 0
0 1 0 1 1 0 1 0
0 0 1 0 1 1 0 1
0 1 0 0 1 0 1 1
1 0 1 0 0 1 0 1
計画行列の列を考慮し、接続行列の行を生成します。たとえば、xの最初の列は
0
1
6
3
次に、必要な接続行列(IM)の最初の行を参照してください。
1 1 0 1 0 0 1 0
xの1位は0なので、IMの1位に1を入れます。
xの2位は1なので、IMの2位にも1を入れます。
ここでは、xの列に2がないため、IMの3番目に0を配置します。
xには3が含まれているため、1を4番目に配置し、4と5が欠落しているため、2つの0を連続して配置します。
Xは7位に6プット1があり、IMの8位に7プット0がありません。
xの2番目の列と、同様に入力されたIMの2番目の行を取得します。特定の番号(0から7)が存在する場合は、1を入力し、それ以外の場合はゼロにします。
私は今、すべての人にそれを明確にしたいと思います。