Community研究&データ分析github.com

benno-mueller/survey-analysis

調査結果を調査統計家のように評価 - クリーニング、分布、クロス集計、有意差検定、ウェイトバック、サブグループレポート、匿名性、マネジメントサマリー。統計のみ。

survey-analysis とは?

このスキルは、生のサーベイデータを専門的な調査研究者が承認するような分析結果に変換します。全ての数値にベースがあり、不確実性は正直に述べられ、差異は確かな場合にのみ主張され、回答者が特定されることはありません。このスキルはツールやトピックに依存せず、特定の調査に固有の内容は全て「パラメータ」(フェーズ0)として扱われ、ハードコードされません。主要な対応プラットフォームとしてはClaude Code, Cursor, Codexなどがあり、Python(pandas/scipy)またはRを使用して全ての計算をコード内で実行します。フェーズ0から10までの体系的なプロセスを通じて、データの取り込み、クリーニング、推論フレームワークとウェイト設定、分布の作成、クロス集計と有意差検定、サブグループレポート、尺度・指標の構築、自由回答の分析、無回答と代表性の評価、そして解釈・マネジメントサマリー・レポートの作成を行います。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/benno-mueller/survey-analysis/tree/HEAD

Installed? Explore more 研究&データ分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

サーベイ分析

生のサーベイエクスポートを、プロの調査研究者が承認するような分析結果に変換します。 全ての数値にはベースがあり、不確実性は正直に述べられ、差異は確かな場合にのみ主張され、回答者が特定されることはありません。

このスキルはツールやトピックに依存しません。特定の調査に固有の内容は全てパラメータ(フェーズ0)として扱われ、ハードコードされた前提ではありません。

基本ルール(全ての調査に適用され、「インサイト」に対する他のいかなる要望よりも優先されます)

  1. 統計的解釈のみ。 データが示す内容を説明します:規模、精度、ロバスト性、差異、一貫性。結果がそうである理由についての説明、原因、動機、仮説を決して提供しないでください(「おそらく...のため」、「これは...を示している可能性がある」などの曖昧な表現も含みません)。回答者自身が述べた理由(自由回答)は、回答者が言ったこととして報告しても構いません。
  2. デフォルトは等ウェイト。 各回答は1回カウントされます。ウェイトは、調査設計で必要とされる場合(例:不均衡サンプリング、データに付随するウェイト変数)、またはパラメータで指定されている場合にのみ使用します。自らの判断でウェイト付けを決して行わず、代わりに不均衡を限界として報告してください。
  3. クロス集計とサブグループレポートは許可された場合のみ。 結果を分解してよいかどうか、どの変数で、どのような制限下で行うかは、調査所有者の決定です(crosstabs, subgroup_reports, anonymity パラメータ)。許可がない場合は合計のみ。
  4. 全ての計算はコード(Python with pandas/scipy、またはR)で行います。散文で数値を推定しないでください。コピーに対して作業し、ユーザーの元データを決して変更しないでください。

バンドルファイル

ファイル使用フェーズ
references/methods.mdフェーズ3-9: 数式、検定選択、ウェイト設定、開示制御、実践例
references/reporting.mdフェーズ10: マネジメントサマリー、アクションフィールド、構成、表現、グラフ
references/data-sources.mdフェーズ1: エクスポート形式(LimeSurvey, MS Forms, Google Forms, SurveyMonkey, SPSS/R)
scripts/survey_stats.py全フェーズ: テスト済みヘルパー - 有限母集団補正付き信頼区間、最悪ケースの無回答範囲、検定と効果量、p値調整、有意性文字付きバナーテーブル、最小検出差、レーキングとデザイン効果、グループ開示計画、セル抑制、クロンバックのα、品質フラグ
assets/survey-config.template.yamlフェーズ0: パラメータファイル

このSKILL.mdのみがインストールされている場合、最後のセクションコアルールが最低限必要なものです。数式は自分でコードに実装してください。


フェーズ0 - パラメータ

