Dealing with chains of different length

Abierto
#334 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
42/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
r
Área
data

Línea de trabajo

Comienza comparando niterations y los puntos de entrada de conversión de draws_df, draws_matrix, draws_list y draws_array después de que repair_draws() cree longitudes de cadena desiguales. Revisa merge_chains como solución sugerida y determina dónde debería producirse una advertencia o un error informativo. Se considera terminado cuando las cadenas desiguales se gestionan de forma coherente y draws_array indica a los usuarios que usen merge_chains cuando sea necesario.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

I suppose there is an implicit expectation that all chains are the same length, but different lengths can occur when doing filtering with e.g. dplyr. I think the recommended workflow should likely be to merge chains before doing this kind of filtering, but I guess that can't be enforced.

Currently, different draws formats handle chains of varying length differently in how they calculate niterations (even after repairing). And draws_array does not allow different length chains at all -> I think the error message could point to merge_chains as a solution.

Consider filtering a draws_df based on the value of some variable (below dplyr is used to do so, but it could be done in base R syntax). This can end up with a draws_df that has different length chains.

library(posterior)
library(dplyr)
fdraws <- example_draws() |>
as_draws_df() |>
dplyr::filter(`mu` > 0) |>
repair_draws()

niterations(fdraws)
## [1] 94

niterations(as_draws_matrix(fdraws))
## [1] 89.5

niterations(as_draws_list(fdraws))
## [1] 90

as_draws_array(fdraws)
## Error in abind::abind(x, along = 3L) : 
##   arg 'X2' has dims=86, 10, 1; but need dims=90, 10, X

Should there be a message/warning given when a draws object has different length chains that suggests merge_chains?

Lenguaje dominante
R
Estrellas
172
Forks
27
Merge medio
5 d 12 h
PR fusionados (30 d)
5

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de stan-dev/posterior

Todos los issues de stan-dev/posterior

Issues similares

Más issues de R

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.