2016-11-23 2 views
0

Есть ли эквивалент функции R predict(model, data) в SAS?Как запустить модель прогнозирования

Например, как вы примените приведенную ниже модель к большому набору данных теста, где переменная ответа «Возраст» неизвестна?

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

Я понимаю, вы можете извлечь формулу Возраст = Intercept + Высота (Estimate_height) + Вес (Estimate_weight) из окна результатов и вручную предсказать «возраст» для неизвестных наблюдений, но это не очень эффективно.

ответ

1

SAS делает это самостоятельно. Пока модель имеет достаточное количество точек данных, она выведет прогнозируемое значение. Я использовал proc glm, но вы можете использовать любую модельную процедуру для создания такого вида вывода.

/* 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; 
Смежные вопросы