記入済みの survey-config.yaml(テンプレートは assets/)を探してください。それ以外の場合は、以下のパラメータを収集します。データやファイルから読み取れる事実は自分で読み取り、判断はユーザーに委ねます。 未決定の項目は1回のラウンドで質問してください(最大4問)、各質問には推奨するデフォルト値を添えてください。回答者がいない場合はデフォルト値を使用し、レポートの「前提」にリストしてください。デフォルトは意図的に制限的に設定されています:内訳なし、ウェイトなし。

パラメータ意味ソースデフォルト
population.definition調査の対象者ユーザーに問い合わせ- (必須)
population.size_N対象母集団の規模ユーザーに問い合わせnull = 未知または非常に大規模
population.designcensus, simple_random, stratified, quota, self_selectedユーザーに問い合わせself_selected (最も保守的)
population.known_margins特性ごとの既知の母集団数ユーザーに問い合わせ / ファイルなし
fieldwork.invited / completes / partials / ineligible結果数データ + ユーザーに問い合わせcompletes = 送信日のあるレコード
purposedescribe, compare_groups, test_hypotheses, track_waves, benchmarkユーザーに問い合わせdescribe
hypotheses事前指定された統計的比較(確認的)ユーザーに問い合わせなし -> 全ての比較は探索的
crosstabs.modenone, specified(指定された変数), banner(完全なテーブルバンド)ユーザーに問い合わせnone
crosstabs.variables使用可能な分解変数ユーザーに問い合わせ[]
crosstabs.forbidden_combinations決して交差させてはならない変数のペアユーザーに問い合わせ全てのデモグラフィック変数の2変数組み合わせ
subgroup_reports.enabled単位(サイト、部門など)ごとの個別レポートユーザーに問い合わせfalse
subgroup_reports.unit_variable / min_n / min_response_rate / compare_to_total単位レポートの制限ユーザーに問い合わせ- / anonymity.min_group_n / なし / true
anonymity.min_group_n報告されるグループの最小回答者数ユーザーに問い合わせ / 合意5
anonymity.min_cell_n0 < カウント < 値 のセルを抑制ユーザーに問い合わせ / 合意null (オフ)
weighting.modenone, design(データ内のウェイト変数), raking調査設計 / パラメータnone
weighting.variable / margins / trimdesign / raking の詳細パラメータ- / - / [0.3, 3]
analysis.confidence_level / alpha / powerデフォルト0.95 / 0.05 / 0.80
analysis.multiple_testingholm, bh, noneデフォルトholm(確認的)、bh(バナー/探索的)
analysis.dont_know / dont_know_codes「わからない / 無回答」の扱いデフォルトベースから除外、別途報告
analysis.likert_top_box同意とみなすカテゴリデフォルト4-6段階では2、7段階以上では3
analysis.item_polarity各項目の好ましい方向コードブック + ユーザーに問い合わせラベルから判断
analysis.quality_rulesスピーディング比率、ストレートライニングの最小項目数デフォルト中央値の0.4倍; 5項目
open_text.quotesnone, paraphrase, anonymized_verbatimユーザーに問い合わせparaphrase
recommendations.modenone, action_fields, action_fields_with_measuresユーザーに問い合わせaction_fields
recommendations.measuresユーザーが提供する、調査結果にマッピングする施策ユーザーに問い合わせ[]
benchmarks同一文言の過去の波 / 外部調査ユーザーに問い合わせなし
output.audience / format / languageユーザーに問い合わせ / 会話lay / 環境デフォルト / ユーザーの言語

フェーズ0は、ユーザーが修正可能な短いパラメータサマリーで終了します。

フェーズ1 - 取り込みとコードブック

該当するエクスポートについて references/data-sources.md を読んでください。その後:

  1. データを読み込みます。直接識別子(IP、メール、氏名、トークン、リファラーURL、不要な場合は正確なタイムスタンプ)を直ちに削除し、その旨を伝えます。
  2. コードブックを作成します:変数、質問文、タイプ(単一選択、複数選択、リッカートk点、数値、自由文、マトリックス行、メタデータ)、値ラベル、尺度の方向と極性、逆転項目、欠損/「わからない」コード、フィルター条件(誰が質問を表示されたか)。
  3. 尺度の方向と逆転項目はラベルから取得し、決して仮定から判断しないでください。ラベルがない場合は質問してください。
  4. 分析ファイルに再コード化します。マッピングはログに保持します。

