Понимание поднабора матрицы: `mat [2, mat [1,] == 1] == 1` (2) - PullRequest
0 голосов
/ 09 мая 2019

См. этот ответ .

Мне трудно понять следующее:

   mean(sim[2, sim[1, ] == 1] == 1)

См. Следующее:

> alpha <- c(1, 1) / 2
> mat <- matrix(c(1 / 2, 0, 1 / 2, 1), nrow = 2, ncol = 2) # Different than yours
> 
> chainSim <- function(alpha, mat, n) 
+ {
+   out <- numeric(n)
+   out[1] <- sample(1:2, 1, prob = alpha)
+   
+   for(i in 2:n)
+       out[i] <- sample(1:2, 1, prob = mat[out[i - 1], ])
+   out
+ }
> 
> sim <- replicate(chainSim(alpha, mat, 1 + 5), n = 100)
> 
> x <- (sim[2, sim[1, ] == 1] == 1)
> x
 [1] FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
[15]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE
[29] FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
[43]  TRUE FALSE FALSE FALSE
> 

Если x состоит только из некоторых значений true и false, как означает из x может стать числовым значением?

> sim <- replicate(chainSim(alpha, mat, 1 + 5), n = 100)
> 
> x <- (sim[2, sim[1, ] == 1] == 1)
> y <- mean(x)
> y
[1] 0.6086957

1 Ответ

3 голосов
/ 09 мая 2019

Вопрос OP

, если x состоит только из некоторых истинных и ложных значений, как среднее значение x может стать числовым значением?

Согласно документации от?logical

Логические векторы приводятся к целочисленным векторам в тех случаях, когда требуется числовое значение, причем TRUE отображается на 1L, FALSE на 0L и NA на NA_integer _.

Итак, взятие mean логического вектора аналогично integer vector

mean(c(1, 0, 1, 1, 0))
#[1] 0.6

mean(c(TRUE, FALSE, TRUE, TRUE, FALSE))
#[1] 0.6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...