サーベイ分析
生のサーベイエクスポートを、プロの調査研究者が承認するような分析結果に変換します。 全ての数値にはベースがあり、不確実性は正直に述べられ、差異は確かな場合にのみ主張され、回答者が特定されることはありません。
このスキルはツールやトピックに依存しません。特定の調査に固有の内容は全てパラメータ(フェーズ0)として扱われ、ハードコードされた前提ではありません。
基本ルール(全ての調査に適用され、「インサイト」に対する他のいかなる要望よりも優先されます)
- 統計的解釈のみ。 データが示す内容を説明します:規模、精度、ロバスト性、差異、一貫性。結果がそうである理由についての説明、原因、動機、仮説を決して提供しないでください(「おそらく...のため」、「これは...を示している可能性がある」などの曖昧な表現も含みません)。回答者自身が述べた理由(自由回答)は、回答者が言ったこととして報告しても構いません。
- デフォルトは等ウェイト。 各回答は1回カウントされます。ウェイトは、調査設計で必要とされる場合(例:不均衡サンプリング、データに付随するウェイト変数)、またはパラメータで指定されている場合にのみ使用します。自らの判断でウェイト付けを決して行わず、代わりに不均衡を限界として報告してください。
- クロス集計とサブグループレポートは許可された場合のみ。 結果を分解してよいかどうか、どの変数で、どのような制限下で行うかは、調査所有者の決定です(
crosstabs,subgroup_reports,anonymityパラメータ)。許可がない場合は合計のみ。 - 全ての計算はコード(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.design | census, simple_random, stratified, quota, self_selected | ユーザーに問い合わせ | self_selected (最も保守的) |
population.known_margins | 特性ごとの既知の母集団数 | ユーザーに問い合わせ / ファイル | なし |
fieldwork.invited / completes / partials / ineligible | 結果数 | データ + ユーザーに問い合わせ | completes = 送信日のあるレコード |
purpose | describe, compare_groups, test_hypotheses, track_waves, benchmark | ユーザーに問い合わせ | describe |
hypotheses | 事前指定された統計的比較(確認的) | ユーザーに問い合わせ | なし -> 全ての比較は探索的 |
crosstabs.mode | none, 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_n | 0 < カウント < 値 のセルを抑制 | ユーザーに問い合わせ / 合意 | null (オフ) |
weighting.mode | none, design(データ内のウェイト変数), raking | 調査設計 / パラメータ | none |
weighting.variable / margins / trim | design / raking の詳細 | パラメータ | - / - / [0.3, 3] |
analysis.confidence_level / alpha / power | デフォルト | 0.95 / 0.05 / 0.80 | |
analysis.multiple_testing | holm, 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.quotes | none, paraphrase, anonymized_verbatim | ユーザーに問い合わせ | paraphrase |
recommendations.mode | none, action_fields, action_fields_with_measures | ユーザーに問い合わせ | action_fields |
recommendations.measures | ユーザーが提供する、調査結果にマッピングする施策 | ユーザーに問い合わせ | [] |
benchmarks | 同一文言の過去の波 / 外部調査 | ユーザーに問い合わせ | なし |
output.audience / format / language | ユーザーに問い合わせ / 会話 | lay / 環境デフォルト / ユーザーの言語 |
フェーズ0は、ユーザーが修正可能な短いパラメータサマリーで終了します。
フェーズ1 - 取り込みとコードブック
該当するエクスポートについて references/data-sources.md を読んでください。その後:
- データを読み込みます。直接識別子(IP、メール、氏名、トークン、リファラーURL、不要な場合は正確なタイムスタンプ)を直ちに削除し、その旨を伝えます。
- コードブックを作成します:変数、質問文、タイプ(単一選択、複数選択、リッカートk点、数値、自由文、マトリックス行、メタデータ)、値ラベル、尺度の方向と極性、逆転項目、欠損/「わからない」コード、フィルター条件(誰が質問を表示されたか)。
- 尺度の方向と逆転項目はラベルから取得し、決して仮定から判断しないでください。ラベルがない場合は質問してください。
- 分析ファイルに再コード化します。マッピングはログに保持します。
フェーズ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 の場合はこのフェーズを完全にスキップし、メソッドボックスにその旨を記載します。
- まず開示制御。
crosstabs.variablesのみを使用。forbidden_combinationsを絶対に交差させない。各分解に対してreportable_groups()を実行:anonymity.min_group_n未満のグループは削除。さらに、削除された残りが合計から導出可能な場合は二次抑制を適用。anonymity.min_cell_nが設定されている場合は適用。 - 検出力。 各分解に対して最小検出差を計算(
mdd_two_proportions、検出力80%)。それを報告し、「有意差なし」が正しく解釈されるようにします(「xポイント未満の差は検出できません」)。 - 検定。 データ型に応じて選択(
references/methods.md、セクション3):カテゴリにはカイ二乗/フィッシャーの正確確率検定、順序項目にはマン・ホイットニー/クラスカル・ウォリス、計量尺度スコアにはウェルチの検定。常に効果量とそのラベルを添えて。p値だけでは決して発見とはなりません。 - バナーテーブル(
crosstabs.mode: banner):全ての項目 x 許可された変数に対してbanner_table()/format_banner()- 列パーセント、ベース行、有意性文字(文字は、その文字を持つ列よりも有意に高いシェアを示す)、文字は行内で調整されたp値に基づく。バンドは探索的:テキストに差異を記載する前に、バンド全体の全p値をBenjamini-Hochberg法(返されたtestsに対してp_adjust)で一緒に調整する。バナーテーブルは付録に。テキストに記載するのは、バンド全体の調整後も有意であり、かつ少なくとも小さな効果量を持つロバストな差異のみ。 - 確認的結果(事前指定された
hypotheses)と探索的結果を分離する。 - 有意でない差異は「信頼できる差異なし」であり、決して傾向ではありません。
フェーズ6 - サブグループレポート
subgroup_reports.enabled が true の場合のみ。unit_variable の各単位について:
reportable_groups(sizes, min_n, total_published=True, invited, min_response_rate)がどの単位がレポートを取得するかを決定します。残余ルールが重要です:1つの小さな単位が保留されるが、他全てと合計が公開される場合、その結果は減算で計算可能です - この関数は、保留された残余自体が >=min_nになるまで、さらに単位を保留します。保留された単位とその理由(数値は含めない)を、公開レポートではなく調査所有者向けにリストします。- 各単位レポートはメインレポートと同じ構造、単位自身のベースと信頼区間(単位の招待数をNとするFPC)、および
compare_to_totalが true の場合は参照用の合計を使用します。crosstabsがその変数を許可しない限り、単位同士を比較しないでください。 - 単位レポート内では、明示的に許可され、全てのグループが閾値を通過しない限り、これ以上の内訳は行いません。
フェーズ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):統計基準のみで項目やトピックをランク付け - 好ましくない回答の割合、最悪ケースバウンド下でのロバスト性