フェーズ2 - データクリーニング

フラグを立て、文書化し、その後でのみ決定します。決して黙って削除しないでください。

  • 完了と部分完了の定義。分析サンプルを定義します(デフォルト:完了。部分完了は、ユーザーが同意した場合にのみ、回答した項目についてのみ使用)。ページごとの離脱。
  • 重複(同一トークン、またはほぼ同一のタイムスタンプを持つ同一の回答ベクトル)。
  • スピーダー:合計時間 < 中央値の ratio 倍。マトリックス内のストレートライナー(>= min_items 項目)。件数とパターンをユーザーに示した後にのみ除外。nが小さい場合は、単一のフラグだけで決して除外しないでください。
  • 項目ごとの無回答。> 10% にフラグ。
  • 範囲外の値、フィルター違反、不可能な組み合わせ。

出力:データクリーニングログ(チェック、カウント、判断、理由)。

フェーズ3 - 推論フレームワークとウェイト設定

references/methods.md のセクション1と7を読んでください。調査設計が、どのような不確実性の記述が正当かを決定します:

状況報告内容
既知の小規模母集団の全数調査またはほぼ全数調査 (n/N > 5%)有限母集団補正(FPC)付き信頼区間 プラス 主要数値の最悪ケース無回答範囲。無回答チェックが一般化を支持しない限り、結果は「回答者間では」と表現。
確率標本標準信頼区間(n/N > 5% の場合はFPC)。選択確率が不均等な場合はデザインウェイト。
自己選択 / 公開リンク / 便宜標本母集団への推論は不可。記述的にシェアを報告。信頼区間は、表示する場合でも「統計的精度」としてのみ、明示的な注意書きを添えて。

ウェイト設定は weighting.mode のみに従います(基本ルール2)。ウェイトを使用する場合:加重と非加重の主要数値を並べて報告し、Kishのデザイン効果と有効n(kish_deff, effective_n)を報告し、信頼区間と検定には有効nを使用します。

フェーズ4 - 全回答の分布

  • 全ての項目、全ての数値にフィルターと除外後のベース(n)を付けて。
  • 単一選択:度数とシェア。主要数値の信頼区間(Wilson、該当する場合はFPC付き)。
  • リッカート:最初に完全分布、次にトップボックス/ボトムボックスと信頼区間、中央値。平均 +/- 標準偏差は補足としてのみ、かつ5段階以上の項目または複数項目尺度の場合のみ。
  • 複数選択:オプションごとの回答者の割合。合計は100%を超える場合があります。
  • 数値:最初に中央値とIQR、次に平均/標準偏差。外れ値を確認。
  • 四捨五入:n < 200 の場合は整数パーセント。合計が100%にならない場合があります - 一度その旨を明記。
  • 主要数値と50%(または他の基準値)の比較は、mdd_one_proportion を考慮してのみ:50%の信頼区間内のシェアは「約半数」。

フェーズ5 - クロス集計と有意差検定

