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