パラメータ付き集約関数(20関数)
パラメータ付きの集約関数。SELECT stat_xxx(column, param) FROM table の形式で使用する。GROUP BY、HAVING、サブクエリなど SQLite3 の標準的な集約関数が使えるすべての文脈で利用可能。
← 関数リファレンス に戻る
基本統計量(パラメータ付き)
stat_trimmed_mean
トリム平均(切落し平均)を計算する。両端から一定割合のデータを除去して平均を求める。外れ値に対してロバスト。
$$\bar{x}{trim} = \frac{1}{n - 2k}\sum{i=k+1}^{n-k} x_{(i)}$$
ここで $k = \lfloor n \times proportion \rfloor$。
構文: stat_trimmed_mean(column, proportion)
| パラメータ | 説明 | 範囲 |
|---|---|---|
proportion |
各端から除去する割合 | 0.0 以上 0.5 未満 |
-- 5% トリム平均(両端の 5% ずつを除去)
SELECT stat_trimmed_mean(salary, 0.05) AS trimmed_mean FROM employees;
-- 10% トリム平均(最も一般的)
SELECT stat_trimmed_mean(score, 0.1) AS trimmed_10pct FROM exam;
-- 算術平均・中央値・トリム平均の比較
SELECT stat_mean(val) AS mean,
stat_trimmed_mean(val, 0.1) AS trimmed_mean_10,
stat_trimmed_mean(val, 0.25) AS trimmed_mean_25,
stat_median(val) AS median
FROM data;
-- proportion=0 → 算術平均、proportion→0.5 → 中央値に近づく
-- 外れ値がある場合の比較
CREATE TABLE outlier_test (val REAL);
INSERT INTO outlier_test VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(1000);
SELECT stat_mean(val) AS mean, -- 104.5(外れ値に引かれる)
stat_trimmed_mean(val, 0.1) AS trimmed_mean, -- 5.0(外れ値を除去)
stat_median(val) AS median -- 5.5
FROM outlier_test;
-- グループごとのロバスト平均
SELECT department,
stat_mean(salary) AS mean_salary,
stat_trimmed_mean(salary, 0.1) AS trimmed_salary
FROM employees
GROUP BY department;
順序統計量(パラメータ付き)
stat_quartile
四分位数(Q1, Q2, Q3)を一度に計算し、JSON で返す。
構文: stat_quartile(column)
戻り値: JSON 文字列 {"q1": ..., "q2": ..., "q3": ...}
| キー | 説明 |
|---|---|
q1 |
第1四分位数(25パーセンタイル) |
q2 |
第2四分位数(中央値、50パーセンタイル) |
q3 |
第3四分位数(75パーセンタイル) |
-- 基本的な使い方
SELECT stat_quartile(score) AS quartiles FROM exam;
-- → {"q1":45.5,"q2":62.0,"q3":78.25}
-- SQLite3 の json_extract() で個別値を取得
SELECT json_extract(stat_quartile(score), '$.q1') AS Q1,
json_extract(stat_quartile(score), '$.q2') AS Q2,
json_extract(stat_quartile(score), '$.q3') AS Q3
FROM exam;
-- IQR による外れ値検出(stat_iqr と組み合わせ)
SELECT val,
CASE
WHEN val < json_extract(q, '$.q1') - 1.5 * stat_iqr(val)
OR val > json_extract(q, '$.q3') + 1.5 * stat_iqr(val)
THEN 'outlier'
ELSE 'normal'
END AS status
FROM data,
(SELECT stat_quartile(val) AS q, stat_iqr(val) AS iqr FROM data);
-- グループごとの四分位数
SELECT category, stat_quartile(price) AS quartiles
FROM products
GROUP BY category;
-- 箱ひげ図の要約統計量
SELECT MIN(val) AS whisker_low,
json_extract(stat_quartile(val), '$.q1') AS q1,
json_extract(stat_quartile(val), '$.q2') AS median,
json_extract(stat_quartile(val), '$.q3') AS q3,
MAX(val) AS whisker_high
FROM data;
stat_percentile
パーセンタイル(百分位数)を計算する。
構文: stat_percentile(column, p)
| パラメータ | 説明 | 範囲 |
|---|---|---|
p |
パーセンタイル位置 | 0.0 〜 1.0 |
-- 中央値(50パーセンタイル)
SELECT stat_percentile(score, 0.5) AS median FROM exam;
-- 主要なパーセンタイル
SELECT stat_percentile(response_time, 0.50) AS p50,
stat_percentile(response_time, 0.90) AS p90,
stat_percentile(response_time, 0.95) AS p95,
stat_percentile(response_time, 0.99) AS p99
FROM api_logs;
-- SLA 監視: 95パーセンタイルが閾値以内か
SELECT endpoint,
stat_percentile(latency_ms, 0.95) AS p95_latency
FROM requests
GROUP BY endpoint
HAVING stat_percentile(latency_ms, 0.95) > 500;
-- 十分位数(デシル)
SELECT stat_percentile(income, 0.1) AS D1,
stat_percentile(income, 0.2) AS D2,
stat_percentile(income, 0.5) AS D5,
stat_percentile(income, 0.9) AS D9
FROM households;
パラメトリック検定
共通: 検定結果の JSON 形式
パラメトリック検定およびノンパラメトリック検定の関数は、結果を JSON 文字列で返す。
{"statistic": 5.744, "p_value": 0.000278, "df": 9}
| キー | 説明 |
|---|---|
statistic |
検定統計量 |
p_value |
p 値(両側検定) |
df |
自由度(該当しない場合は null) |
SQLite3 の json_extract() で個別値を取得可能。
-- p値だけを取り出す例
SELECT json_extract(stat_t_test(val, 0), '$.p_value') AS p_value FROM data;
stat_z_test
1標本 z 検定を実行する。母標準偏差が既知の場合に母平均を検定する。
$$z = \frac{\bar{x} - \mu_0}{\sigma / \sqrt{n}}$$
構文: stat_z_test(column, mu0, sigma)
| パラメータ | 説明 |
|---|---|
mu0 |
帰無仮説の母平均 |
sigma |
既知の母標準偏差 |
戻り値: JSON {"statistic": z値, "p_value": ..., "df": null}
-- H0: μ = 100 (母標準偏差 σ = 15 が既知)
SELECT stat_z_test(iq_score, 100, 15) AS result FROM students;
-- → {"statistic":2.1,"p_value":0.0357,"df":null}
-- p値のみ取得して有意性判定
SELECT
json_extract(stat_z_test(weight, 500, 10), '$.p_value') AS p_value,
CASE
WHEN json_extract(stat_z_test(weight, 500, 10), '$.p_value') < 0.05
THEN 'reject H0'
ELSE 'fail to reject H0'
END AS decision
FROM products;
-- 製造ラインごとの品質検定(目標値: 100g, 既知σ: 2g)
SELECT line_id,
stat_z_test(weight, 100.0, 2.0) AS z_test_result
FROM production
GROUP BY line_id;
stat_t_test
1標本 t 検定を実行する。母標準偏差が未知の場合に母平均を検定する。
$$t = \frac{\bar{x} - \mu_0}{s / \sqrt{n}}, \quad df = n - 1$$
構文: stat_t_test(column, mu0)
| パラメータ | 説明 |
|---|---|
mu0 |
帰無仮説の母平均 |
戻り値: JSON {"statistic": t値, "p_value": ..., "df": ...}
最小データ数: 2
-- H0: μ = 0(差がないかを検定)
SELECT stat_t_test(improvement, 0) AS result FROM treatment;
-- → {"statistic":3.46,"p_value":0.0074,"df":9}
-- 平均体温が 36.5℃ かを検定
SELECT stat_t_test(body_temp, 36.5) AS result FROM patients;
-- p値と信頼区間を同時に取得
SELECT json_extract(stat_t_test(val, 0), '$.p_value') AS p_value,
stat_ci_mean(val, 0.95) AS confidence_interval
FROM data;
-- グループごとの検定
SELECT department,
stat_mean(salary) AS mean_salary,
stat_t_test(salary, 50000) AS test_vs_50k
FROM employees
GROUP BY department;
-- 投薬前後の差の検定(対応のあるデータは差を計算してから)
-- 差 = after - before を事前に計算しておく
SELECT stat_t_test(diff, 0) AS paired_test
FROM (SELECT after_val - before_val AS diff FROM paired_data);
stat_chisq_gof_uniform
カイ二乗適合度検定(均等分布への適合度)を実行する。観測度数が均等分布から乖離しているかを検定する。
$$\chi^2 = \sum_{i=1}^{k}\frac{(O_i - E)^2}{E}, \quad df = k - 1$$
構文: stat_chisq_gof_uniform(column)
戻り値: JSON {"statistic": χ²値, "p_value": ..., "df": ...}
最小データ数: 2
-- サイコロの目が均等に出ているかを検定
-- 各目の出現回数を集計した結果: 1→18, 2→15, 3→20, 4→22, 5→12, 6→13
CREATE TABLE dice (count REAL);
INSERT INTO dice VALUES (18),(15),(20),(22),(12),(13);
SELECT stat_chisq_gof_uniform(count) AS result FROM dice;
-- p_value が大きければ均等と矛盾しない
-- 曜日別のアクセス数が均等かを検定
SELECT stat_chisq_gof_uniform(access_count) AS uniformity_test
FROM (SELECT day_of_week, COUNT(*) AS access_count
FROM web_logs
GROUP BY day_of_week);
ノンパラメトリック検定
stat_shapiro_wilk
Shapiro-Wilk 検定を実行する。データが正規分布に従うかを検定する。最も検出力の高い正規性検定の一つ。
構文: stat_shapiro_wilk(column)
戻り値: JSON {"statistic": W値, "p_value": ..., "df": n}
最小データ数: 3
-- 正規性の検定
SELECT stat_shapiro_wilk(score) AS result FROM exam;
-- p_value > 0.05 → 正規分布と矛盾しない
-- 分析手法の選択に利用
SELECT
stat_shapiro_wilk(val) AS normality_test,
CASE
WHEN json_extract(stat_shapiro_wilk(val), '$.p_value') > 0.05
THEN 'parametric OK (e.g., t-test)'
ELSE 'use nonparametric (e.g., Wilcoxon)'
END AS recommendation
FROM data;
-- グループごとの正規性検定
SELECT category,
stat_shapiro_wilk(measurement) AS normality
FROM samples
GROUP BY category;
-- 歪度・尖度と組み合わせた分布の診断
SELECT stat_shapiro_wilk(val) AS shapiro_wilk,
stat_skewness(val) AS skewness,
stat_kurtosis(val) AS kurtosis
FROM data;
stat_ks_test
Lilliefors 検定(正規性検定)を実行する。データが正規分布に従うかを検定する。平均と分散をデータから推定するため、既知パラメータの標準 KS 検定ではなく Lilliefors 検定となる。
構文: stat_ks_test(column)
戻り値: JSON {"statistic": D値, "p_value": ..., "df": n}
最小データ数: 2
-- 正規性の Lilliefors 検定
SELECT stat_ks_test(response_time) AS ks_result FROM api_logs;
-- Shapiro-Wilk と Lilliefors の比較
SELECT stat_shapiro_wilk(val) AS shapiro_wilk,
stat_ks_test(val) AS lilliefors
FROM data;
-- 一般に Shapiro-Wilk のほうが検出力が高い
-- 大量データに対する正規性検定
-- Lilliefors 検定は大標本でも使いやすい
SELECT stat_ks_test(measurement) AS normality
FROM sensor_data
WHERE sensor_id = 'A001';
stat_wilcoxon
Wilcoxon 符号付順位検定を実行する。ノンパラメトリックな位置の検定。正規性を仮定しない t 検定の代替。
構文: stat_wilcoxon(column, mu0)
| パラメータ | 説明 |
|---|---|
mu0 |
帰無仮説の中央値 |
戻り値: JSON {"statistic": W値, "p_value": ..., "df": n}
最小データ数: 2
-- H0: 中央値 = 0(処理効果がないかを検定)
SELECT stat_wilcoxon(improvement, 0) AS result FROM treatment;
-- 正規性が疑わしい場合の t 検定の代替
-- まず正規性を確認
SELECT stat_shapiro_wilk(val) AS normality FROM data;
-- p < 0.05 の場合、t 検定の代わりに Wilcoxon を使用
SELECT stat_wilcoxon(val, 100) AS nonparam_test FROM data;
-- t 検定と Wilcoxon の結果を比較
SELECT stat_t_test(val, 0) AS t_test,
stat_wilcoxon(val, 0) AS wilcoxon
FROM data;
-- グループごとのノンパラメトリック検定
SELECT region,
stat_wilcoxon(delivery_days, 3) AS test_vs_3days
FROM orders
GROUP BY region;
推定
共通: 信頼区間の JSON 形式
信頼区間を返す関数は、結果を JSON 文字列で返す。
{"lower": 3.334, "upper": 7.666, "point_estimate": 5.5, "confidence_level": 0.95}
| キー | 説明 |
|---|---|
lower |
信頼区間の下限 |
upper |
信頼区間の上限 |
point_estimate |
点推定値 |
confidence_level |
信頼水準 |
stat_ci_mean
平均の信頼区間(t 分布ベース)を計算する。母標準偏差が未知の場合に使用。
$$\bar{x} \pm t_{\alpha/2, n-1} \cdot \frac{s}{\sqrt{n}}$$
構文: stat_ci_mean(column, confidence)
| パラメータ | 説明 | 典型値 |
|---|---|---|
confidence |
信頼水準 | 0.90, 0.95, 0.99 |
戻り値: JSON {"lower": ..., "upper": ..., "point_estimate": ..., "confidence_level": ...}
最小データ数: 2
-- 95% 信頼区間
SELECT stat_ci_mean(score, 0.95) AS ci FROM exam;
-- → {"lower":62.3,"upper":78.7,"point_estimate":70.5,"confidence_level":0.95}
-- 信頼水準を変えて比較
SELECT stat_ci_mean(val, 0.90) AS ci_90,
stat_ci_mean(val, 0.95) AS ci_95,
stat_ci_mean(val, 0.99) AS ci_99
FROM data;
-- 下限・上限を取り出して表示
SELECT json_extract(stat_ci_mean(salary, 0.95), '$.lower') AS ci_lower,
json_extract(stat_ci_mean(salary, 0.95), '$.point_estimate') AS mean,
json_extract(stat_ci_mean(salary, 0.95), '$.upper') AS ci_upper
FROM employees;
-- グループごとの信頼区間
SELECT department,
stat_ci_mean(salary, 0.95) AS salary_ci
FROM employees
GROUP BY department;
-- t 検定の結果と信頼区間を並べて表示
SELECT stat_t_test(val, 0) AS t_test,
stat_ci_mean(val, 0.95) AS ci_95
FROM data;
-- CI が 0 を含まない ⟺ t 検定で p < 0.05
stat_ci_mean_z
平均の信頼区間(z 分布ベース)を計算する。母標準偏差が既知の場合に使用。
$$\bar{x} \pm z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}}$$
構文: stat_ci_mean_z(column, sigma, confidence)
| パラメータ | 説明 |
|---|---|
sigma |
既知の母標準偏差 |
confidence |
信頼水準 |
戻り値: JSON {"lower": ..., "upper": ..., "point_estimate": ..., "confidence_level": ...}
最小データ数: 2
-- 母標準偏差 σ=15 が既知の場合の 95% 信頼区間
SELECT stat_ci_mean_z(iq_score, 15, 0.95) AS ci FROM students;
-- t 分布ベースと z 分布ベースの比較
SELECT stat_ci_mean(val, 0.95) AS ci_t,
stat_ci_mean_z(val, 3.0, 0.95) AS ci_z
FROM data;
-- n が大きいと両者はほぼ一致する
-- 品質管理: 工程の母標準偏差が管理図で既知の場合
SELECT batch_id,
stat_ci_mean_z(weight, 0.5, 0.99) AS weight_ci
FROM production
GROUP BY batch_id;
stat_ci_var
分散の信頼区間(カイ二乗分布ベース)を計算する。
$$\left[\frac{(n-1)s^2}{\chi^2_{\alpha/2}},\ \frac{(n-1)s^2}{\chi^2_{1-\alpha/2}}\right]$$
構文: stat_ci_var(column, confidence)
| パラメータ | 説明 | 典型値 |
|---|---|---|
confidence |
信頼水準 | 0.90, 0.95, 0.99 |
戻り値: JSON {"lower": ..., "upper": ..., "point_estimate": 標本分散, "confidence_level": ...}
最小データ数: 2
-- 分散の 95% 信頼区間
SELECT stat_ci_var(measurement, 0.95) AS var_ci FROM data;
-- 品質管理: ばらつきの信頼区間
SELECT production_line,
stat_sample_variance(weight) AS s2,
stat_ci_var(weight, 0.95) AS variance_ci
FROM products
GROUP BY production_line;
-- 標準偏差の信頼区間に変換
-- CI(σ) = [√lower, √upper]
SELECT SQRT(json_extract(stat_ci_var(val, 0.95), '$.lower')) AS sd_lower,
stat_sample_stddev(val) AS sd_estimate,
SQRT(json_extract(stat_ci_var(val, 0.95), '$.upper')) AS sd_upper
FROM data;
stat_moe_mean
平均の誤差マージン (Margin of Error) を計算する。信頼区間の半幅。
$$MOE = t_{\alpha/2, n-1} \cdot \frac{s}{\sqrt{n}}$$
構文: stat_moe_mean(column, confidence)
| パラメータ | 説明 | 典型値 |
|---|---|---|
confidence |
信頼水準 | 0.90, 0.95, 0.99 |
最小データ数: 2
-- 95% 信頼水準の誤差マージン
SELECT stat_moe_mean(score, 0.95) AS moe FROM exam;
-- 平均 ± MOE の形式で表示
SELECT stat_mean(val) AS mean,
stat_moe_mean(val, 0.95) AS moe,
stat_mean(val) - stat_moe_mean(val, 0.95) AS lower,
stat_mean(val) + stat_moe_mean(val, 0.95) AS upper
FROM data;
-- 標本サイズの十分性評価
-- MOE が目標精度以内かチェック
SELECT COUNT(val) AS n,
stat_moe_mean(val, 0.95) AS moe
FROM data;
-- MOE が大きすぎる場合はサンプル数を増やす
-- グループごとの推定精度比較
SELECT region,
COUNT(score) AS n,
stat_mean(score) AS mean,
stat_moe_mean(score, 0.95) AS moe
FROM survey
GROUP BY region;
効果量
stat_cohens_d
Cohen's d(1標本)を計算する。平均と仮説値の差を標本標準偏差で標準化した効果量。
$$d = \frac{\bar{x} - \mu_0}{s}$$
構文: stat_cohens_d(column, mu0)
| パラメータ | 説明 |
|---|---|
mu0 |
比較対象の値(帰無仮説の母平均) |
最小データ数: 2
-- 処理効果の大きさ
SELECT stat_cohens_d(improvement, 0) AS effect_size FROM treatment;
-- |d| < 0.2: 効果小、0.2-0.8: 効果中、> 0.8: 効果大
-- t 検定と効果量を合わせて報告
SELECT stat_t_test(val, 100) AS significance,
stat_cohens_d(val, 100) AS effect_size
FROM data;
-- p 値だけでなく効果量も報告するのが現代的な統計報告
-- グループごとの効果量
SELECT department,
stat_mean(score) AS mean_score,
stat_cohens_d(score, 70) AS effect_vs_benchmark
FROM employees
GROUP BY department;
-- 効果量の解釈ガイド
SELECT stat_cohens_d(val, 0) AS d,
CASE
WHEN ABS(stat_cohens_d(val, 0)) < 0.2 THEN 'negligible'
WHEN ABS(stat_cohens_d(val, 0)) < 0.5 THEN 'small'
WHEN ABS(stat_cohens_d(val, 0)) < 0.8 THEN 'medium'
ELSE 'large'
END AS interpretation
FROM data;
stat_hedges_g
Hedges' g(1標本)を計算する。Cohen's d にバイアス補正を適用した効果量。小標本で Cohen's d より正確。
$$g = d \times \left(1 - \frac{3}{4(n-1) - 1}\right)$$
構文: stat_hedges_g(column, mu0)
| パラメータ | 説明 |
|---|---|
mu0 |
比較対象の値 |
最小データ数: 2
-- バイアス補正付き効果量
SELECT stat_hedges_g(improvement, 0) AS effect_size FROM treatment;
-- Cohen's d と Hedges' g の比較
SELECT stat_cohens_d(val, 0) AS cohens_d,
stat_hedges_g(val, 0) AS hedges_g
FROM data;
-- n が大きいほど両者は一致する
-- n が小さい場合は Hedges' g のほうが正確
-- メタ分析用の効果量計算
SELECT study_group,
COUNT(outcome) AS n,
stat_hedges_g(outcome, 0) AS g,
stat_se(outcome) AS se
FROM clinical_trial
GROUP BY study_group;
時系列
stat_acf_lag
自己相関係数 (Autocorrelation Function) を計算する。時系列データのラグ k における自己相関。
$$r_k = \frac{\sum_{t=1}^{n-k}(x_t - \bar{x})(x_{t+k} - \bar{x})}{\sum_{t=1}^{n}(x_t - \bar{x})^2}$$
構文: stat_acf_lag(column, lag)
| パラメータ | 説明 | 範囲 |
|---|---|---|
lag |
ラグ次数 | 0 以上(0 のとき常に 1.0) |
注意:
lagがデータ数以上の場合はNULLを返す。
-- ラグ 1 の自己相関
SELECT stat_acf_lag(temperature, 1) AS acf_1 FROM daily_weather;
-- コレログラム(複数ラグの自己相関)
SELECT stat_acf_lag(val, 0) AS lag0, -- 常に 1.0
stat_acf_lag(val, 1) AS lag1,
stat_acf_lag(val, 2) AS lag2,
stat_acf_lag(val, 3) AS lag3,
stat_acf_lag(val, 5) AS lag5,
stat_acf_lag(val, 10) AS lag10
FROM time_series;
-- 季節性の検出(週次データの場合、lag=7 で高い自己相関)
SELECT stat_acf_lag(daily_sales, 7) AS weekly_autocorr
FROM sales_data;
-- 系列の独立性チェック
-- |ACF| が 2/√n 以内なら有意でないとみなす
SELECT stat_acf_lag(residual, 1) AS acf_1,
2.0 / SQRT(COUNT(*)) AS significance_bound
FROM model_residuals;
ロバスト統計
stat_biweight_midvar
Biweight Midvariance を計算する。外れ値に対して非常にロバストな分散の推定量。Tukey の biweight 関数に基づく。
構文: stat_biweight_midvar(column, c)
| パラメータ | 説明 | 典型値 |
|---|---|---|
c |
チューニング定数 | 9.0(デフォルト的) |
cが大きいほど外れ値に寛容になる。c = 9.0はガウス分布で効率 95% のロバスト推定を与える。
-- 標準的な biweight midvariance (c=9.0)
SELECT stat_biweight_midvar(val, 9.0) AS bwmv FROM data;
-- 標本分散との比較
SELECT stat_sample_variance(val) AS classical_var,
stat_biweight_midvar(val, 9.0) AS robust_var,
stat_mad_scaled(val) * stat_mad_scaled(val) AS mad_squared
FROM data;
-- チューニング定数 c の影響
SELECT stat_biweight_midvar(val, 6.0) AS strict, -- 外れ値に厳しい
stat_biweight_midvar(val, 9.0) AS standard, -- 標準的
stat_biweight_midvar(val, 12.0) AS lenient -- 外れ値に寛容
FROM data;
-- ロバストな分散推定を用いた品質管理
SELECT batch_id,
stat_median(weight) AS center,
SQRT(stat_biweight_midvar(weight, 9.0)) AS robust_sd
FROM production
GROUP BY batch_id;
リサンプリング
共通: ブートストラップ結果の JSON 形式
ブートストラップ関数は、結果を JSON 文字列で返す。
{"estimate": 5.5, "standard_error": 0.89, "ci_lower": 3.8, "ci_upper": 7.3, "bias": 0.07}
| キー | 説明 |
|---|---|
estimate |
元データから計算した統計量 |
standard_error |
ブートストラップ標準誤差 |
ci_lower |
ブートストラップ信頼区間の下限(95%) |
ci_upper |
ブートストラップ信頼区間の上限(95%) |
bias |
バイアス(リプリケート平均 − 推定値) |
注意: ブートストラップは乱数を使用するため、実行ごとに結果が若干異なる。再現性が必要な場合は十分な
n_bootstrapを指定する。
stat_bootstrap_mean
平均のブートストラップ推定を実行する。リサンプリングにより平均の標準誤差と信頼区間を推定する。
構文: stat_bootstrap_mean(column, n_bootstrap)
| パラメータ | 説明 | 典型値 |
|---|---|---|
n_bootstrap |
ブートストラップ反復回数 | 1000〜10000 |
-- 1000回のブートストラップ
SELECT stat_bootstrap_mean(score, 1000) AS result FROM exam;
-- ブートストラップ信頼区間と t 分布の信頼区間を比較
SELECT stat_ci_mean(val, 0.95) AS parametric_ci,
stat_bootstrap_mean(val, 5000) AS bootstrap_ci
FROM data;
-- 正規性が疑わしい場合はブートストラップのほうが信頼できる
-- 標準誤差のみ取り出す
SELECT json_extract(stat_bootstrap_mean(val, 2000), '$.standard_error') AS boot_se,
stat_se(val) AS analytic_se
FROM data;
-- グループごとのブートストラップ推定
SELECT category,
stat_bootstrap_mean(price, 1000) AS price_bootstrap
FROM products
GROUP BY category;
stat_bootstrap_median
中央値のブートストラップ推定を実行する。中央値の信頼区間は解析的に求めにくいため、ブートストラップが有用。
構文: stat_bootstrap_median(column, n_bootstrap)
| パラメータ | 説明 | 典型値 |
|---|---|---|
n_bootstrap |
ブートストラップ反復回数 | 1000〜10000 |
-- 中央値のブートストラップ信頼区間
SELECT stat_bootstrap_median(income, 2000) AS result FROM households;
-- 中央値の推定精度を評価
SELECT stat_median(val) AS median,
json_extract(stat_bootstrap_median(val, 5000), '$.standard_error') AS se_median,
json_extract(stat_bootstrap_median(val, 5000), '$.ci_lower') AS ci_lower,
json_extract(stat_bootstrap_median(val, 5000), '$.ci_upper') AS ci_upper
FROM data;
-- 外れ値がある場合:中央値のブートストラップが平均より安定
SELECT stat_bootstrap_mean(val, 1000) AS boot_mean,
stat_bootstrap_median(val, 1000) AS boot_median
FROM data_with_outliers;
stat_bootstrap_stddev
標準偏差のブートストラップ推定を実行する。
構文: stat_bootstrap_stddev(column, n_bootstrap)
| パラメータ | 説明 | 典型値 |
|---|---|---|
n_bootstrap |
ブートストラップ反復回数 | 1000〜10000 |
最小データ数: 2
-- 標準偏差のブートストラップ推定
SELECT stat_bootstrap_stddev(measurement, 2000) AS result FROM data;
-- 分散の信頼区間と比較
SELECT stat_ci_var(val, 0.95) AS parametric_var_ci,
stat_bootstrap_stddev(val, 5000) AS bootstrap_sd
FROM data;
-- グループ間のばらつきの比較(ブートストラップで信頼区間付き)
SELECT category,
stat_sample_stddev(price) AS sd,
stat_bootstrap_stddev(price, 1000) AS bootstrap
FROM products
GROUP BY category;