主要内容

일반화선형모델을사용하여데이터피팅하기

이예제에서는glmfitglmval을사용하여일반화선형모델을피팅하고평가하는방법을보여줍니다。보통선형회귀를사용하여직선,즉해당모수에서선형인함수를정규분포된오차를갖는데이터에피팅할수있습니다。이것이가장일반적으로사용되는회귀모델입니다。그러나,항상현실적marketing모델은아닙니다。일반화선형모델은선형모델을두가지관점에서확장합니다。첫째,연결함수추가를통해모수의선형성에대한가정이완화됩니다。둘째,정규분포와다른오차분포를모델링할수있습니다。

일반화선형모델

회귀모델은하나이상의예측변수(대개x1, x2등으로표시됨)에대해응답변수(일반적으로대개y로표시됨)의분포를정의합니다。가장일반적으로사용되는회귀모델인보통선형회귀는y를평균이예측변수의선형함수(b0 + b1 * x1 +…)이고분산이상수인정규확률변수로모델링합니다。단일예측변x의수가장단순한사례에서는모델을각점에대한가우스분포를갖는직선으로나타낼수있습니다。

Mu = @(x) -1.9+.23*x;X = 5:.1:15;Yhat = (x);Dy = -3.5:.1:3.5;Sz =大小(dy);K =(长度(dy)+1)/2;X1 = 7*ones(sz);Y1 = mu(x1)+dy;Z1 = normpdf(y1,mu(x1),1);X2 = 10*ones(sz); y2 = mu(x2)+dy; z2 = normpdf(y2,mu(x2),1); x3 = 13*ones(sz); y3 = mu(x3)+dy; z3 = normpdf(y3,mu(x3),1); plot3(x,yhat,zeros(size(x)),“b -”...(x1, y1, z1,的r -, x1([k k]),y1([k k]),[0 z1(k)],“:”...x2, y2、z2的r -, x2([k k]),y2([k k]),[0 z2(k)],“:”...x3, y3、z3、的r -, x3([k k]),y3([k k]),[0 z3(k)],“:”);zlim ([0 1]);包含(“X”);ylabel (“Y”);zlabel (的概率密度);网格;视图(45 [-45]);

일반화선형모델에서응답변수의평균은예측변수의선형함수에대한단조비선형변환(g (b0 + b1 * x1 +…))으로모델링됩니다。변환g의역함수를“연결”함수라고합니다。로짓(시그모이드)연결과로그연결이그러한예입니다。또한,y는이항분포또는푸아송분포와같은비정규분포를가질수있습니다。예를들어,로그링크와단일예측변x수를갖는푸아송회귀는각점에대한푸아송분포를갖는지수곡선으로나타낼수있습니다。

Mu = @(x) exp(-1.9+.23*x);X = 5:.1:15;Yhat = (x);X1 = 7*ones(1,5);Y1 = 0:4;Z1 = poisspdf(y1,mu(x1));X2 = 10*ones(1,7);Y2 = 0:6;Z2 = poisspdf(y2,mu(x2));X3 = 13*ones(1,9); y3 = 0:8; z3 = poisspdf(y3,mu(x3)); plot3(x,yhat,zeros(size(x)),“b -”...[x1;x1],[日元;y1]、[z1;0(大小(y1))),的r -(x1, y1, z1,“r”。...[x2;x2]、[y2;y2]、[z2;0(大小(y2))),的r -x2, y2, z2,“r”。...[x3;x3]、[y3;y3]、[z3;0(大小(y3))),的r -z3、x3 y3,“r”。);zlim ([0 1]);包含(“X”);ylabel (“Y”);zlabel (“概率”);网格;视图(45 [-45]);

로지스틱회귀피팅하기

이예제에서는다양한중량의차량에서주행거리검정에실패한차량의비율을모델링하는데도움이되는실험을다룹니다。데이터는중량,검정된차량수,실패한차량수에대한관측값을포함합니다。

一套汽车砝码重量= [2100 2300 2500 2700 2900 3100 3300 3500 3700 3900 4100 4300]';每种重量测试的汽车数量。%测试= [48 42 31 34 31 21 23 23 21 16 17 21]';每个重量下未通过测试的汽车数量。Failed = [1 2 0 3 8 8 14 17 19 15 17 21]';每种重量下不合格的汽车的比例。比例=失败。/测试;情节(重量、比例、“年代”)包含(“重量”);ylabel (“比例”);

이그래프는중량에대한함수로실패하는차량의비율을보여주는플롯입니다。중량과함께증가하는확률모P수를사용하여실패수가이항분포에서왔다고가정하는것이합리적입니다。그러나p가얼마나정확히중량에종속되어야할까?

직선을이러한데이터에피팅해볼수있습니다。

linearCoef = polyfit(权重,比例,1);linearFit = polyval(线性系数,权重);情节(重量、比例、“年代”、重量、linearFit的r -,[2000 4500],[0 0],凯西:”,[2000 4500],[1 1],凯西:”)包含(“重量”);ylabel (“比例”);

이선형피팅에는두가지문제가있습니다。

1)선은0보다작고1보다큰비율을예측합니다。

2)비율이유계여야하므로정규분포되지않습니다。이는단순한선형회귀모델을피팅하는데필한가정중하나를위반합니다。

