實證研究數據流水線
把「一堆雜亂資料」變成「可覆核的樣本流程 + 可追溯的編碼/欄位數據 + 可複現的模型 + 可投稿的圖表與文稿」。本 skill 不限定學科、語言或檔案格式;法律裁判文書只是「文字編碼」的一個範例,問卷、訪談、新聞、政策文件、實驗記錄、開放數據、網頁和資料庫匯出同樣適用。
本倉庫/套件內的範例數字、檔案名稱、路徑與變數值均為虛構佔位,不含任何真實資料、編碼數據、SPSS 數據或論文成稿。
何時使用
- 使用者給了一個資料夾,裡面混有 PDF、Word、Excel、CSV、文字、網頁、訪談稿、圖片或掃描件,要求整理、編碼、統計、出圖或寫成論文。
- 已有 CSV/SPSS 資料,需要清洗、合併、追加新資料、修正樣本口徑或重跑模型。
- 問卷、訪談、實驗、觀察、公開資料等需要敘述統計、組間比較、迴歸、異質性、穩健性或預測評估。
- 需要把實證部分做成 Word/PDF,且圖、表、正文數字必須一致。
- 使用者說「類似資料還要再做一遍」,希望重複同一套流程。
資料類型與處理邊界
| 資料 | 原生處理 | 說明 |
|---|---|---|
| 文字層、頁數、字元數、圖片數、加密狀態 | 掃描件先 OCR;圖片型 PDF 會被標記 image_only | |
| DOCX / ODT / PPTX | 段落、表格、投影片文字 | .doc/.ppt 舊格式先轉換 |
| XLSX / XLSM | 工作表、儲存格文字;唯讀開啟 | .xls 先轉換;建議安裝 openpyxl |
| CSV / TSV / JSON / JSONL | 欄位、行數、編碼、缺失;資料表品質稽核 | 編碼工作表會跳過表格,直接走 auto_stats |
| TXT / MD / HTML / XML / YAML / RTF | 純文字抽取;HTML 去標籤 | 網頁正文可用,腳本/樣式會被去掉 |
| 圖片(PNG/JPG/TIFF 等) | 檔案清單;尺寸/頁數 | 先 OCR,再進入編碼;本 skill 不自帶 OCR |
| 音訊/視訊 | 檔案清單 | 先轉寫/抽幀,再進入編碼;本 skill 不自帶 ASR |
| 壓縮檔 | 檔案清單 | 先解壓縮;稽核會標記 unsupported |
| 未知/專有格式 | 檔案清單 | 先轉換或匯出為上述格式 |
「任何資料」不等於「任何二進位都能直接解析」。本 skill 會先把所有檔案納入稽核和樣本對帳;不能直接讀的格式會明確標記並給出轉換路徑,不會靜默漏掉。
六條硬規則
- 先稽核,再編碼/建模。 沒弄清檔案數、可讀文字數、重複數、欄位缺失和排除原因之前,不要開始統計。
- 按內容去重,不按檔名。 同名不同文、同文不同名都很常見;至少用 MD5,再用標題/關鍵欄位/正文抽樣覆核。
- 一行 = 一個分析單位。 文書、受訪者、案件、機構、地區-年份或問卷答卷,必須在項目開始時寫死;多單位混合時在限制中說明。
- 每個編碼/抽取的值要有證據。 原文沒有記載就記
NA/未記載,不要預設記 0;否定表述、他人建議、轉述不能當作最終事實。 - 描述樣本 N ≠ 模型樣本 N。 每個模型個別報告 N 和篩選條件;正文、表、圖、摘要必須用同一套口徑。
- 關聯 ≠ 因果。 寫「關聯/對應/更可能」,不寫「導致/使得/證明有效」。
流程總覽
0 範圍與問題 → 1 資料/數據稽核 → 2 編碼或抽取協議 → 3 資料集
↓
7 終檢 ← 6 文稿組裝 ← 5 出版級圖表 ← 4 統計分析
每個階段都有「閘門」。閘門不過,不進入下一階段。
階段 0:範圍與問題
先寫一頁 scope.md,至少包含:
- 研究問題、理論機制、預期貢獻。
- 資料類型與來源:資料庫、檢索式/抽樣框、時間範圍、語言、地區。
- 分析單位:一份文件/一名受訪者/一個案件/一個機構/一份問卷。
- 納入/排除標準:時間、類型、語言、字數、重複、無法讀取、關鍵欄位缺失。
- 預期變數清單與角色:依變數、核心自變數、機制/調節變數、控制變數。
- 資料型態:文字、表格、混和;是否需要人工編碼、問卷量表、實驗分組或二手資料。
閘門:能用一句話說清「原始資料 → 可讀資料 → 範圍內樣本 → 分析樣本」的每一步會掉多少、為什麼掉。
階段 1:資料與數據稽核(必須先跑)
1A 檔案層級稽核
執行 scripts/audit_corpus.py:
python scripts/audit_corpus.py --root "資料目錄" --out-dir "output/audit" --min-chars 100
預設掃描所有支援的類型,不需要逐個寫 --ext;可用 --list-ext 查看完整列表。它會輸出:
| 檔案 | 用途 |
|---|---|
corpus_audit.csv | 每份檔案的副檔名、類型、位元組數、頁數/表數、字元數、圖片數、MD5、狀態、錯誤 |
corpus_summary.json | 機器可讀的彙總 |
corpus_duplicates.csv | 重複組、保留/移除建議 |
corpus_report.md | 可直接貼進專案日誌的中文報告 |
狀態機(每份檔案必須落入一類):
| 狀態 | 含義 | 是否進入分析 |
|---|---|---|
valid | 可開啟、有足夠文字/資料 | 是 |
metadata | ._*、.DS_Store 等系統檔案 | 否 |
hidden | 隱藏檔案/隱藏目錄 | 否,除非使用者確認 |
unsupported | 未知格式、壓縮檔、舊版 Office、缺少解析器 | 否,先轉換/解壓 |
quarantined | 位於 _duplicates 等跳過目錄 | 否,已隔離副本 |
zero_byte | 0 位元組 | 否 |
corrupt | 打不開、檔案損毀 | 否 |
encrypted | 有密碼/權限限制 | 否,除非能解密 |
textless | 有頁面/儲存格但文字不足 | 否,檢查是否空檔案或需重匯出 |
image_only | 圖片/掃描件,無文字層 | OCR 後可用 |
media | 音訊/視訊 | 先轉寫/抽幀 |
重複不是獨立的 status:內容相同的檔案仍是 valid,另用 dup_group/dup_role 標記 keeper/duplicate;報告中的 unique_valid_files 已扣除副本。
必須逐項處理:
._*、.DS_Store:macOS 元資料,不是研究資料;計入「非資料檔案」,不要計入樣本。可讀的._*會在 error 欄標註,需人工確認。- 隱藏檔案/目錄記為
hidden;副檔名不在支援列表的記為unsupported;_duplicates等跳過目錄記為quarantined。三者都不進樣本,但必須出現在總數和報告裡。 - 0 位元組、打不開、加密、文字不足:分別記錄為
zero_byte/corrupt/encrypted/textless;圖片型 PDF 記為image_only。 - 頂層/年份分布只統計唯一樣本(
valid且非副本);不要把元資料、損毀檔案或重複副本算進樣本結構。 - 重複副本:按 MD5 分組;保留「檔名含標識/年份、路徑更短、文字完整」的那一份,其餘移動到
_duplicates/,不要直接刪除。 - 檔名截斷、尾隨點、超長路徑:Windows 下常見;用 Python 讀取並在報告中記錄,不要靠檔案總管手工數。
- 同名不同文、正文相同但元資料/匯出設定不同(MD5 不同):必須按標題/關鍵欄位/正文抽樣人工覆核,不能只靠 MD5 自動去重。
然後執行 scripts/dedupe_corpus.py 生成去重計畫:
python scripts/dedupe_corpus.py --audit "output/audit/corpus_audit.csv" --root "資料目錄" --out-dir "output/audit" --apply
閘門:sample_flow.md 能對帳:
原始檔案數(含 .DS_Store/無副檔名檔案)
- 元資料/隱藏檔案
- 不支援/需轉換(unsupported)
- _duplicates 等隔離目錄(quarantined)
- 0 位元組/損毀/加密/文字不足
= 可讀資料數
- 不在範圍(時間/類型/語言)
= 有效資料數
- 重複副本
= 唯一樣本數(按 unique_valid_files)
- 關鍵變數缺失/無法編碼
= 分析樣本數
每個模型再有單獨的 N,不要用一個 N 打天下。
1B 表格資料品質稽核
如果資料本身是 CSV/Excel/SPSS 資料,先做欄位層級檢查,再編碼/建模:
- 行數、列數、每列類型(數值/分類/文字/日期)、缺失率、唯一值數。
- 主鍵/ID 是否唯一;重複行;同一單位多次記錄。
- 分類變數取值是否拼寫不一致(「是/否/1/0/TRUE」混用);日期範圍。
- 連續變數範圍、異常值、P99 截斷、是否需要 log 轉換。
- 問卷量表反向題、多選拆分、單位一致性。
- 編碼(UTF-8-SIG/GB18030)、小數分隔符、SPSS 變數名合法性。
csv_to_spss_syntax.py 會清理非法/重複變數名並生成 .sps;auto_stats.py 會給出敘述統計、組間檢驗和相關,用於發現資料問題,但不替代正式模型。
閘門:能說清每一欄的來源、類型、缺失處理、異常值處理和最終進入哪個模型。
階段 2:編碼/抽取協議
2.1 文字編碼
- 先寫
assets/codebook-template.md的實例:每個變數都要有定義、取值、判斷規則、證據位置、正例、反例、缺失規則。 - 用
scripts/make_coding_sheet.py抽取全文和候選證據句,生成編碼工作表;它只提供證據片段,不替你做最終判斷。- 預設
--profile generic:適用於訪談、新聞、政策、報告、網頁、會議記錄等任意文字資料。 --profile legal:額外抽取法院、案號、省份、案由候選;只在處理中國裁判文書時使用。- CSV/TSV/JSON/XLSX 等表格會跳過並提示走統計流程;圖片/音視訊會提示先 OCR/轉寫。
- 預設
- 人工/LLM 編碼時,每條記錄至少儲存
*_ev證據句;沒有證據句的編碼視為未完成。 - 抽 10%–15% 資料雙人/雙輪編碼,報告一致率或 Cohen's κ;分歧先裁決再改 codebook。
- codebook 凍結後再全量編碼;後續改動要記錄版本與影響範圍。
2.2 問卷/量表/結構化抽取
- 先做專案層級變數字典:題號、題幹、取值、反向題、缺失碼。
- 多選/排序題拆成 0/1 或多欄;量表總分先檢查信度(α/ω)和維度。
- 開放式題項可先主題編碼,再轉成計數/類別變數;不要直接把詞頻當主題。
- 表格資料的主鍵、單位、時間欄位必須能回溯到原始檔案。
閘門:隨機抽 10 條,能從「編碼值 → 證據句/原始欄位 → 原文/原始行」完整回溯;否則回到編碼表修規則。
詳見 references/02-coding-protocol.md。
階段 3:資料集
推薦三件套:
data/coded.jsonl:逐份資料編碼明細 + 證據片段,便於回溯。data/analysis.csv:分析用寬表,一行一個分析單位。data/analysis.sav:SPSS 直接開啟,帶變數標籤/值標籤。
必須包含的標記欄:
| 欄位 | 含義 |
|---|---|
in_scope | 是否屬於研究範圍(時間、類型、地區、語言) |
in_analysis | 是否進入敘述統計(排除無法編碼/關鍵缺失) |
model1_sample 等 | 每個模型單獨的樣本標記;不要用 in_analysis 代替 |
dup_group | 重複組 ID;保留份為 0,副本為 1 |
exclusion_reason | 排除原因,便於寫樣本流程 |
用 scripts/csv_to_spss_syntax.py 生成 .sps,避免手寫 GET DATA 時欄類型錯位。CSV 裡若是「是/否、有/無、支持/不支持」等二值文字,腳本會自動追加 RECODE ... ('是'=1) ('否'=0) INTO *_num,Logistic 直接用數值欄;不需要時加 --no-recode。
閘門:CSV 行數、JSONL 行數、SAV 行數、sample_flow.md 的唯一樣本數四者能對上;每個模型 N 能從篩選條件重算。
階段 4:統計分析與擴展
先寫分析計畫,再看結果。預設做「主分析 + 描述 + 雙變數 + 多變數 + 診斷 + 異質性 + 穩健性」的組合,而不是只跑一個主模型。
先用自動篩查腳本把敘述統計、組間檢驗、相關和單變數模型跑一遍:
python scripts/auto_stats.py --data data/analysis.csv --config assets/chart_config.example.json --out output/analysis_pack
它輸出 descriptives.csv、group_tests.csv、binary_rates.csv、correlations.csv、univariate_models.csv、univariate_skipped.csv 和 analysis_pack.md,用於發現值得進一步建模的變數;最終模型仍按預設定規格在 SPSS/R/Stata 中估計,不要用自動篩查的 p 值篩變數。
腳本會自動識別結果變數類型:
- 0/1 → 二元結果(Logistic/OR)。
- 連續數值 → 連續結果(OLS/均值+CI),多分類時組間檢驗用 Kruskal–Wallis。
- 多分類 → 分類結果,組間用卡方/Cramér's V;多分類自變數會用啞變數進入單變數 OLS/Logit,並以
變數_水平形式報告。 - 多分類結果本身不做二分類 Logit;主模型應改用多項 Logit 或先合併類別。
- 「是/否、有/無、支持/不支持」等常見文字標籤會自動映射為 0/1;其他二值文字必須用設定項
outcome_map指定正類。 - 完全分離、估計不穩定的單變數模型會寫入
univariate_skipped.csv,不會給出虛假的巨大 OR。 - 結果欄全缺失、過濾後 0 行、
filter_query拼錯時直接報錯退出。
最少包含:
- 敘述統計:每個分組的 N、佔比/均值、結果率、95% Wilson CI。
- 主模型:二元 Logistic / OLS / 多項 Logit,寫清依變數、參照組、核心自變數、控制變數。
- 機制/調節模型:交互項、簡單斜率或分組預測值。
- 穩健性:替換依變數、替換樣本、加入/移除控制變數、去重前後。
- 診斷:多重共線性、完全分離、樣本量不足的儲存格、校準/區分度。
- 異質性:分類別/分地區/分年份/分群體。
- 能做的探索:PCA、對應分析、聚類、預測 ROC/校準;標註「探索性」。
報告表至少要有:係數/OR、95%CI、p、N、擬合指標、參照組說明。每個模型單獨一行 N。
把做過的和跳過的分析寫進 analysis_manifest.md(模板見 references/08-analysis-expansion.md),不要只報顯著結果。
SPSS 語法模板與解釋規範見 references/03-analysis-spss.md;擴展分析清單見 references/08-analysis-expansion.md。
閘門:任意一個 OR/β 都能從 analysis.sps → 輸出檔案 → 表格 三段追溯;analysis_manifest.md 能解釋每個分析做/不做、樣本多少;正文沒有把「文字裡寫了某情況」寫成「實際產生了某效果」的因果結論。
階段 5:出版級圖表(預設做全景,不是只畫 8 張)
先跑 scripts/auto_chart_pack.py 生成全景圖表包,再從中挑正文主圖、附錄圖和需要補畫的模型圖:
python scripts/auto_chart_pack.py \
--data data/analysis.csv \
--config assets/chart_config.example.json \
--out output/chart_pack --tiff
連續/多分類結果不需要改腳本:結果變數會自動切換為「結果分布 + 分組均值/構成」圖;文字結果同樣可用 outcome_map 指定編碼。--coef 支援 metric(OR/HR/RR/beta)與 n 欄,森林圖會按模型樣本量寫 N;--pred 支援 0/1 或「是/否」標籤,常數預測/單一類別會跳過 ROC/PR/校準並寫明原因。term_labels 可把 lv3 這類模型項名映射為中文。雙比例啞鈴圖需在 config 裡用 dumbbell 指定兩個 0/1 欄。有追蹤時間與事件欄時,用 --survival-time、--survival-event(可加 --survival-group)生成 Kaplan–Meier 曲線。
預設覆蓋 7 組,常規約 40–55 張:二分類約 44 張,帶模型輸入約 51 張;連續約 42 張、多分類約 41 張。欄類型、缺失和跳過項會使數量浮動;實際數量以 chart_manifest.csv 為準。
- A 資料品質:缺失率、樣本類別/年份/地區、二元變數發生率。
- B 單變數:結果分布(二分類/連續/多分類分別處理,連續結果加 Q-Q)、處理構成(長條+環形)、數值分布、類別構成。
- C 雙變數:類別×結果、階段×結果、類別×階段熱圖/堆疊、地區/審級差異、相關熱圖、散點擬合、氣泡圖;連續結果用均值+95%CI,多分類結果用組內構成堆疊圖。
- D 多變數:提琴/箱線、散點矩陣、啞鈴圖、PCA 碎石/雙標圖/載荷熱圖、Ward 聚類樹狀圖、經典 MDS。
- E 時間:結果率/均值趨勢、3σ 控制圖、樣本量、階段構成堆疊柱/面積;多分類結果加結果類別構成趨勢。
- F 模型診斷:森林圖、ROC、校準、預測分布、混淆矩陣、PR 曲線、十分位 Lift(需
--coef/--pred);Kaplan–Meier(需追蹤欄)。 - G 附錄:對應分析、Pareto。
出圖策略:
- 每個主發現至少 2 張圖:主結果圖 + 穩健性/診斷/異質性圖。
- 正文 7–10 張,附錄 20–50 張;圖數不設上限。
- 每張圖先寫「回答什麼問題」;沒有問題就不畫。
- 用
references/07-chart-atlas.md選型,覆蓋 SPSS 常用進階圖形:叢狀/堆疊/100% 堆疊長條、線/面積、直方圖、箱線/提琴、誤差條、散點/氣泡、散點矩陣、Pareto、ROC、校準、Kaplan-Meier(有存活資料時)、碎石圖、因子載荷、聚類樹狀圖、對應分析、MDS、控制圖等。 - 每張圖寫入
chart_manifest.csv:圖號、問題、類型、變數、N、圖註、檔案路徑。 - 顏色語義全稿統一:同一階段/同一類別在每張圖裡用同一顏色。
- 圖註寫清 N、資料來源、模型設定、參照組;探索性圖(PCA/CA/聚類)在圖註標明「探索性」。
用 scripts/pubfig.py 統一風格:
from pubfig import set_style, save_fig, wilson_ci, forest_plot
set_style() # 15 cm 版心,宋體/Times New Roman,600 dpi
規範要點:
- 物理寬度 15 cm(A4 正文 15.4 cm 內),字型大小 7.2–8.5 pt。
- 中文宋體、西文 Times New Roman;PDF 字型嵌入(Type 42)。
- 圖內不放標題;圖題、圖註在 Word 中排。
- 同時輸出 PNG 600 dpi、向量 PDF、LZW TIFF(
--tiff)。 - 誤差線註明 95% CI;森林圖實心點=顯著、空心點=不顯著。
- 偏態連續變數用 log10 或 P99 截斷,並在軸標籤/圖註註明。
閘門:chart_manifest.csv 中每張圖都有問題、N、圖註、檔案;正文主圖與附錄圖不重複;PDF 內嵌圖寬度 ≥ 3000 px(15 cm 寬時約 600 dpi);圖註、圖、正文引用三者齊全。
詳見 references/04-figures-publication.md 和 references/07-chart-atlas.md。
階段 6:文稿組裝
Word 排版要求:
- 圖、圖題、圖註設定為「與下段同頁」,避免圖題分頁。
- 表格行禁止跨頁斷開,跨頁重複表頭。
- 表註在圖/表下方;先給 N,再給顯著性規則。
- 正文首次引用圖/表時,編號與檔案一致(圖 1、表 1、附圖 1)。
- 摘要、正文、表、圖、附錄的 N 和百分比全部同源;
chart_manifest.csv的 N 會回寫圖註。
Word 轉 PDF 時,Word 會把 600 dpi 圖壓到約 200 dpi。用 scripts/export_pdf_hires.py 匯出後回填原圖:
python scripts/export_pdf_hires.py --docx "manuscript.docx" --out-pdf "manuscript.pdf" --figure-map "figure_map.json"
閘門:PDF 頁數、圖數、圖題數一致;每張圖的內嵌寬度 ≥ 3000 px;表格沒有斷行/斷表頭。
詳見 references/05-manuscript-assembly.md。
階段 7:終檢
執行:
python scripts/qa_outputs.py --docx "manuscript.docx" --pdf "manuscript.pdf" --figures "figures" --data "data/analysis.csv" --audit "output/audit/corpus_audit.csv" --manifest "output/chart_pack/chart_manifest.csv" --strict
再按 references/06-qa-checklist.md 人工過一遍。重點不是格式,而是:
- 樣本流程每一檔數字能對上。
- 重複副本已從分析樣本移除,或明確報告未移除的影響。
- 正文每個 N 與對應表/圖/模型一致。
- 圖表與正文說的是同一個方向,沒有「圖上升、文說下降」。
- PDF 中的圖註編號能識別「圖1:」「圖 1.」「Table 1:」等寫法;低解析度檢查只看圖幅足夠大的圖片;空 CSV 會直接報錯。
- 理論編碼變數在方法部分說明來源,不寫成從原始資料直接測得。
- 結論使用「關聯/對應」,不使用因果措辭。
腳本清單
以下命令假設目前目錄是 skill 根目錄;如果從專案目錄執行,把 scripts/ 換成 skill 的絕對路徑。
| 腳本 | 作用 |
|---|---|
scripts/audit_corpus.py | 掃描任意資料目錄:檔案狀態、文字/頁數、MD5、重複、格式分布、年份提示 |
scripts/dedupe_corpus.py | 基於稽核結果生成去重計畫;--apply 移動到 _duplicates/ |
scripts/make_coding_sheet.py | 從 PDF/Word/PPT/HTML/文字抽取全文與關鍵詞證據句;--profile legal 才抽取法院/案號欄位 |
scripts/text_extract.py | 通用文字抽取與檔案檢查(PDF/DOCX/ODT/PPTX/XLSX/HTML/文字/圖片/音視訊) |
scripts/analysis_utils.py | 內部共享函數:樣本篩選、結果類型識別、二值標籤編碼;由自動統計/圖表腳本匯入 |
scripts/csv_to_spss_syntax.py | 由 CSV 表頭生成 SPSS GET DATA 語法;清理非法/重複變數名並寫變數標籤 |
scripts/auto_stats.py | 自動敘述統計、組間檢驗、相關、單變數模型(多分類自變數啞變量化)、完全分離檢查 |
scripts/auto_chart_pack.py | 按欄角色自動生成約 40–55 張資料品質/分布/雙變數/聚類/時間/模型診斷/存活圖與 manifest |
scripts/pubfig.py | 出版圖統一風格、Wilson CI、森林圖、熱圖、提琴、ROC/PR、PCA、MDS、聚類、KM、控制圖等 30+ 圖型 |
scripts/export_pdf_hires.py | Word→PDF 並回填 600 dpi 原圖 |
scripts/qa_outputs.py | 檢查 PDF 圖解析度、docx 圖表數量、空資料、重複鍵、manifest 的 N/圖註/路徑 |
參考文件
| 檔案 | 何時讀 |
|---|---|
references/01-corpus-audit.md | 開始稽核、遇到重複/損毀/掃描件/多格式時 |
references/02-coding-protocol.md | 設計變數、寫 codebook、做信度檢驗時 |
references/03-analysis-spss.md | 設定模型、寫 SPSS 語法、解釋 OR 時 |
references/04-figures-publication.md | 畫圖、選顏色、匯出投稿檔案時 |
references/05-manuscript-assembly.md | 排 Word、轉 PDF、處理圖註時 |
references/06-qa-checklist.md | 投稿/交付前逐項檢查時 |
references/07-chart-atlas.md | 選圖型、對應 SPSS 進階圖形、確定圖表數量時 |
references/08-analysis-expansion.md | 主模型之外還要跑哪些分析、如何記錄做/不做時 |
模板
assets/scope-template.md:研究範圍、納入/排除標準、樣本流程骨架。assets/codebook-template.md:變數編碼手冊骨架。assets/figure-spec-template.md:圖註與製圖規格表。assets/figure_map.example.json:Word→PDF 回填圖的映射範例。assets/delivery-checklist.md:交付清單。assets/coding-keywords.json:可替換的關鍵詞詞典(通用佔位範例)。assets/chart_config.example.json:欄角色、標籤、分析樣本篩選(filter_query)範例。assets/analysis-manifest-template.md:主分析/擴展分析/跳過項清單。
最常見的翻車點
- 把資料夾裡的檔案數直接當樣本量。 必須先扣掉元資料、損毀、重複、格式不支援、範圍外。
- 只按檔名去重。 同一內容常有「帶標識/不帶標識」「- 副本」「(2)」多個版本。
- 敘述統計 N 與模型 N 混用。 模型有缺失值、篩選條件,N 一定更小。
- 把「資料提到某情況」當成「實際發生了某結果」。 這是文字關聯,不是因果效應。
- Word 匯出的 PDF 看起來正常,圖其實只有 200 dpi。 必須回填並驗證內嵌圖像寬度。
- 只畫一張主結果圖。 分布、異質性、穩健性、診斷圖都沒畫,使用者只能反覆追問。
- 把引用/附件裡的內容當成主資料。 文書類型、報告類型、網頁導航等要按標題/正文結構判斷,不能只看全文關鍵詞。
- 結果是「是/否」文字卻直接當連續變數。 用
outcome_map明確正類,或在 CSV 裡編碼為 0/1;腳本不會猜正負方向。 - 稽核只數某一種格式,靜默漏掉其他檔案。 所有檔案都要有狀態;
total_files要能和檔案總管對帳。 - 把表格資料塞進文字編碼。 CSV/Excel 直接走
auto_stats/SPSS 流程;文字編碼適合文件、訪談、網頁等非結構化資料。