2016-11-23 1 views
0

Existe-t-il un équivalent de la fonction R predict(model, data) dans SAS? Par exemple, comment appliqueriez-vous le modèle ci-dessous à un grand ensemble de données de test dans lequel la variable de réponse «Âge» est inconnue?Comment exécuter le modèle de prédiction

proc reg data=sashelp.class; 
    model Age = Height Weight ; 
run; 

Je comprends que vous pouvez extraire la formule = âge Intercept + Hauteur (Estimate_height) + Poids (Estimate_weight) de la fenêtre de résultats et de prévoir manuellement « Age » pour les observations inconnues, mais ce n'est pas très efficace.

Répondre

1

SAS le fait par lui-même. Tant que le modèle a suffisamment de points de données pour continuer, il affichera la valeur prédite. J'ai utilisé proc glm, mais vous pouvez utiliser n'importe quelle procédure de modèle pour créer ce type de sortie.

/* this is a sample dataset */ 
data mydata; 
input age weight dataset $; 
cards; 
1 10 mydata 
2 11 mydata 
3 12 mydata 
4 15 mydata 
5 12 mydata 
; 
run; 

/* this is a test dataset. It needs to have all of the variables that you'll use in the model */ 
data test; 
input weight dataset $; 
cards; 
6 test 
7 test 
10 test 
; 
run; 
/* append (add to the bottom) the test to the original dataset */ 
proc append data=test base=mydata force; run; 

/* you can look at mydata to see if that worked, the dependent var (age) should be '.' */ 
/* do the model */ 
proc glm data=mydata; 
model age = weight/p clparm; /* these options after the '/' are to show predicte values in results screen - you don't need it */ 
output out=preddata predicted=pred lcl=lower ucl=upper; /* this line creates a dataset with the predicted value for all observations */ 
run; 
quit; 

/* look at the dataset (preddata) for the predicted values */ 
proc print data=preddata; 
where dataset='test'; 
run;