You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Hochberg法校正Pearson相关P值时SAS代码报错求助

问题解决与代码修正

报错原因分析

  • No base test has been assigned:proc multtest需要明确指定要校正的p值变量,原代码未声明该变量
  • No CLASS statement:当无分组检验需求时,无需CLASS语句,但必须通过test语句告知SAS要处理的目标变量

代码修正要点

  1. 提取正确的相关性p值:原代码proc transpose的var参数错误,因proc corr中var为神经递质、with为行为指标,输出的p值变量对应with后的变量(Psleep、Ptot_aggr、Ptot_play),而非Pdop等
  2. 完善proc multtest语句:添加test p_value;指定校正变量,消除CLASS语句的强制要求

修正后的完整代码

ods output PearsonCorr = corr_rat;
proc corr data=out pearson;
    var dop epi ne ht; 
    with sleep tot_aggr tot_play; /* 补充分号 */
run;
ods output close;

proc sort data=corr_rat;
    by Variable;
run;

/* 修正transpose的var参数,提取正确的p值列 */
proc transpose data=corr_rat out=pvals_long(rename=(col1=p_value));
    by Variable;
    var Psleep Ptot_aggr Ptot_play; 
run;

data pvals_long2;
    set pvals_long;
    CorVar = _NAME_;
    keep Variable CorVar p_value;
run;

/* 添加test语句指定p值变量,使用hochberg校正 */
proc multtest data=pvals_long2 hochberg;
    test p_value;
    ods output pValues=hoch_corrected;
run;

补充说明

  • 补全了proc corr语句末尾缺失的分号
  • 校正结果将保存在hoch_corrected数据集,包含原始p值、校正后p值等字段
  • 若你的corr_rat数据集p值变量名存在大小写或命名差异,请根据实际输出调整proc transpose中的var参数

内容的提问来源于stack exchange,提问作者George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 01:19:56