Reactive stat で統計解析内容を保存・再現する方法

## 統計処理を行った場合、それを再現できるようにしておく必要があります

データに対して何らかの統計処理を行った後、その結果を学会や論文で発表する場合、再現性の確認や、修正に備えておかなくてはなりません。

ありがちなのが、データファイルに対して条件設定して一部のデータを対象とした統計検定を行ってみた。しかし...
あとで再現しようとしても
- データファイルがどのバージョンだったかわからなくなった
- 条件設定の細かい内容がわからなくなった

などで、同じ結果が得られない！
ということです。
これは常に意識してマメに記録を取っておく必要があります。

特に、(やっていいかどうかは別として) 探索的にデータ分析したり、様々な条件での解析結果をまとめたりした場合には、管理が大変です。

また、統計手法や得られた結果を誰かに相談する場合、データファイルを渡して、どのように設定したかをいちいち説明して... というのは面倒ですよね。

そこで、**EMUYN LLC** の提供する **Reactive stat** では、その管理を容易にする方法が用意されています。

## Reactive stat での再現方法

### Reactive stat とは

ブラウザだけで使える無料統計ソフトです。
信頼性の高い R で統計解析し、その結果を AI が解説します。
https://www.emuyn.net/stats/index

### 保存方法

統計処理を行った後、データセクションの「ファイル」メニューの「データと全設定を保存」を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3781632/69d376c2-3967-d096-788c-db881adb3978.png)

すると、下記のような json 形式のファイルが保存されます。

```json:json
{
  "dataTable": {
    "columns": ["萼の長さ", "萼の幅", "花弁の長さ", "花弁の幅", "花の種類"],
    "rows": [
      ["5.1", "3.5", "1.4", "0.2", "setosa"],
      ["4.9", "3", "1.4", "0.2", "setosa"],
      (... 中略 ...)
       ["5.9", "3", "5.1", "1.8", "virginica"]
    ],
    "settings": {
      "missingValues": [
        "NaN",
        (... 中略 ...)
        null
      ],
      "treatBlanksAsMissing": true
    },
    "checksum": 827523101
  },
  "Not_paired_tests": {
    "targetColumn": "花弁の長さ",
    "groupingColumn": "花の種類",
    "pairedNormalDist": false
  }
}
```

このファイルには、処理の対象となったデータと、実施された統計処理の設定が保存されています。

### 再現方法

統計処理を行った後、データセクションの「ファイル」メニューの「データと全設定を読み込み」を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3781632/d4bd911b-cfb5-0dc9-d00f-18e882b9e6be.png)

すると、この統計処理ページの状態が再現されます。

すなわち、この json ファイルだけ保存しておけば、あとでわからなくなることがないので便利です。
誰かに相談する場合も、相手にはこの json ファイルと Reactive stat の該当ページの URL 送るだけで、手間をかけずに確認してもらうことができます。

### PC とスマホ間の移動

Microsoft OneDrive や Google Drive、Mac では iCloud を利用して、統計解析内容を保存した json ファイルを PC とスマホ間で共有できますので、PC での解析をスマホで再現することもできます。

## R markdown を利用した再現方法

:::note info
こちらは、ブラウザだけで統計処理を行うという Reactive stat のコンセプトからは逸脱しますが、R markdown は非常に有用ですので紹介させていただきます
:::

R studio には、R markdown という仕組みが用意されています。
これを使えば、レポートまで単一ファイルで作成することができます。

ここでは、**Reactive stat** で得られる R の code を利用した R markdown の作成方法を簡単に説明します。

R と R studio は適宜ダウンロードしインストールしてあるものとします。
R studio を起動し、メニューから File -> New File -> R Markdown を選んでください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3781632/1b23d9b5-62f6-5f9f-e1dc-2a1f75e0eba9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3781632/33146618-8ebc-8adc-7cf0-2433dec374c1.png)

続いて、R Markdown を記述します。

対応のない群間の検定でノンパラメトリック検定を行った結果をレポートにしてみます。

とりあえず、デフォルトで作成された R markdown の template の不要部分を消して、```## ノンパラメトリック検定結果``` を書き込んでください。

```md:R Markdown
---
title: "Sample R Markedown"
author: "EMUYN LLC"
date: "2024/6/19"
output: html_document
---

## ノンパラメトリック検定結果
```

さらに、**Reactive stat** の対応のない群間の検定のページにて、ノンパラメトリック検定の R code の部分をクリップボードにコピーしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3781632/30373eaf-b97b-fa2b-d497-8ef098426b29.png)

この R code を、**&#96;&#96;&#96;{r echo=FALSE}** と **&#96;&#96;&#96;** で挟んで、先ほどの R Markedown に追加してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3781632/93e18415-8740-ada4-bc37-e6c8f92a82f9.png)

完成したら、ウィンドウ上部の **Knit** ボタンを押すると、html その他の体裁で結果が表示されます。
すなわち、R markdown にデータを含む R code を保持させ、それを R で評価し出力すというわけです。

これで、データと設定内容を内部に保持したレポート原稿ができたことになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3781632/fdb492a0-87f3-6f7a-fda5-27de96b72fe5.png)