mcpField
D
data-analysis

data-analysis

github.com/seb1nデータ・データベース236147 回インストール12 週間前に更新
リポジトリ

data-analysis について

data-analysisは、構造化データの統計分析を行うAIエージェント向けスキルです。pandas、scipy、statsmodelsを使い、データ概観から傾向、仮説検定、外れ値、分析上の制約まで扱います。

主な機能

  1. 01構造化データの読み込みと確認
  2. 02記述統計の算出
  3. 03傾向とカテゴリ別パターンの分析
  4. 04相関分析と仮説検定
  5. 05外れ値の検出と結果の要約

活用シーン

  1. 01CSVやExcelデータの分布要約
  2. 02時系列データの傾向と季節性の分析
  3. 03変数間の関係と仮説の検定
  4. 04外れ値の特定と分析上の制約の報告

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/seb1n/awesome-ai-agent-skills --skill data-analysis

インストール後、Claude Code で/data-analysisを入力して読み込まれたか確認します。

詳細

データ分析

このスキルを使用すると、AI エージェントは構造化データセットに対して厳密な統計分析を実行できます。エージェントはデータを読み込み、記述統計と推測統計を算出し、傾向と相関を特定し、仮説を検定して、実行につながるインサイトを導き出します。CSV、Excel、Parquet、JSON の入力に対応し、分析には pandas、scipy、statsmodels を活用します。

ワークフロー

  1. データを読み込み、プロファイルを確認します。 データセットを pandas の DataFrame に読み込み、形状、列の型、メモリ使用量を確認します。先頭と末尾の行を表示して、データが正しく読み込まれたことを確認します。列のずれやエンコーディングの問題など、明らかな構造上の問題がないか確認します。

  2. 記述統計を算出します。 すべての数値列について、平均値、中央値、標準偏差、歪度、尖度を含む要約統計量を生成します。カテゴリ列については、値の出現回数と最頻値を算出します。この手順により、各変数の分布を把握するための基準を設定できます。

  3. 傾向とパターンを特定します。 時系列データには、移動平均、変化率、季節分解を適用します。時系列ではないデータには、グループ化集計とピボットテーブルを使用して、カテゴリ間のパターンを明らかにします。単調な傾向や周期的な挙動があれば記録します。

  4. 相関分析と仮説検定を実施します。 ピアソン相関行列とスピアマン相関行列を算出し、変数間の関係を定量化します。適切な場合は仮説検定(t 検定、カイ二乗検定、ANOVA)を実施し、統計的有意性を判断します。効果量と併せて、p 値と信頼区間を報告します。

  5. 異常値と外れ値を検出します。 IQR 法と z スコアを使用して、通常の範囲から大きく逸脱するデータ点を特定します。外れ値をドメインの文脈と照らし合わせ、エラー、まれな事象、意味のあるシグナルのいずれに当たるかを判断します。

  6. 調査結果をレポートにまとめます。 具体的な数値を根拠として、主なインサイトを平易な言葉で要約します。ビジネスへの影響または統計的有意性に基づいて、調査結果に優先順位を付けます。サンプルサイズの制約や交絡変数など、制限事項と注意点も含めます。

対応テクノロジー

  • pandas — データの読み込み、操作、集計
  • scipy.stats — 仮説検定、統計分布
  • statsmodels — 時系列分解、回帰分析
  • numpy — 数値計算

使用方法

データセットのファイルパスと分析目標の説明をエージェントに渡します。必要に応じて、対象とする列、仮説検定の有意水準(デフォルトは alpha=0.05)、時系列手法を適用するかどうかも指定します。

例

例 1:pandas を使用した売上 CSV の分析
import pandas as pd
from scipy import stats

# Load the dataset
df = pd.read_csv("sales_2024.csv", parse_dates=["order_date"])

