SASSTATHW2REG (811384)
Текст из файла
2
SAS/STAT. HOME WORK 2. REG
ФИО | Казачук Мария Андреевна |
DATA
Набор данных CARS – информация, включая цену, о различных марках и моделях автомобилей 1993 года. Чтобы создать набор, выполните код в файле CARS.sas.
Переменные:
Manufacturer – производитель
Model – модель
Type – Compact, Large, Midsize, Small, Sporty
Price – цена – ЕЕ БУДЕМ ПРЕДСКАЗЫВАТЬ.
Citympg – потребление топлива при езде по городу (кол-во миль / галлон)
Hwympg – потребление топлива при езде за городом (кол-во миль / галлон)
Cylinders – кол-во цилиндров в двигателе
EngineSize – рабочий объем цилиндров (в литрах)
Horsepower – максимальная мощность в лошадиных силах
FuelTank – объем топливного бака (в галлонах)
Passengers – вместимость
Luggage – объем багажника
Weight – вес
Origin - US or non-US Car
TASKS
-
(1) Exploratory Data Analysis.
Исследовать данные с помощь PROC SGSCATTER (пример) (обратите внимание на опцию PBSPLINE <= (options)> в операторе PLOT) и PROC CORR (см. пример тут). Дать общее описание наличия и характера «связи» между различными переменными и ценой (Price). Линейная/нелинейная? Если нелинейная, то какая?ОТВЕТ [только картинки и выводы]
Связь между Cylinders, Passengers, Weight и Price – линейная; между Citympg, Hwympg и Price – гиперболическая; между другими величинами и Price – нелинейная (составная).
Между Passengers и Price, Luggage и Price – большая корреляция.
-
Если обнаружена нелинейная зависимость, нужно применить соответствующее преобразование входной переменной, а точнее использовать полиномиальную регрессию (см. пример тут) . Идея здесь простая: если на графике видна некая нелинейная зависимость, то преобразованная переменная будет «более» линейно связана с целевой:
ОТВЕТ [код преобразования + график до и после (как в примере выше)] |
data cars1; set cars; Horse = Horsepower*Horsepower+Horsepower; keep price Horse Horsepower; run; ods graphics on; proc reg data=cars1 plots=ResidualByPredicted; var Horse; model Price=Horsepower/ r clm cli; run; add Horse; print; run;
|
-
(2) Candidate Model Selection.
Протестировать различные методы выбора переменных (пошаговые и перебор подмножеств). Для пошаговых методов исследовать влияние порогов для p-value для входных (включаемых в регрессию) и выходных (исключаемых из регрессии) переменных. Выбрать «наилучшую» модель на основе любого из исследованных методов.ОТВЕТ [код – статистика=значение/график – вывод]
/*stepwise selection*/
proc reg data= cars plots(only)=adjrsq;
FORWARD: model price=Citympg Hwympg Cylinders EngineSize Horsepower FuelTank Passengers Luggage Weight
/selection=forward;
BACKWARD: model price=Citympg Hwympg Cylinders EngineSize Horsepower FuelTank Passengers Luggage Weight
/selection=backward;
STEPWISE: model price=Citympg Hwympg Cylinders EngineSize Horsepower FuelTank Passengers Luggage Weight
/selection=stepwise;
title 'Best Models Using Stepwise Selection';
run;
quit;
Наилучшая модель при Stepwise достигается уже на втором шаге. При этом, для Horsepower значение Pr>F < 0.001, для FuelTank = 0.0041.
/*all*/
ods graphics / imagemap=on;
proc reg data=cars
plots(only)=(rsquare adjrsq cp);
ALL_REG: model price
= Citympg Hwympg Cylinders EngineSize Horsepower FuelTank Passengers Luggage Weight
/ selection=rsquare
adjrsq cp best=10;
title 'Best Models Using All-Regression Option';
run;
quit;
Наименьшее значение C(p) достигается на наборе Horsepower+FuelTank.
-
(3) Model Assumption Validation
Для выбранной в предыдущем пункте «наилучшей» модели проверить предположения регрессионного анализа. Если вы не заметили раньше, то теперь почти точно нужно моделировать не Price, а log(Price) – все из-за дисперсий))). -
[THEORY PART] познакомиться с процедурой PROC TRANSREG: посмотреть, как с ее помощью можно выбрать нужное преобразование.
ОТВЕТ [код – статистика=значение/график – вывод]
data cars2;
set cars;
Price1 = log(price);
run;
proc reg data=cars2 plots=all;
model Price1 = Horsepower FuelTank;
run;
ods graphics on;
ods select fitplot(persist);
title2 'Linear Regression';
proc transreg data=cars2;
model identity(Price1)=identity(Horsepower) identity(FuelTank);
run;
title2 'A Monotone Regression Function';
proc transreg data=cars2;
model identity(Price1)=mspline(Horsepower / nknots=9);
run;
proc transreg data=cars2;
model identity(Price1)=mspline(FuelTank/ nknots=9);
run;
-
(4) Collinearity and Influential Variables Detection
Проверить наличие коррелирующих переменных среди выбранных, используя различные статистики в моей презентации.ОТВЕТ [код – статистика=значение/график – вывод]
proc reg data=cars2
plots (label)=all;
model price1 =HorsePower FuelTank
/ vif collin collinoint;
run;
Коррелирующих переменных среди выбранных нет.
-
Прочитать главу «3 Linear Methods for Regression» из вот этой книги (по моему мнению, лучшей книги о моделировании (правда не совсем о статистике)). Уделить особое внимание разделам «3.4 Shrinkage Methods »! (они могут помочь справиться с проблемой коллинеарности). Протестировать 3 метода в SAS/STAT: (1) PROC REG …. RIDGE …. (пример) и (2,3) PROC GLMSELECT опция SELECTION={LAR, LASSO} в операторе MODEL.
ОТВЕТ [код – статистика=значение/график – вывод]
ods graphics on;
proc reg data=cars2 outvif
outest=b ridge=0 to 0.02 by .002;
model Price1=Horsepower FuelTank;
run;
ods graphics off;
ods graphics on;
proc glmselect data=cars2 plots=all;
model Price1 = Horsepower FuelTank/ selection=LAR;
run;
ods graphics off;
ods graphics on;
proc glmselect data=cars2 plots=all;
model Price1 = Horsepower FuelTank/ selection=LASSO;
run;
ods graphics off;
Коррелирующих переменных нет.
-
Исследовать данные на предмет наличия «влиятельных» наблюдений (Influential Observation), используя методы в моей презентации.
ОТВЕТ [код – статистика=значение/график – вывод]
ods graphics on;
proc reg data=cars2 plots (label)=all;
model Price1 = Horsepower FuelTank
/ influence;
id model;
output out=check r=residual p=pred h=leverage rstudent=rstudent covratio=CVR;
plot COVRATIO.* (Horsepower FuelTank) / vref=(0.88 1.11) ;
run;
ods graphics off;
В наборе присутствуют влиятельные наблюдения (показаны на графике):
-
Убедившись, что теперь-то модель в порядке, применить ее к новому набору данных (для простоты к тому же самому из которого удалены значения переменной Price). Для этого использовать PROC SCORE (пример).
ОТВЕТ [код – статистика=значение/график – вывод] |
data cars3; set cars2; drop price; run; proc reg data=cars2 outest=RegOut; OxyHat: model Price1=Horsepower FuelTank; title 'Regression Scoring Example'; run; proc print data=RegOut; title2 'OUTEST= Data Set from PROC REG'; run; proc score data=cars2 score=RegOut out=RScoreP type=parms; var Horsepower FuelTank; run; proc print data=RScoreP; title2 'Predicted Scores for Regression'; run; proc score data=cars3 score=RegOut out=RScoreR type=parms; var Price1 Horsepower FuelTank; run; proc print data=RScoreR; title2 'Negative Residual Scores for Regression'; run; |
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.