使用Hochberg法校正Pearson相关P值时SAS代码报错求助
问题解决与代码修正
报错原因分析
No base test has been assigned:proc multtest需要明确指定要校正的p值变量,原代码未声明该变量No CLASS statement:当无分组检验需求时,无需CLASS语句,但必须通过test语句告知SAS要处理的目标变量
代码修正要点
- 提取正确的相关性p值:原代码
proc transpose的var参数错误,因proc corr中var为神经递质、with为行为指标,输出的p值变量对应with后的变量(Psleep、Ptot_aggr、Ptot_play),而非Pdop等 - 完善
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
相关产品推荐
相关产品推荐

