技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
model-calibration-curve【数据与研究】Use when assessing how well a survival model's predicted probabilities agree with observed outcomes by fitting a Cox model and generating bootstrap calibration curves at one or more prediction horizons from a clinical CSV file. NOT for: nomogram construction, univariate Cox screening, ROC analysis, or decision-curve analysis.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use this skill when you need to:
Typical user requests:
Do not use this skill for:
| Situation | File to Read | Purpose |
|---|---|---|
| Need algorithm details | references/algorithm.md | Statistical method and formulas |
| Need to run analysis | scripts/main.R | Get the complete command |
| Encounter errors | references/troubleshooting.md | Find solutions |
| Need CLI examples | references/cli-guide.md | Parameter usage examples |
This skill accepts:
If the user's request does not involve survival model calibration from a clinical CSV file — for example, asking to construct a nomogram, screen Cox features, generate an ROC curve, analyze a decision curve, or work with non-survival outcomes — do not proceed with this workflow. Instead respond:
"model-calibration-curve is designed to validate survival model calibration by generating bootstrap calibration curves from a clinical CSV file. Your request appears to be outside this scope. Please use a nomogram-construction skill for nomogram building, a roc-diagnostic-performance skill for ROC analysis, or a decision-curve-analysis skill for DCA."
R packages required: rms, qs, openxlsx, optparse.
Install with:
install.packages(c("rms", "qs", "openxlsx", "optparse"), repos = "https://cloud.r-project.org")
Or run the bootstrap installer:
Rscript scripts/install_dependencies.R
Note:
--helprequiresoptparseto be loaded. If the package check fires before option parsing, installoptparsefirst, then run--help. The root fix (deferring heavy package checks until after argument parsing) must be applied inscripts/main.R.
Rscript scripts/main.R \
--data_file ./clinical_data.csv \
--features age,stage,risk \
--years 1,2,3 \
--output_dir ./output/
| Short | Long | Type | Default | Description |
|---|---|---|---|---|
-d | --data_file | character | required | Clinical CSV file with sample IDs as row names |
-f | --features | character | required | Comma-separated model features used in the Cox model |
-t | --time_col | character | futime | Survival time column |
-e | --event_col | character | fustat | Event indicator column using 0/1 encoding |
-y | --years | character | 1,2,3 | Prediction horizons in the same units as time_col |
-b | --bootstrap_reps | integer | 1000 | Bootstrap replications for rms::calibrate() |
-o | --output_dir | character | ./output/ | Output directory |
--overwrite | flag | FALSE | Allow writing into a non-empty output directory | |
-s | --seed | integer | 42 | Random seed for reproducibility |
-T | --timeout_seconds | integer | 0 | Elapsed time limit in seconds; 0 disables timeout |
--plot_width | double | 6 | PDF width in inches | |
--plot_height | double | 6 | PDF height in inches | |
--font_family | character | sans | PDF font family | |
--line_width | double | 1.5 | Calibration curve line width | |
--colors | character | #0073C2,#EFC000,#868686,#CD534C,#7AA6DD | Comma-separated colors for time-point curves | |
--plot_title | character | Calibration Curve | Plot title | |
--base_cex | double | 0.9 | Base text-size multiplier |
--data_file)CSV file with row names as sample IDs and columns for model features, survival time, and event indicator.
"",age,gender,stage,futime,fustat,risk
"SAMPLE_001",">65","Female","StageI&II",1.12,0,"high"
"SAMPLE_002","<=65","Male","StageIII&IV",1.92,1,"high"
"SAMPLE_003",">65","Male","StageI&II",4.47,1,"low"
Requirements
.csv.time_col and event_col must exist.0.0/1 encoding.--features)age,gender,risk| File | Format | Description |
|---|---|---|
data/calibration_data.qs | QS serialized object | Serialized calibration result bundle, including calibration objects and summary metadata |
table/calibration_statistics.xlsx | Excel workbook (.xlsx) | Per-time-point means and overall model summary |
plot/calibration_curve.pdf | PDF (.pdf) | Combined calibration curve visualization |
session_info.txt | Plain text (.txt) | Session information and run parameters |
calibration_statistics.xlsxWorkbook sheets:
Time_Point_Stats: predicted mean, observed mean, and bias-corrected mean for each calibration horizon.Model_Summary: overall C-index, sample count, event count, selected features, and fitted formula.rms::calibrate() for each prediction horizon using bootstrap resampling..qs.Rscript scripts/main.R \
--data_file clinical_data.csv \
--features age,stage,risk \
--output_dir ./output/
Rscript scripts/main.R \
--data_file clinical_data.csv \
--features age,gender,risk \
--years 1,3,5 \
--bootstrap_reps 1500 \
--output_dir ./custom_output/
Rscript scripts/main.R \
--data_file clinical_data.csv \
--features age,stage,risk \
--plot_width 7 \
--plot_height 6 \
--line_width 2 \
--colors "#1B9E77,#D95F02,#7570B3" \
--plot_title "Three-Horizon Calibration" \
--output_dir ./styled_output/
Rscript scripts/main.R \
--data_file tests/data/sample_clinical_survival_data.csv \
--features age,gender,risk \
--bootstrap_reps 20 \
--output_dir tests/output/ \
--overwrite
| Error | Cause | Solution |
|---|---|---|
SKILL_INVALID_PARAMETER | Missing required argument, invalid numeric values, invalid event coding, insufficient complete cases, insufficient events, or failed model fitting | Check argument values, data validity, and event/sample counts |
SKILL_FILE_NOT_FOUND | Input CSV does not exist | Verify the path |
SKILL_MISSING_COLUMNS | Required feature/time/event columns are absent | Check column names and spelling |
SKILL_EMPTY_DATA | Input file is empty, complete-case filtering removed all rows, or no requested features remained | Check file content and requested feature names |
SKILL_SAMPLE_MISMATCH | Reserved for cross-file sample mismatch scenarios | Not expected for this single-file workflow |
SKILL_PACKAGE_NOT_FOUND | Required R package is missing | Install with: Rscript -e "install.packages(c('rms', 'qs', 'openxlsx'), repos='https://cloud.r-project.org')" |
IF error persists, READ: references/troubleshooting.md
Rscript scripts/main.R --help
Rscript scripts/main.R \
--data_file tests/data/sample_clinical_survival_data.csv \
--features age,gender,risk \
--bootstrap_reps 20 \
--output_dir tests/output/ \
--overwrite
Rscript tests/run_smoke_test.R
Optional shell wrapper:
bash tests/run_smoke_test.sh
tests/output/
|-- data/calibration_data.qs
|-- plot/calibration_curve.pdf
|-- session_info.txt
`-- table/calibration_statistics.xlsx
For detailed algorithm, READ: references/algorithm.md
optparseset.seed() for reproducibilitysource() usage via get_script_dir()scripts/tests/data/SKILL_* codesreferences/Last updated: 2026-04-27 | Version: 2.1.0