## Setup

    library(arenar)

    apartments <- DALEX::apartments
    head(apartments)

## Prepare models

Let's compare three models: GLM and GBMs with 100 and 500 trees. For each we create explainer from DALEX package.

    library(gbm)
    library(DALEX)
    library(dplyr)

    model_gbm100 <- gbm(m2.price ~ ., data = apartments, n.trees = 100)
    expl_gbm100 <- explain(
      model_gbm100,
      data = apartments,
      y = apartments$m2.price,
      label = "gbm [100 trees]"
    )

    model_gbm500 <- gbm(m2.price ~ ., data = apartments, n.trees = 500)
    expl_gbm500 <- explain(
      model_gbm500,
      data = apartments,
      y = apartments$m2.price,
      label = "gbm [500 trees]"
    )

    model_glm <- glm(m2.price ~ ., data = apartments)
    expl_glm <- explain(model_glm, data = apartments, y = apartments$m2.price)

## Prepare observations

Plots for static Arena are pre-caluclated and it takes time and file size. For example we will take only apartments from 2009 or newer. Random sample is also good.

    observations <- apartments %>% filter(construction.year >= 2009)
    # Observations' names are taken from rownames
    rownames(observations) <- paste0(
      observations$district,
      " ",
      observations$surface,
      "m2 "
    )

## Create arena

    arena <- create_arena() %>%
      # Pushing explainers for each models
      push_model(expl_gbm100) %>%
      push_model(expl_gbm500) %>%
      push_model(expl_glm) %>%
      # Push dataframe of observations
      push_observations(observations) %>%
      # Upload calculated arena files to Gist and open Arena in browser
      upload_arena()

## Appending data

There are two ways of add new observations or new models without recalcualating already generated plots. Let's add apartments built in 2008. It's similar for models.

    observations2 <- apartments %>% filter(construction.year == 2008)
    # Observations' names are taken from rownames
    rownames(observations2) <- paste0(
      observations2$district,
      " ",
      observations2$surface,
      "m2 "
    )

### New Arena session

We can add observations to already existing arena object and call `arena_upload()`.

    arena %>%
      push_observations(observations2) %>%
      upload_arena()

### Append to already existing session

Sometimes we don't want to close Arena session and just add data. There is argument in `arena_upload` function to do that. Remember to append new arena object and to push all models and all observations that are required to plots you want to append.

    create_arena() %>%
      push_observations(arena_push_observations2) %>%
      push_model(expl_glm) %>%
      push_model(expl_gbm100) %>%
      push_model(expl_gbm500) %>%
      upload_arena(append_data = TRUE)