statistical-analysis
統計解析ツールキット。t検定・ANOVA・カイ二乗検定などの仮説検定、回帰分析、相関分析、ベイズ統計、検出力分析、前提条件の確認、APA形式でのレポート出力に対応し、学術研究での利用に最適です。
description の原文を見る
Statistical analysis toolkit. Hypothesis tests (t-test, ANOVA, chi-square), regression, correlation, Bayesian stats, power analysis, assumption checks, APA reporting, for academic research.
SKILL.md 本文
統計分析
概要
統計分析は、仮説を検定し、関係性を定量化するための体系的なプロセスです。仮説検定(t検定、ANOVA、カイ二乗検定)、回帰分析、相関分析、ベイズ分析を実施し、仮定の確認とAPA形式での報告に対応します。この技能を学術研究に活用してください。
このスキルを使用する場合
このスキルは以下の場合に使用します:
- 統計的仮説検定を実施する場合(t検定、ANOVA、カイ二乗検定)
- 回帰分析または相関分析を実行する場合
- ベイズ統計分析を実行する場合
- 統計的仮定と診断をチェックする場合
- 効果量を計算し検定力分析を実施する場合
- 統計結果をAPA形式で報告する場合
- 研究用の実験または観察データを分析する場合
核心的な機能
1. テスト選択と計画
- 研究質問とデータ特性に基づいて適切な統計検定を選択
- 事前検定力分析を実施して必要なサンプルサイズを決定
- 多重比較補正を含む分析戦略を計画
2. 仮定の確認
- テスト実行前にすべての関連仮定を自動的に検証
- 診断用の可視化を提供(Q-Qプロット、残差プロット、箱ひげ図)
- 仮定に違反する場合の改善策を提言
3. 統計検定
- 仮説検定:t検定、ANOVA、カイ二乗検定、ノンパラメトリック代替法
- 回帰分析:線形回帰、重回帰、ロジスティック回帰(診断付き)
- 相関分析:ピアソン相関、スピアマン相関(信頼区間付き)
- ベイズ代替法:ベイズt検定、ANOVA、ベイズ因子付き回帰分析
4. 効果量と解釈
- すべての分析に対して適切な効果量を計算および解釈
- 効果推定値の信頼区間を提供
- 統計的有意性と実質的有意性を区別
5. 専門的な報告
- APA形式の統計レポートを生成
- 出版可能な図表を作成
- すべての必要な統計量を含む完全な解釈を提供
ワークフロー意思決定ツリー
分析パスを決定するには、このツリーを使用してください:
開始
│
├─ 統計検定を「選択」する必要があるか?
│ └─ YES → 「テスト選択ガイド」を参照
│ └─ NO → 続行
│
├─ 「仮定」をチェックする準備ができたか?
│ └─ YES → 「仮定の確認」を参照
│ └─ NO → 続行
│
├─ 「分析」を実行する準備ができたか?
│ └─ YES → 「統計検定の実行」を参照
│ └─ NO → 続行
│
└─ 結果を「報告」する必要があるか?
└─ YES → 「結果の報告」を参照
テスト選択ガイド
クイックリファレンス:適切なテストの選択
包括的なガイダンスは references/test_selection_guide.md を参照してください。クイックリファレンス:
2つのグループを比較:
- 独立、連続、正規分布 → 独立t検定
- 独立、連続、非正規分布 → Mann-Whitney U検定
- 対応、連続、正規分布 → 対応t検定
- 対応、連続、非正規分布 → Wilcoxon符号付き順位検定
- 二値アウトカム → カイ二乗検定またはFisher正確確率検定
3つ以上のグループを比較:
- 独立、連続、正規分布 → 一元配置ANOVA
- 独立、連続、非正規分布 → Kruskal-Wallis検定
- 対応、連続、正規分布 → 反復測定ANOVA
- 対応、連続、非正規分布 → Friedman検定
関係性:
- 2つの連続変数 → ピアソン相関(正規分布)またはスピアマン相関(非正規分布)
- 連続アウトカムと予測因子 → 線形回帰
- 二値アウトカムと予測因子 → ロジスティック回帰
ベイズ代替法: すべての検定にはベイズ版があり、以下を提供します:
- 仮説に関する直接確率陳述
- 証拠を定量化するベイズ因子
- 帰無仮説のサポート能力
references/bayesian_statistics.mdを参照
仮定の確認
体系的仮定の検証
検定結果を解釈する前に、必ず仮定をチェックしてください。
提供されている scripts/assumption_checks.py モジュールを使用して自動チェック:
from scripts.assumption_checks import comprehensive_assumption_check
# 可視化を含む包括的チェック
results = comprehensive_assumption_check(
data=df,
value_col='score',
group_col='group', # オプション:グループ比較用
alpha=0.05
)
これにより以下を実行します:
- 外れ値検出(IQR法とz法)
- 正規性検定(Shapiro-Wilk検定 + Q-Qプロット)
- 分散の等質性(Levene検定 + 箱ひげ図)
- 解釈と提言
個別仮定チェック
対象を絞ったチェックについては、個別の関数を使用:
from scripts.assumption_checks import (
check_normality,
check_normality_per_group,
check_homogeneity_of_variance,
check_linearity,
detect_outliers
)
# 例:可視化を含む正規性チェック
result = check_normality(
data=df['score'],
name='Test Score',
alpha=0.05,
plot=True
)
print(result['interpretation'])
print(result['recommendation'])
仮定に違反する場合の対応
正規性に違反:
- 軽微な違反 + n > 30(グループ当たり) → パラメトリック検定で継続(堅牢性あり)
- 中程度の違反 → ノンパラメトリック代替法を使用
- 重大な違反 → データ変換またはノンパラメトリック検定を使用
分散の等質性に違反:
- t検定の場合 → Welchのt検定を使用
- ANOVAの場合 → WelchのANOVAまたはBrown-Forsythe ANOVAを使用
- 回帰分析の場合 → 堅牢標準誤差または加重最小二乗法を使用
線形性に違反(回帰):
- 多項式項を追加
- 変数を変換
- 非線形モデルまたはGAMを使用
包括的なガイダンスは references/assumptions_and_diagnostics.md を参照。
統計検定の実行
Pythonライブラリ
統計分析用の主要ライブラリ:
- scipy.stats:コア統計検定
- statsmodels:高度な回帰分析と診断
- pingouin:ユーザーフレンドリーな統計検定と効果量
- pymc:ベイズ統計モデリング
- arviz:ベイズ可視化と診断
分析例
完全な報告を含むt検定
import pingouin as pg
import numpy as np
# 独立t検定を実行
result = pg.ttest(group_a, group_b, correction='auto')
# 結果を抽出
t_stat = result['T'].values[0]
df = result['dof'].values[0]
p_value = result['p-val'].values[0]
cohens_d = result['cohen-d'].values[0]
ci_lower = result['CI95%'].values[0][0]
ci_upper = result['CI95%'].values[0][1]
# 報告
print(f"t({df:.0f}) = {t_stat:.2f}, p = {p_value:.3f}")
print(f"Cohen's d = {cohens_d:.2f}, 95% CI [{ci_lower:.2f}, {ci_upper:.2f}]")
事後検定を含むANOVA
import pingouin as pg
# 一元配置ANOVA
aov = pg.anova(dv='score', between='group', data=df, detailed=True)
print(aov)
# 有意な場合、事後検定を実施
if aov['p-unc'].values[0] < 0.05:
posthoc = pg.pairwise_tukey(dv='score', between='group', data=df)
print(posthoc)
# 効果量
eta_squared = aov['np2'].values[0] # 偏η二乗
print(f"Partial η² = {eta_squared:.3f}")
診断を含む線形回帰
import statsmodels.api as sm
from statsmodels.stats.outliers_influence import variance_inflation_factor
# モデルをフィット
X = sm.add_constant(X_predictors) # 切片を追加
model = sm.OLS(y, X).fit()
# サマリー
print(model.summary())
# 多重共線性をチェック(VIF)
vif_data = pd.DataFrame()
vif_data["Variable"] = X.columns
vif_data["VIF"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
print(vif_data)
# 仮定をチェック
residuals = model.resid
fitted = model.fittedvalues
# 残差プロット
import matplotlib.pyplot as plt
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
# 残差対当てはまり値
axes[0, 0].scatter(fitted, residuals, alpha=0.6)
axes[0, 0].axhline(y=0, color='r', linestyle='--')
axes[0, 0].set_xlabel('Fitted values')
axes[0, 0].set_ylabel('Residuals')
axes[0, 0].set_title('Residuals vs Fitted')
# Q-Qプロット
from scipy import stats
stats.probplot(residuals, dist="norm", plot=axes[0, 1])
axes[0, 1].set_title('Normal Q-Q')
# スケール-ロケーション
axes[1, 0].scatter(fitted, np.sqrt(np.abs(residuals / residuals.std())), alpha=0.6)
axes[1, 0].set_xlabel('Fitted values')
axes[1, 0].set_ylabel('√|Standardized residuals|')
axes[1, 0].set_title('Scale-Location')
# 残差ヒストグラム
axes[1, 1].hist(residuals, bins=20, edgecolor='black', alpha=0.7)
axes[1, 1].set_xlabel('Residuals')
axes[1, 1].set_ylabel('Frequency')
axes[1, 1].set_title('Histogram of Residuals')
plt.tight_layout()
plt.show()
ベイズt検定
import pymc as pm
import arviz as az
import numpy as np
with pm.Model() as model:
# 事前分布
mu1 = pm.Normal('mu_group1', mu=0, sigma=10)
mu2 = pm.Normal('mu_group2', mu=0, sigma=10)
sigma = pm.HalfNormal('sigma', sigma=10)
# 尤度関数
y1 = pm.Normal('y1', mu=mu1, sigma=sigma, observed=group_a)
y2 = pm.Normal('y2', mu=mu2, sigma=sigma, observed=group_b)
# 導出量
diff = pm.Deterministic('difference', mu1 - mu2)
# サンプリング
trace = pm.sample(2000, tune=1000, return_inferencedata=True)
# サマリー
print(az.summary(trace, var_names=['difference']))
# group1 > group2の確率
prob_greater = np.mean(trace.posterior['difference'].values > 0)
print(f"P(μ₁ > μ₂ | data) = {prob_greater:.3f}")
# 事後分布をプロット
az.plot_posterior(trace, var_names=['difference'], ref_val=0)
効果量
常に効果量を計算する
効果量は大きさを定量化し、p値は効果の存在のみを示します。
包括的なガイダンスは references/effect_sizes_and_power.md を参照。
クイックリファレンス:一般的な効果量
| 検定 | 効果量 | 小 | 中 | 大 |
|---|---|---|---|---|
| t検定 | Cohen's d | 0.20 | 0.50 | 0.80 |
| ANOVA | η²_p | 0.01 | 0.06 | 0.14 |
| 相関 | r | 0.10 | 0.30 | 0.50 |
| 回帰 | R² | 0.02 | 0.13 | 0.26 |
| カイ二乗検定 | Cramér's V | 0.07 | 0.21 | 0.35 |
重要:基準はガイドラインです。文脈が重要です!
効果量の計算
ほとんどの効果量はpingouinにより自動的に計算されます:
# t検定はCohen's dを返す
result = pg.ttest(x, y)
d = result['cohen-d'].values[0]
# ANOVAは偏η二乗を返す
aov = pg.anova(dv='score', between='group', data=df)
eta_p2 = aov['np2'].values[0]
# 相関:rはすでに効果量
corr = pg.corr(x, y)
r = corr['r'].values[0]
効果量の信頼区間
常にCIを報告して精度を示す:
from pingouin import compute_effsize_from_t
# t検定の場合
d, ci = compute_effsize_from_t(
t_statistic,
nx=len(group1),
ny=len(group2),
eftype='cohen'
)
print(f"d = {d:.2f}, 95% CI [{ci[0]:.2f}, {ci[1]:.2f}]")
検定力分析
事前検定力分析(研究計画)
データ収集前に必要なサンプルサイズを決定:
from statsmodels.stats.power import (
tt_ind_solve_power,
FTestAnovaPower
)
# t検定:d = 0.5を検出するのに必要なnは?
n_required = tt_ind_solve_power(
effect_size=0.5,
alpha=0.05,
power=0.80,
ratio=1.0,
alternative='two-sided'
)
print(f"Required n per group: {n_required:.0f}")
# ANOVA:f = 0.25を検出するのに必要なnは?
anova_power = FTestAnovaPower()
n_per_group = anova_power.solve_power(
effect_size=0.25,
ngroups=3,
alpha=0.05,
power=0.80
)
print(f"Required n per group: {n_per_group:.0f}")
感度分析(研究後)
検出できる効果量を決定:
# グループ当たりn=50で、どの効果量を検出できるか?
detectable_d = tt_ind_solve_power(
effect_size=None, # これを解く
nobs1=50,
alpha=0.05,
power=0.80,
ratio=1.0,
alternative='two-sided'
)
print(f"Study could detect d ≥ {detectable_d:.2f}")
注:事後検定力分析(研究後に検定力を計算)は一般的に推奨されません。代わりに感度分析を使用してください。
詳細なガイダンスは references/effect_sizes_and_power.md を参照。
結果の報告
APA形式の統計報告
references/reporting_standards.md のガイドラインに従う。
報告に不可欠な要素
- 記述統計:すべてのグループ/変数のM、SD、n
- 検定統計量:検定名、統計量、自由度、正確なp値
- 効果量:信頼区間付き
- 仮定チェック:実施されたテスト、結果、実施されたアクション
- 計画されたすべての分析:有意でない結果も含む
報告テンプレート例
独立t検定
グループA(n = 48、M = 75.2、SD = 8.5)は
グループB(n = 52、M = 68.3、SD = 9.2)より有意に高いスコアを示した。
t(98) = 3.82、p < .001、d = 0.77、95% CI [0.36, 1.18](両側)。
正規性仮定(Shapiro-Wilk:グループA W = 0.97、p = .18;
グループB W = 0.96、p = .12)および分散の等質性仮定
(Levene F(1, 98) = 1.23、p = .27)は満たされた。
一元配置ANOVA
一元配置ANOVAはテスト条件のテストスコアに対する有意な主効果を示した。
F(2, 147) = 8.45、p < .001、η²_p = .10。
Tukey HSD事後比較によると、条件A(M = 78.2、SD = 7.3)は
条件B(M = 71.5、SD = 8.1、p = .002、d = 0.87)および
条件C(M = 70.1、SD = 7.9、p < .001、d = 1.07)より有意に高かった。
条件BとCに有意な差はなかった(p = .52、d = 0.18)。
重回帰分析
重回帰分析を実施して、学習時間、以前のGPA、および出席率からテストスコアを予測した。
全体モデルは有意であった。F(3, 146) = 45.2、p < .001、R² = .48、
調整R² = .47。学習時間(B = 1.80、SE = 0.31、β = .35、t = 5.78、
p < .001、95% CI [1.18, 2.42])および以前のGPA(B = 8.52、SE = 1.95、
β = .28、t = 4.37、p < .001、95% CI [4.66, 12.38])は有意な予測因子だった。
出席率は有意ではなかった(B = 0.15、SE = 0.12、β = .08、t = 1.25、
p = .21、95% CI [-0.09, 0.39])。多重共線性は懸念されなかった(全VIF < 1.5)。
ベイズ分析
弱情報事前分布(正規(0, 1)を平均差に使用)を用いてベイズ独立標本t検定を実施した。
事後分布はグループAがグループBより高いスコアであることを示唆した
(M_diff = 6.8、95% 信用区間 [3.2, 10.4])。
ベイズ因子 BF₁₀ = 45.3 はグループ間の差に対する非常に強い証拠を提供し、
グループAの平均がグループBの平均を上回る事後確率は99.8%であった。
収束診断は満足度が高かった(すべてのR̂ < 1.01、ESS > 1000)。
ベイズ統計
ベイズ法を使用する場合
以下の場合にはベイズアプローチを検討:
- 組み込む事前情報がある場合
- 仮説に関する直接確率陳述を希望する場合
- サンプルサイズが小さいまたは逐次データ収集を計画している場合
- 帰無仮説の証拠を定量化する必要がある場合
- モデルが複雑な場合(階層型、欠損データ)
references/bayesian_statistics.md で以下についての包括的なガイダンスを参照:
- ベイズの定理と解釈
- 事前分布の指定(情報的、弱情報的、非情報的)
- ベイズ因子を用いたベイズ仮説検定
- 信用区間対信頼区間
- ベイズt検定、ANOVA、回帰分析、階層型モデル
- モデル収束チェックと事後予測チェック
主な利点
- 直感的な解釈:「データが与えられたとき、パラメータがこの区間内にある確率は95%です」
- 帰無仮説の証拠:効果なしのサポートを定量化可能
- 柔軟性:p-ハッキングに関する懸念なし;データ到着時に分析可能
- 不確実性の定量化:完全な事後分布
リソース
このスキルは包括的な参考資料を含みます:
リファレンスディレクトリ
- test_selection_guide.md:適切な統計検定を選択するための意思決定ツリー
- assumptions_and_diagnostics.md:仮定違反のチェックと処理に関する詳細ガイダンス
- effect_sizes_and_power.md:効果量の計算、解釈、報告;検定力分析の実施
- bayesian_statistics.md:ベイズ分析法の完全ガイド
- reporting_standards.md:例を含むAPA形式報告ガイドライン
スクリプトディレクトリ
- assumption_checks.py:可視化を含む自動仮定チェック
comprehensive_assumption_check():完全なワークフローcheck_normality():Q-Qプロット付き正規性検定check_homogeneity_of_variance():箱ひげ図付きLevene検定check_linearity():回帰線形性チェックdetect_outliers():IQR法およびz法外れ値検出
ベストプラクティス
- 分析を事前登録する(可能な場合)確認的と探索的を区別するために
- 常に仮定をチェックする結果を解釈する前に
- 効果量を報告する信頼区間付き
- 計画されたすべての分析を報告する有意でない結果も含む
- 統計的有意性と実質的有意性を区別する
- 分析前後にデータを可視化する
- 診断をチェックする回帰/ANOVA(残差プロット、VIF等)
- 感度分析を実施する堅牢性を評価するために
- データとコードを共有する再現性のために
- 透明である違反、変換、決定について
回避すべき一般的な落とし穴
- p-ハッキング:何かが有意になるまで複数の方法でテストしないこと
- HARKing:探索的な知見を確認的として提示しないこと
- 仮定を無視する:チェックして違反を報告すること
- 有意性と重要性を混同する:p < .05 ≠ 有意義な効果
- 効果量を報告しない:解釈に不可欠
- 結果を選別する:計画されたすべての分析を報告すること
- p値を誤解する:仮説が真である確率ではない
- 多重比較:適切に族ごとのエラーを補正すること
- 欠損データを無視する:メカニズムを理解する(MCAR、MAR、MNAR)
- 有意でない結果を過度に解釈する:証拠がない ≠ 不在の証拠
開始チェックリスト
統計分析を開始するとき:
- 研究質問と仮説を定義
- 適切な統計検定を決定(test_selection_guide.mdを使用)
- 検定力分析を実施してサンプルサイズを決定
- データを読み込みて検査
- 欠損データと外れ値をチェック
- assumption_checks.pyを使用して仮定を検証
- 主要分析を実行
- 信頼区間付き効果量を計算
- 必要に応じて事後検定を実施(補正を伴う)
- 可視化を作成
- reporting_standards.mdに従い結果を記述
- 感度分析を実施
- データとコードを共有
サポートと参考文献
以下について:
- テスト選択:references/test_selection_guide.mdを参照
- 仮定:references/assumptions_and_diagnostics.mdを参照
- 効果量:references/effect_sizes_and_power.mdを参照
- ベイズ法:references/bayesian_statistics.mdを参照
- 報告:references/reporting_standards.mdを参照
主要な教科書:
- Cohen, J. (1988). Statistical Power Analysis for the Behavioral Sciences
- Field, A. (2013). Discovering Statistics Using IBM SPSS Statistics
- Gelman, A., & Hill, J. (2006). Data Analysis Using Regression and Multilevel/Hierarchical Models
- Kruschke, J. K. (2014). Doing Bayesian Data Analysis
オンラインリソース:
- APA スタイルガイド:https://apastyle.apa.org/
- 統計コンサルティング:Cross Validated (stats.stackexchange.com)
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- davila7
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。