矩阵上不正确的下标数量错误
Error in incorrect number of subscripts on matrix
我正在尝试对矩阵 Y 进行简单的参数化 bootstrap。
str(Y)
num [1:10, 1:7] 2333 2815 2326 3097 2813 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:10] "A77" "A86" "C87" "C88" ...
..$ : chr [1:7] "CHIP" "CORS" "EVAN" "HODG" ...
B = 100000
I = nrow(Y)
J = ncol(Y)
M = min(I-1,J-1)
D =I-1
MaxK = M-2
一些矩阵的初始化
T <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
ProbT <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
Star <{ matrix(NA, nrow = M, ncol = B)
奇异值分解
RowMeans =matrix(rowMeans(Y), nrow = I, ncol = J)
ColMeans= t(matrix(colMeans(Y), nrow = J, ncol = I))
Mean = matrix(mean(Y), nrow = I, ncol = J)
E=Y-RowMeans-ColMeans+Mean
lambda = svd(E)$d ; lambda
检验统计
K <- 0
while(K <= MaxK){
Term <- K + 1
if(K > 0) lambda[K] <- 0
T[Term, 1] <- lambda[Term]^2/(t(lambda)%*%lambda)
boot <- 1
while(boot <= B){
Eb<-matrix(rnorm((D-K)*(J-1-K)), nrow=I-1-K, ncol=J-1-K)
lambdab <- svd(Eb)$d
Tb <-lambdab[1]^2/(t(lambdab)%*%lambdab)
ifelse(Tb > T[Term,1], Star[Term, boot] <- 1, Star[Term, boot] <- 0)
boot = boot + 1}
ProbT[Term, 1] <- rowMeans(Star)[Term]
K <- K+1}
但是我收到这样的错误
Error in T[Term, 1] <- lambda[Term]^2/(t(lambda) %*% lambda) : incorrect number of subscripts on matrix
哪里错了?
谢谢。
解决了。
必须定义 T
ProbT
Star
矩阵。
T <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
ProbT <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
Star <{ matrix(NA, nrow = M, ncol = B)
我正在尝试对矩阵 Y 进行简单的参数化 bootstrap。
str(Y)
num [1:10, 1:7] 2333 2815 2326 3097 2813 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:10] "A77" "A86" "C87" "C88" ...
..$ : chr [1:7] "CHIP" "CORS" "EVAN" "HODG" ...
B = 100000
I = nrow(Y)
J = ncol(Y)
M = min(I-1,J-1)
D =I-1
MaxK = M-2
一些矩阵的初始化
T <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
ProbT <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
Star <{ matrix(NA, nrow = M, ncol = B)
奇异值分解
RowMeans =matrix(rowMeans(Y), nrow = I, ncol = J)
ColMeans= t(matrix(colMeans(Y), nrow = J, ncol = I))
Mean = matrix(mean(Y), nrow = I, ncol = J)
E=Y-RowMeans-ColMeans+Mean
lambda = svd(E)$d ; lambda
检验统计
K <- 0
while(K <= MaxK){
Term <- K + 1
if(K > 0) lambda[K] <- 0
T[Term, 1] <- lambda[Term]^2/(t(lambda)%*%lambda)
boot <- 1
while(boot <= B){
Eb<-matrix(rnorm((D-K)*(J-1-K)), nrow=I-1-K, ncol=J-1-K)
lambdab <- svd(Eb)$d
Tb <-lambdab[1]^2/(t(lambdab)%*%lambdab)
ifelse(Tb > T[Term,1], Star[Term, boot] <- 1, Star[Term, boot] <- 0)
boot = boot + 1}
ProbT[Term, 1] <- rowMeans(Star)[Term]
K <- K+1}
但是我收到这样的错误
Error in T[Term, 1] <- lambda[Term]^2/(t(lambda) %*% lambda) : incorrect number of subscripts on matrix
哪里错了?
谢谢。
解决了。
必须定义 T
ProbT
Star
矩阵。
T <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
ProbT <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
Star <{ matrix(NA, nrow = M, ncol = B)