crosstabs.mode に従います。none の場合はこのフェーズを完全にスキップし、メソッドボックスにその旨を記載します。

  1. まず開示制御。 crosstabs.variables のみを使用。forbidden_combinations を絶対に交差させない。各分解に対して reportable_groups() を実行:anonymity.min_group_n 未満のグループは削除。さらに、削除された残りが合計から導出可能な場合は二次抑制を適用。anonymity.min_cell_n が設定されている場合は適用。
  2. 検出力。 各分解に対して最小検出差を計算(mdd_two_proportions、検出力80%)。それを報告し、「有意差なし」が正しく解釈されるようにします(「xポイント未満の差は検出できません」)。
  3. 検定。 データ型に応じて選択(references/methods.md、セクション3):カテゴリにはカイ二乗/フィッシャーの正確確率検定、順序項目にはマン・ホイットニー/クラスカル・ウォリス、計量尺度スコアにはウェルチの検定。常に効果量とそのラベルを添えて。p値だけでは決して発見とはなりません。
  4. バナーテーブル(crosstabs.mode: banner):全ての項目 x 許可された変数に対して banner_table() / format_banner() - 列パーセント、ベース行、有意性文字(文字は、その文字を持つ列よりも有意に高いシェアを示す)、文字は行内で調整されたp値に基づく。バンドは探索的:テキストに差異を記載する前に、バンド全体の全p値をBenjamini-Hochberg法(返された tests に対して p_adjust)で一緒に調整する。バナーテーブルは付録に。テキストに記載するのは、バンド全体の調整後も有意であり、かつ少なくとも小さな効果量を持つロバストな差異のみ。
  5. 確認的結果(事前指定された hypotheses)と探索的結果を分離する。
  6. 有意でない差異は「信頼できる差異なし」であり、決して傾向ではありません。

フェーズ6 - サブグループレポート

subgroup_reports.enabled が true の場合のみ。unit_variable の各単位について:

  1. reportable_groups(sizes, min_n, total_published=True, invited, min_response_rate) がどの単位がレポートを取得するかを決定します。残余ルールが重要です:1つの小さな単位が保留されるが、他全てと合計が公開される場合、その結果は減算で計算可能です - この関数は、保留された残余自体が >= min_n になるまで、さらに単位を保留します。保留された単位とその理由(数値は含めない)を、公開レポートではなく調査所有者向けにリストします。
  2. 各単位レポートはメインレポートと同じ構造、単位自身のベースと信頼区間(単位の招待数をNとするFPC)、および compare_to_total が true の場合は参照用の合計を使用します。crosstabs がその変数を許可しない限り、単位同士を比較しないでください。
  3. 単位レポート内では、明示的に許可され、全てのグループが閾値を通過しない限り、これ以上の内訳は行いません。

フェーズ7 - 尺度と指標

尺度として設計された項目セット(または検証済みの質問票)に対してのみ。逆転項目を再コード化し、クロンバックのα(および因子分析パッケージが利用可能な場合はマクドナルドのω)、項目-全体相関、削除時のαを計算します。α >= .70(3項目の短縮版では >= .60、注意書き付き)の場合のみ、尺度スコアを構築します。

フェーズ8 - 自由回答

references/methods.md、セクション6を参照。全ての回答を読み、帰納的コードフレームを構築し、複数コードを許可してコーディングし、テーマを「n人の回答者のうちx人が...に言及」として報告します。2回目のコーディングパスを20%以上に対して実施し、一致率を報告します。コーディングは単一コーダーとしてAIによって行われたことを明記します。引用は open_text.quotes で許可された場合のみ、識別可能な情報を除去した上で。回答者が書いたことを報告し、それに対する説明を追加しないでください。

フェーズ9 - 無回答と代表性

  • 回答率(RR1 / RR2、response_rates())、全体および既知のグループ別。
  • 回答者の構成を known_margins と比較(適合度検定)。グループ間で回答率が15ポイント以上異なる場合は、限界として報告(サブグループレポートが許可されている場合は、グループ別の主要数値も)。weighting.mode が指定されない限り、ウェイトは付けません。
  • 項目無回答パターン。タイムスタンプが存在する場合は早期回答者 vs 後期回答者。
  • 結果が誰に適用され、どのような限界があるかを明示的に結論します。

フェーズ10 - 解釈、マネジメントサマリー、レポート

references/reporting.md を読んでください。

  • 解釈 = 統計的解釈のみ(基本ルール1):どの程度大きいか、どの程度精密か、どの程度ロバストか(信頼区間、最悪ケースバウンド)、許可されたグループ間での一貫性、同一文言のベンチマークとの比較。
  • マネジメントサマリー(最初のページ):nと不確実性を伴う3~7の主要な発見、その後アクションフィールド。
  • アクションフィールド(recommendations.mode):統計基準のみで項目やトピックをランク付け - 好ましくない回答の割合、最悪ケースバウンド下でのロバスト性

関連スキル