# Descriptive statistics
print(df[["revenue", "units_sold", "discount"]].describe())
#          revenue  units_sold  discount
# count   8450.00     8450.00   8450.00
# mean     312.45       4.12      0.08
# std      189.73       2.87      0.05
# min       12.00       1.00      0.00
# max     2450.00      47.00      0.35

# Correlation analysis
corr = df[["revenue", "units_sold", "discount"]].corr(method="pearson")
print(corr)
#             revenue  units_sold  discount
# revenue       1.000       0.847    -0.213
# units_sold    0.847       1.000    -0.089
# discount     -0.213      -0.089     1.000

# Hypothesis test: do discounted orders produce higher revenue?
discounted = df[df["discount"] > 0]["revenue"]
full_price = df[df["discount"] == 0]["revenue"]
t_stat, p_value = stats.ttest_ind(discounted, full_price)
print(f"t={t_stat:.3f}, p={p_value:.4f}")
# t=-3.217, p=0.0013 — discounted orders have significantly lower revenue per order
例 2:季節分解を使用した時系列分析
import pandas as pd
from statsmodels.tsa.seasonal import seasonal_decompose

# Load monthly revenue data
df = pd.read_csv("monthly_revenue.csv", parse_dates=["month"], index_col="month")

# Decompose into trend, seasonal, and residual components
result = seasonal_decompose(df["revenue"], model="additive", period=12)

print("Trend (last 6 months):")
print(result.trend.dropna().tail(6))
# 2024-07    48230.12
# 2024-08    49012.45
# 2024-09    49780.33
# 2024-10    50234.10
# 2024-11    51002.88
# 2024-12    51890.67

print("\nSeasonal peaks:")
seasonal = result.seasonal.groupby(result.seasonal.index.month).mean()
print(seasonal.nlargest(3))
# month
# 11    8923.40   (November — holiday pre-orders)
# 12    7654.20   (December — holiday sales)
# 3     3210.15   (March — spring promotions)

# The upward trend of ~$600/month suggests 14.5% annualized growth.
# Strong Q4 seasonality accounts for roughly 18% of total annual revenue.

ベストプラクティス

  • 統計量を算出する前に、必ず生データを確認してください。区切り文字の誤りやエンコーディングの問題など、気づきにくい解析エラーによって、その後のすべての結果が無効になる可能性があります。
  • p 値と併せて効果量を報告してください。統計的有意性だけでは、実質的な重要性を示すことにはなりません。
  • データ分布に大きな歪みがある場合やサンプルサイズが小さい場合は、ノンパラメトリック検定(マン・ホイットニー検定、クラスカル・ウォリス検定)を使用してください。
  • 意味のあるカテゴリ(地域、製品ライン、顧客層)ごとに分析を分割し、シンプソンのパラドックスを避けてください。
  • 定常性(時系列の場合)、正規性(パラメトリック検定の場合)、観測値の独立性など、前提条件を明示してください。
  • 意外な結果は、結論として提示する前に、ホールドアウトサンプルまたは別の手法を用いて検証してください。

エッジケース

  • 重要な列の値が欠損している場合。 対象の列で null 値が 30% を超える場合は、補完によって大きなバイアスが生じる可能性があることをユーザーに警告します。完全ケースのサブセットのみを分析する方法も提案します。
  • 極端に偏った分布。 歪度が |2.0| を超える場合は、平均値による誤解を避けるため、対数変換を行うか、中央値に基づく統計量を使用します。
  • 多重共線性。 2 つの予測変数の相関が 0.9 を超える場合は、その旨を指摘し、係数の過大評価を避けるため、どちらか一方を削除するか、正則化モデルを使用するよう推奨します。
  • サンプルサイズが小さい場合(n < 30)。 正確検定またはブートストラップ法に切り替え、それに応じて信頼区間の幅を広げます。
  • 単一の列に複数のデータ型が混在している場合。 慎重に型変換を行い、値を黙って削除するのではなく、変換できなかった値の数を報告します。

コメント