Я пытаюсь провести анализ через задние матрицы.Я начну с столбца k ^ 2, где k - размеры матрицы. i -я строка формирует матрицу i -й итерации.
Так, например, для матрицы 3x3 это:
set.seed(12)
n <- 1000
z1z1 <- rnorm(n, 5, 1)
z2z2 <- rnorm(n, 5, 1)
z3z3 <- rnorm(n, 5, 1)
z1z2 <- rnorm(n, 0, 1)
z1z3 <- rnorm(n, 0, 1)
z2z3 <- rnorm(n, 0, 1)
post3 <- as_tibble(matrix(c(z1z1, z1z2, z1z3,
z1z2, z2z2, z2z3,
z1z3, z2z3, z3z3),
ncol = 9))
post3
Дача:
# A tibble: 1,000 x 9
V1 V2 V3 V4 V5 V6 V7 V8 V9
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 3.52 -0.618 2.96 -0.618 2.48 -0.634 2.96 -0.634 5.98
2 6.58 -0.827 0.0909 -0.827 5.52 -1.84 0.0909 -1.84 6.20
3 4.04 1.48 -1.66 1.48 6.58 0.166 -1.66 0.166 5.58
4 4.08 -1.01 0.809 -1.01 5.49 0.607 0.809 0.607 6.55
5 3.00 0.582 -0.485 0.582 6.20 0.0765 -0.485 0.0765 6.38
6 4.73 0.718 1.97 0.718 4.00 -0.147 1.97 -0.147 4.35
7 4.68 -0.372 0.572 -0.372 4.65 -1.68 0.572 -1.68 3.83
8 4.37 -0.809 0.883 -0.809 3.96 0.985 0.883 0.985 4.97
9 4.89 0.405 0.686 0.405 6.02 0.252 0.686 0.252 6.29
10 5.43 0.124 0.199 0.124 5.75 0.354 0.199 0.354 4.20
# ... with 990 more rows
Где это матрица в первой итерации:
k <- sqrt(length(post3))
matrix(post3[1,], nrow = k)
[,1] [,2] [,3]
[1,] 3.519432 -0.618137 2.962622
[2,] -0.618137 2.479522 -0.6338298
[3,] 2.962622 -0.6338298 5.977552
Затем я работаю вдоль этого апостериора, чтобы вычислить доминирование первого собственного вектора:
post3 %>%
rowwise %>%
mutate(
pre_eig = list(eigen(matrix(c(V1, V2, V3, V4, V5, V6, V7, V8, V9), nrow = k))),
dom = pre_eig[[1]][1] / sum(pre_eig[[1]][1:k])) %>%
select('dom')
Предоставление:
# A tibble: 1,000 x 1
dom
<dbl>
1 0.676
2 0.437
3 0.462
4 0.427
5 0.414
6 0.504
7 0.474
8 0.429
9 0.394
10 0.383
# ... with 990 more rows
Что я хотел бы сделать, это сделать этот сценарий универсальным, чтобы он мог принимать исходные тексты для любого значения k.У меня проблема в том, как определить матрицу без необходимости писать все имена столбцов - при применении этого к матрицам 2000x2000 я не хочу выписывать V1, V2, V3... V4000000
!Я попробовал несколько вещей (в том числе ... eigen(matrix(c(paste0('V', 1:(k^2))), nrow = k)))
..., которые, по-моему, не работают, потому что они хотят V1, V2...
, а не "V1", "V2"...
), и у меня нет идей. Как заставить его автоматически брать имена столбцов из заднего тибла?
Тогда я смог бы использовать точно такой же фрагмент сценария, например, для post3 <- as_tibble(matrix(c(z1z1, z1z2, z1z2, z2z2), ncol = 4))
...