Proc PLM can';t使用Proc Reg输出(SAS)创建置信区间

Proc PLM can';t使用Proc Reg输出(SAS)创建置信区间,sas,regression,confidence-interval,scoring,Sas,Regression,Confidence Interval,Scoring,我使用Proc Reg和Proc GLM将线性回归拟合到一组训练数据上。当我对测试数据集评分时,我只能在保存的Proc GLM模型上使用Proc PLM创建置信度-Proc Reg模型结果为空白(尽管是相同的模型) 这只是一个关于Proc Reg在生成测试数据的置信区间时是否与Proc PLM不兼容的问题 以下代码可在任何机器上运行(生成虚拟数据以进行回归) 我希望两种型号的PROC PLM程序的输出数据集相同。PROC reg模型的PROC PLM产生置信区间和预测区间的空白数据。如图所示,最

我使用Proc Reg和Proc GLM将线性回归拟合到一组训练数据上。当我对测试数据集评分时,我只能在保存的Proc GLM模型上使用Proc PLM创建置信度-Proc Reg模型结果为空白(尽管是相同的模型)

这只是一个关于Proc Reg在生成测试数据的置信区间时是否与Proc PLM不兼容的问题

以下代码可在任何机器上运行(生成虚拟数据以进行回归)

我希望两种型号的PROC PLM程序的输出数据集相同。PROC reg模型的PROC PLM产生置信区间和预测区间的空白数据。如图所示,最后两个感兴趣的数据集是: pred_proc_reg(置信区间和预测区间的空白值)
pred_proc_glm(置信区间和预测区间的填充值)

我认为您的问题可能与此注释有关:来自
proc REG
语句文档:

注意:PROC REG中STORE语句存储的信息是实现该语句的其他过程通常存储的信息的子集

特别是,PROC REG仅存储模型的估计参数,以便以后可以使用PROC PLM中的CODE语句写入SAS数据步骤 用于预测文件或目录项的代码。 只有这部分信息,PROC PLM的许多其他后处理功能无法用于由PROC REG创建的物料存储


当改用
proc mixed
时,获取
LCLM
UCLM
(线性预测器的置信限),而不是
CLM
CLM
(预测的置信限)。proc MIXED是否也仅存储部分信息?
/* the original data; fit model to these values */
data A;               
input x y @@;
datalines;
1  4  2  9  3 20  4 25  5  1  6  5  7 -4  8 12
;

/* the scoring data; evaluate model on these values */
%let NumPts = 200;
data ScoreX(keep=x);
min=1; max=8;
do i = 0 to &NumPts-1;
   x = min + i*(max-min)/(&NumPts-1);     /* evenly spaced values */
   output;                                /* no Y variable; only X */
end;
run;

proc reg data=A outest=RegOut tableout;
   model y = x;    /* name of model is used by PROC SCORE */
   store work.proc_reg_model;
quit;

ods output ParameterEstimates=Pi_Parameters FitStatistics=Pi_Summary;
proc glm data=A;
   model y = x;    
   store work.proc_glm_model;     /* store the model */
quit;

proc plm restore=work.proc_glm_model;
   score data=ScoreX out=Pred predicted=yhat lcl=lower_pred_int lclm=lower_confidence_int ucl=upper_pred_int uclm=upper_confidence_int;  /* evaluate the model on new data */
run;

proc plm restore=work.proc_reg_model;
   score data=ScoreX out=Pred_lin_reg predicted=yhat lcl=lower_pred_int lclm=lower_confidence_int ucl=upper_pred_int uclm=upper_confidence_int;  /* evaluate the model on new data */
run;