고차다항식을사용하는것이도움이되는것처럼보일수있습니다。

[cubicCoef,stats,ctr] = polyfit(权重,比例,3);cubicFit = polyval(cubicCoef,weight,[],ctr);情节(重量、比例、“年代”、重量、cubicFit的r -,[2000 4500],[0 0],凯西:”,[2000 4500],[1 1],凯西:”)包含(“重量”);ylabel (“比例”);

그러나,이피팅에도여전히유사한문제가있습니다。이그래프는중량이4000을넘어서면서피팅된비율이감소함을보여줍니다。실제로,이비율은중량값이더커지면음수가됩니다。당연히,정규분포가정을계속위반합니다。

대신,glmfit을사용하여로지스틱회귀모델을피팅하는것이더나은방법입니다。로지스틱회귀는일반화선형모델의특수한사례이며다음두가지이유로이데이터에대해서는선형회귀보다더적합합니다。첫째,이항분포에적합한피팅방법을사용합니다。둘째,로지스틱연결이예측된비율을범위[0,1]로제한합니다。

로지스틱회귀를위해예측변수행렬과함께하나의행렬을더지정합니다。이행렬의한열은실패수를포함하고다른열은검정된수를포함합니다。또한,이항분포와로짓연결도지정합니다。

[logitCoef,dev] = glmfit(重量,[失败的测试],“二”分对数的);logitFit = glmval(logitCoef,weight,分对数的);情节(重量、比例、“废话”、重量、logitFit的r -);包含(“重量”);ylabel (“比例”);

이플롯에나타난것처럼피팅된비율은중량이작아지면0에가까워지고중량이커지면1에가까워집니다。

모델 진단

glmfit함수는여러출력값을제공합니다。이를통해피팅을검토하고모델을검정할수있습니다。예를들어,두모델의이탈도값을비교하여제곱항이피팅을크게향상시키는지를확인할수있습니다。

[logitCoef2,dev2] = glmfit([weight重量。]^ 2],(未测试)“二”分对数的);Pval = 1 - chi2cdf(dev-dev2,1)
Pval = 0.4019

p -값이클경우이데이터에대한차2항이피팅을크게향상시키지않는다는것을나타냅니다。두피팅에대한플롯은두피팅에차이가거의없음을보여줍니다。

logitFit2 = glmval(logitCoef2,[weight weight.^2],分对数的);情节(重量、比例、“废话”、重量、logitFit的r -、重量、logitFit2“g -”);传奇(“数据”“线性条件”“线性和二次项”“位置”“西北”);

피팅의적합도를확하기위해피어슨잔차에대한확률플롯을살펴볼수도있습니다。이잔차는모델이데이터에적절한피팅인경우표준정규분포에거의가까운분포를가지도록정규분포됩니다。(이준화가적용되지않을경우잔차가다른분산을가질수있습니다.)

[logitCoef,dev,stats] = glmfit(weight,[失败的测试],“二”分对数的);normplot (stats.residp);

이잔차플롯은정규분포를훌륭히따름을보여줍니다。

모델예측실행하기

모델에만족하면,이모델을사용하여신뢰한계계산을포함하여예측을수행할수있습니다。여기서는검정되는차량100대중에4개중량각각에서주행거리검정에실패할것으로예상되는수를예측하겠습니다。

weightPred = 2500:500:4000;[failedPred,dlo,dhi] = glmval(logitCoef,weightPred,分对数的统计,.95,100);dlo errorbar (weightPred failedPred,济,“:”);

이항모델에대한연결함수

glmfit이지원하는5개분포각각에는정준(디폴트)연결함수가있습니다。이항분포의경우정준연결은로짓입니다。그러나,이항모델에적합한다른연결함수가3개더있습니다。이4개연결함수모두평균응답변수를구간[0,1]내에유지합니다。

Eta = -5:.1:5;Plot (eta,1 ./ (1 + exp(-eta)),“- - -”埃塔,normcdf (eta),“- - -”...1 -exp(-exp(Eta))“- - -”埃塔,exp (exp (eta)),“- - -”);包含(“预测因子的线性函数”);ylabel (“预测平均反应”);传奇(分对数的“probit”互补的双对数的“对数”“位置”“东”);

예를들어,프로빗연결함수를사용한피팅과로짓연결함수를사용한피팅을비교할수있습니다。

probitCoef = glmfit(重量,[测试失败],“二”“probit”);probitFit = glmval(probitCoef,权重,“probit”);情节(重量、比例、“废话”、重量、logitFit的r -、重量、probitFit“g -”);传奇(“数据”“Logit模型”“Probit模型”“位置”“西北”);

데이터가이4개연결함수간을구분하는것은대개어려우며이론적근거에기반하여선택하는경우가많습니다。