R中的双和编码
我想把这些计算成数量R中的双和编码,r,R,我想把这些计算成数量 a12=sum_(i from 1 to m)sum_(j1<j2)(I(X[i]>Y[j1] and X[i]>Y[j2])) a13=sum_(j from 1 to n)sum_(i1<i2)(I(X[i1]>Y[j] and X[i2]>Y[j])) a12=sum_i(从1到m)sum_j(j1Y[j1]和X[i]>Y[j2])) a13=和(从1到n的j)和(i1Y[j]和X[i2]>Y[j])) 其中I是指示器功能 所
a12=sum_(i from 1 to m)sum_(j1<j2)(I(X[i]>Y[j1] and X[i]>Y[j2]))
a13=sum_(j from 1 to n)sum_(i1<i2)(I(X[i1]>Y[j] and X[i2]>Y[j]))
a12=sum_i(从1到m)sum_j(j1Y[j1]和X[i]>Y[j2]))
a13=和(从1到n的j)和(i1Y[j]和X[i2]>Y[j]))
其中I是指示器功能
所以我想出了这个R码
a12=0; a13=0
for (l in 1:(length(Z1)-1)){
for (m in 1:(length(Z2)-1)){
a12<-a12+(Z1[l]<Z2[m])*(Z1[l+1]<Z2[m])*1
a13<-a13+(Z1[l]<Z2[m])*(Z1[l]<Z2[m+1])*1
} # closing m
} # closing l
a12=a12+sum((Z1[-length(Z1)]<Z2[length(Z2)])*(Z1[-1]<Z2[length(Z2)])*1)
a13=a13+sum((Z1[length(Z1)]<Z2[-length(Z2)])*(Z1[length(Z1)]<Z2[-1])*1)
a12;
a13
a12=0;a13=0
对于(1中的l:(长度(Z1)-1)){
对于(m/1:(长度(Z2)-1)){
a12我假设(对于a12
)您要执行以下操作。您有两个向量x
(长度m
)和y
,并且对于x
的每个元素x[I]
,您正在计算不同元素的数量
对y
的j1
,j2
进行索引,使得x[i]
超过y[j1]
和y[j2]
,然后对所有i
的数量求和。
这里有一个快速的方法来做12(另一个将作为练习)首先请注意,你可以翻转求和的顺序:
a12 = Sum_(j1 < j2) Sum_(i=1:m) I( X[i] > Y[j1] & X[i] > Y[j2] ),
然后,我们可以使用outer
函数生成一个矩阵y\ux
,其[i,j]
条目为真,当且仅当y[i]
:
y_x <- outer(y,x,FUN = '<')
我假设(对于a12
)您希望执行以下操作。您有两个向量x
(长度m
)和y
,并且对于x
的每个元素x[I]
,您正在计算不同元素的数量
对y
的j1
,j2
进行索引,使得x[i]
超过y[j1]
和y[j2]
,然后对所有i
的数量求和。
这里有一个快速的方法来做12(另一个将作为练习)首先请注意,你可以翻转求和的顺序:
a12 = Sum_(j1 < j2) Sum_(i=1:m) I( X[i] > Y[j1] & X[i] > Y[j2] ),
然后,我们可以使用outer
函数生成一个矩阵y\ux
,其[i,j]
条目为真,当且仅当y[i]
:
y_x <- outer(y,x,FUN = '<')
Z1
和Z2
的示例以及您期望的结果都会有帮助。还要更好地解释您的双和。j1和j2只有在您在a12中使用后才定义。您到底想做什么?链接到一篇论文或更好的公式也会有帮助。@Joris我认为sum_j1j1
和j2
。Z1
和Z2
的示例以及您期望的结果都会有所帮助。还要更好地解释您的双和。只有在a12中使用它们之后,才能定义j1和j2。您到底想做什么?链接到一篇论文或更好的公式也会有所帮助@Joris我认为Sum_j1
意味着“所有不同的索引对的总和j1
和j2
。
a12 <- sum( z[lower.tri( z )])
> a12
[1] 72