За това задание използвахме SAS, за да изпълним контролиран линеен регресионен анализ. Под контролиран имам предвид, че моделът не се опитва да намери връзка между всички предоставени обяснителни променливи, вместо това започва без променливи и използва подход стъпка по стъпка, идентифицирайки променливите, които допринасят най-много.

Докато лекцията беше за подхода LASSO, в предоставения пример за код използваме LAR — регресионен анализ на най-малък ъгъл. Намерих добро обяснение тук

  • Нашият модел започва от μ0^
  • Остатъкът (зелената линия) сключва по-малък ъгъл с x1, отколкото с x2, така че започваме да се движим в посока на x1.
  • При μ1^ остатъкът сега прави равни ъгли с x1 и x2 и така започваме да се движим в нова посока, която запазва тази еквиъгълност/еквикорелация.
  • Ако имаше повече променливи, щяхме да променим посоките отново, след като нова променлива направи равни ъгли с нашия остатък и т.н.

Използван е същият „набор от данни на UCI“ за ученици от средното училище, но този път за прогнозиране на броя на отсъствията (числови, от 0 до 93). Кодът е приложен по-долу, след изхода на програмата. Както беше препоръчано, замених категоричните променливи „да“ „не“ с двоични 1–0. Въпреки това, за G1 G2 G3 — оценки, запазвам оригиналните стойности и ги маркирах с „КЛАС“ в процедурата glmselect. В набора от данни няма липсващи стойности, така че не трябваше да правя нищо за тях. Проучването избира произволно разделен набор от данни на 70–30% данни за обучение и тестване.

В метода LASSO параметърът ламбда е зададен като горна граница на сумата от всички коефициенти, принуждавайки някои от тях да се нулират. Опцията CVMETHOD=RANDOM(10) в оператора MODEL изисква 10-кратно кръстосано валидиране, където данните за обучението са разделени на пет произволни подмножества, например наблюдения {1,6,11,. . . }, {2,7,12,. . . }, и така нататък. На всяка стъпка от избора една от тези части се държи за валидиране и текущо избраният модел се монтира върху останалите 9 части. Този монтиран модел се използва за изчисляване на предвидената остатъчна сума от квадрати върху пропуснатата част и този процес се повтаря за всяка от петте части. Сумата от петте предвидени остатъчни суми от квадрати, така получени, е оценката на грешката при прогнозиране, която се обозначава с CVPRESS. Опцията STOP=CV указва, че тази CVPRESS статистика се използва като критерий за спиране. Стъпка 6 (интернет1) беше маркирана като точка на спиране, тъй като параметърът CV PRESS достигна своя минимум.

Процесът на добавяне на променливи, пресата на CV и стъпката на прекъсване са визуализирани на графика по-долу.

Интересното е, че със семена = 123 средната квадратна грешка за набор от данни за ТЕСТ е много по-малка от набор от данни за ОБУЧЕНИЕ! Промених семената и резултатите, когато наборът от тестови данни е снабден с по-голям ASE, както се очакваше. Ако имате някаква идея защо TEST данните биха могли да бъдат монтирани с по-малко грешки от набора за обучение, моля, оставете коментар.

В заключение бяха избрани 6 променливи: родителски статус (родители, живеещи заедно или разделени), интернет (достъп до интернет у дома) с отрицателна корелация, т.е. родителите заедно водят до по-малко отсъствия. Установено е, че наличието на романтична връзка, възрастта и образованието на майката имат положителна корелация с редица отсъствия.

PROC IMPORT DATAFILE=’student-mat.csv’ OUT = importedstudents REPLACE;
DATA new; задайте импортирани студенти;
ако пол=”M” тогава мъж=1;
ако пол=”F” тогава мъж=0;
ако адрес = “R” тогава селски = 1;
ако адрес = “U”, тогава селски = 0;
ако размер на семейството = “LE3” тогава smallfam = 1;
ако размер на семейство = “GT3” тогава smallfam = 0;
ако Pstatus = „T“, след това родители = 1;
ако Pстатус = „А“, тогава родители = 0;
ако schoolsup = „да“, тогава schoolsup1 = 1;
ако schoolsup = „не“, тогава schoolsup1 = 0;
ако famsup = „да“, тогава famsup1 = 1;
ако famsup = „не“, тогава famsup1 = 0;
ако платено = „да“, тогава платено1 = 1;
ако платено=”не”, тогава платено1 = 0;
ако дейности = “да”, тогава дейности1 =1;
ако дейности = “не”, тогава дейности1 =0;
ако детска стая= ”да”, тогава детска стая1 = 1;
ако детска стая=”не”, тогава детска стая1 = 0;
ако по-високо = “да”, тогава по-високо1 = 1;
ако по-високо = “не”, тогава по-високо1 = 0;
ако интернет = „да“, тогава интернет1 = 1;
ако интернет = „не“, тогава интернет1 = 0;
ако романтичен = „да“, тогава романтичен1 = 1;
ако romantic = „не“, тогава romantic1 = 0;

тичам;

включена графика на ods;

* Разделяне на произволни данни на тестови и тренировъчни данни;
proc surveyselect data=new out=traintest seed = 123
samprate=0.7 method=srs outall;
run;

* ласо множествена регресия с lars алгоритъм k=10-кратно валидиране;
proc glmselect data=traintest plots=all seed=123;
partition ROLE=selected(train='1' test='0');
клас G1 G2 G3;
модел отсъствия = мъже селски smallfam родителиtog неуспехи schoolsup1 famsup1 платени1 дейности1 детска градина1 по-високи1 internet1 romantic1
възраст Medu Fedu време за пътуване време за учене famrel свободно време подагра Dalc walc health/selection=lar(choose =cv stop=none) cvmethod=random(10);
run;