---
slug: "easy-stat-edu"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/itou-daiki/easy_stat_edu@master/README.md"
repo: "https://github.com/itou-daiki/easy_stat_edu"
source_file: "README.md"
branch: "master"
---
# easyStat - ブラウザで完結する統計分析アプリ

**完全なクライアントサイド実行・インストール不要・高速動作**

## 概要

easyStatは、モダンなブラウザだけで動作する統計分析Webアプリケーションです。
**サーバーへのデータ送信は一切行わず**、すべての計算とグラフ描画をユーザーのデバイス内で完結させます。そのため、機密性の高いデータも安全に扱うことができます。

従来のPyScript版から**完全なJavaScript実装**に移行したことで、以下のメリットが生まれました：
- 🚀 **高速な起動**: Python環境のロード待ち時間がゼロに
- 📱 **オフライン動作**: 一度読み込めばネット環境がなくても動作
- 🔒 **高セキュリティ**: データはブラウザから出ません

## 実装済み機能（全14機能）

### 📊 データ処理
1. **データ読み込み**: Excel (.xlsx, .xls) および CSV (Shift-JIS/UTF-8自動判定)
2. **データクレンジング**: 欠損値処理、外れ値除去、データ型変換
3. **探索的データ分析 (EDA)**: 要約統計量、ヒストグラム、箱ひげ図、散布図

### 📈 統計解析
4. **相関分析**: ピアソンの積率相関係数、相関行列、散布図行列
5. **t検定**: 対応なし（独立）/ 対応あり（関連）、効果量 (Cohen's d)
6. **一要因分散分析 (One-way ANOVA)**: 3群以上の平均値比較、多重比較
7. **二要因分散分析 (Two-way ANOVA)**: 2要因の主効果と交互作用

### 🔮 多変量解析・予測
8. **単回帰分析**: 最小二乗法による単回帰モデル
9. **重回帰分析**: 偏回帰係数、モデル適合度 ($R^2$, 調整済み$R^2$)
10. **主成分分析 (PCA)**: 次元削減、寄与率、バイプロット
11. **因子分析**: 因子負荷量、スクリープロット（主因子法・バリマックス回転近似）
12. **カイ二乗検定**: クロス集計表、独立性の検定 ($χ^2$)

### 📝 テキスト分析
13. **テキストマイニング**: 日本語分かち書き (`TinySegmenter`)、TF-IDF、ワードクラウド、共起ネットワーク
14. **記述統計・可視化**: 基本的なデータの要約とグラフ化

## 使い方

1. **アクセス**: ブラウザでページを開きます（インストール不要）。
2. **機能選択**: ホーム画面から行いたい分析機能カードをクリックします。
3. **データアップロード**: ExcelまたはCSVファイルをドラッグ＆ドロップします。
4. **変数選択**: 分析に使用する変数（列）を選択し「分析実行」をクリックします。
5. **結果確認**: 結果の表とインタラクティブなグラフが表示されます。
6. **保存**: 加工済みデータやグラフ画像をダウンロードできます。

## 技術スタック

本アプリケーションは、外部APIやバックエンドサーバーに依存しない**Pure JavaScript (SPA)** で構築されています。

- **Core**: Vanilla JavaScript (ES6+)
- **UI/CSS**: Custom CSS, Font Awesome
- **Computation**:
    - `jStat`: 統計検定 (t-test, ANOVA, chi-square, etc.)
    - `math.js`: 行列演算、高度な数学計算
- **Visualization**:
    - `Plotly.js`: インタラクティブなグラフ描画
    - `wordcloud2.js`: ワードクラウド生成
- **Data Handling**:
    - `SheetJS (xlsx)`: Excel/CSVファイルの読み書き
- **NLP**:
    - `TinySegmenter`: ブラウザ内日本語分かち書き

## 統計処理ロジックの検証

本プロジェクトの全ての統計処理ロジックは、統計学・データサイエンス・エンジニアリングの3つの専門的視点から包括的に検証されています。

### 検証済み項目

| カテゴリ | 手法 | 検証状態 |
|---------|------|---------|
| 相関分析 | Pearson r, Spearman ρ, Fisher z変換CI, p値 | 検証済み |
| t検定 | Welch t, Welch-Satterthwaite df, 対応ありt, 1標本t | 検証済み |
| 分散分析 | SS計算, F比, η², ω², GG epsilon, 多重比較 (Tukey/Holm/Bonferroni) | 検証済み |
| 回帰分析 | OLS推定, R², 調整済みR², F検定, VIF, 切片の統計量 | 検証済み |
| カイ二乗検定 | χ², Cramér's V, 調整済み残差, Yates補正 | 検証済み |
| Mann-Whitney U | U統計量, タイ補正, Z正規近似, 効果量r | 検証済み |
| PCA | 相関行列の固有値分解, PC得点, 累積寄与率 | 検証済み |
| 因子分析 | 主成分抽出, Varimax/Promax/Oblimin/Geomin回転 | 検証済み |
| EDA | 記述統計, 歪度(Fisher調整), 尖度(過剰尖度) | 検証済み |

### 2026-02-19 統計ロジック修正

以下の問題を特定し修正しました（TDDにて実施）:

- **EDA標準偏差**: 母集団SD(n除算) → 標本SD(n-1除算)に修正
- **GG epsilon**: Greenhouse-Geisser epsilonの分子を正しい`trace(S̃)²`に修正
- **Levene検定**: 平均値ベース → 中央値ベース(Brown-Forsythe変法)に変更
- **対応ありt検定**: 効果量ラベルを`d` → `d_z`に修正（教育的明確化）
- **Mann-Whitney U**: Z値を絶対値で報告するよう修正
- **単回帰分析**: 切片のSE/t値/p値を追加
- **1標本t検定**: p<0.1の傾向有意水準(†)を他の検定と統一
- **カイ二乗検定**: Yates補正に関するドキュメント不整合を修正

### 2026-02-19 表記・表示修正

以下の問題を特定し修正しました（TDDにて実施）:

- **時系列分析**: `createPlotlyConfig()`の誤ったプロパティアクセス(`.layout`/`.config`)を修正
- **有意記号統一**: 全モジュール（単回帰・重回帰・カイ二乗・相関）の有意記号チェインを `** / * / † / n.s.` に統一
- **相関APA表**: 傾向有意(† p<.10)をAPA表データセルと注釈に追加
- **因子分析回転ラベル**: varimax/none のみ → promax/oblimin/geomin にも対応
- **PCA用語**: 「因子負荷量」→「主成分負荷量」に修正（PCA固有の用語を使用）
- **Mann-Whitney表ヘッダ**: 「Z値」→「|Z|」に修正（絶対値表記の統一）
- **単回帰**: 負の切片表示を `+ -1.234` → `- 1.234` に改善

### 2026-02-19 t検定/ANOVA表修正

以下の問題を特定し修正しました（TDDにて実施）:

- **[CRITICAL] 二要因ANOVA**: Error行のp値スタイルにnullガードを追加（`null < 0.05`が`true`になる問題）
- **p値 < .001表示**: 対応ありt検定・1標本t検定・一要因ANOVA・二要因ANOVAの全表にて `< .001` 表示に統一
- **t統計量絶対値**: 対応ありt検定・1標本t検定のメインテーブル/APA表で `|t|` を報告
- **HTML凡例エスケープ**: 一要因ANOVAの有意記号凡例で `<` → `&lt;` に修正
- **二要因ANOVA混合パス**: truthinessチェック → `!== null` 明示チェックに修正
- **有意記号凡例**: 二要因ANOVA混合/反復パスに欠落していた凡例を追加
- **日本語テキスト**: 「球面性仮定下的な結果」→「球面性仮定下の結果」に修正

### 2026-02-19 ユーティリティ・横断的整合性修正

以下の問題を特定し修正しました（TDDにて実施）:

- **[CRITICAL] createPairSelector**: DOM append呼び出しの重複を除去（コピペエラー）
- **evaluatePValue**: `***`（p<.001）を`**`（p<.01）に統一（プロジェクト規約準拠）
- **相関可視化**: 散布図行列の有意記号を `*** / ** / *` → `** / * / †` に統一
- **interpretCorrelation**: 弱い相関の日本語ラベルを述語形「ほとんど相関がない」→形容詞形「非常に弱い」に修正

### 2026-02-23 ユーザビリティ・機能整理とTDD検証

以下の改善を実施しました（TDDにて検証）:

- **トップページ**: 初学者向けに分析機能のパネル説明文や表現を平易な言葉・アイコン付きに修正
- **分析サポーター**: 新規手法（フィッシャーの正確確率検定、マクネマー検定、ロジスティック回帰分析等）のサジェストを追加。複合条件での排他処理を排除し、網羅的な推奨ロジックへ刷新
- **UI統一**: `MultiSelect` コンポーネントを標準のセレクターへ移行。各種結果表示の順序を「要約統計量 → 本結果 → 事後検定」に統一し、表形式も一貫性のあるAPAスタイル互換な表示に統合
- **ユーティリティ・デッドコード整理**: `data_processing.js` 内の冗長な「データ結合」タブを廃止し専用機能へ集約、古いテストスクリプトやCSS等の残骸をすべてクリーンアップ

## 開発者向け情報

### プロジェクト構成

```
easy_stat_edu/
├── js/
│   ├── analyses/          # 統計分析モジュール（16エントリ + サブモジュール）
│   │   ├── anova_one_way.js   # 一要因分散分析（LIVE）
│   │   ├── anova_two_way.js   # 二要因分散分析（LIVE）
│   │   ├── correlation.js     # 相関分析
│   │   ├── ttest.js           # t検定
│   │   ├── chi_square.js      # カイ二乗検定
│   │   ├── mann_whitney.js    # Mann-Whitney U検定
│   │   ├── regression_simple.js  # 単回帰分析
│   │   ├── regression_multiple.js # 重回帰分析
│   │   ├── pca.js             # 主成分分析
│   │   ├── factor_analysis.js # 因子分析
│   │   ├── eda.js             # 探索的データ分析
│   │   ├── time_series.js     # 時系列分析
│   │   ├── text_mining.js     # テキストマイニング
│   │   └── */                 # 各モジュールのヘルパー・可視化サブモジュール
│   ├── utils.js               # 共通ユーティリティ（Levene検定、APA表生成等）
│   └── utils/stat_distributions.js  # 統計分布（Tukey, Holm補正, Gamma関数）
├── tests/
│   ├── unit/              # ユニットテスト（統計ロジック検証）
│   ├── verification/      # 精度検証テスト
│   └── *.spec.ts          # E2E / スモークテスト
└── css/                   # スタイルシート
```

### アーキテクチャノート

- **モジュールロード**: `main.js`が`index.html`のdata-analysis属性に基づいて動的にモジュールをインポート
- **ANOVA**: モノリシックファイル(`anova_one_way.js`, `anova_two_way.js`)がLIVEコード。サブフォルダ版はデッドコード
- **統計ライブラリ**: jStat (CDN), math.js (CDN) をグローバルスコープで使用

### テストの実行

```bash
# 全テスト実行
npx playwright test

# 統計ロジック検証テスト
npx playwright test tests/unit/statistical_logic_validation.spec.ts

# 精度検証テスト
npx playwright test tests/verification/

# テストレポート表示
npx playwright show-report
```

### GitHub Pagesへのデプロイ
1. リポジトリの `Settings` -> `Pages` を開く。
2. Sourceを `Deploy from a branch` に設定。
3. Branchを `main` (または `master`) の `/ (root)` または `/docs` に設定してSave。

## ライセンス

© 2022-2026 Dit-Lab.(Daiki Ito). All Rights Reserved.
easyStat: Open Source for Ubiquitous Statistics
 Democratizing data, everywhere.

## サポート

- [GitHub Issues](https://github.com/itou-daiki/easy_stat-edu/issues)
