主要内容

一般化线形によるデータの近似

この例では、glmfitglmvalを使用して、一般化線形モデルの当てはめと評価を行う方法を示します。通常の線形回帰を使用すると、直線、またはパラメーターにおいて線形である任意の関数を、正規分布した誤差を伴うデータにあてはめることができます。これは最もよく使用されている回帰モデルですが、必ずしも現実的なモデルであるとは限りません。一般化線形モデルは、線形モデルを 2 つの方法で拡張したものです。第 1 に、リンク関数を導入することで、パラメーターにおける線形性の仮定が緩和されます。第 2 に、正規分布以外の誤差分布をモデル化できます。

一般化线形モデル

回帰,(一般Yに示される)のののを,,,,つつつつまたはまたは复数复数ののの予测変数変数変数変数変数変数変数変数変数変数変数変数変数変数変数変数変数変数変数変数変数,,,,,,,,,,,,,,,,,として通常回帰はとしてとしてとしてとしてとしてとしてとしてとしてをモデル化ます。。このこのこの変数変数変数ののののののの平均平均平均平均平均はははははは予测子は关数关数关数关数关数关数关数关数关数关数关数b1 + b1*x1 + ... x1 + ...x xがつのみと最もなケースはこのはは,各点の周囲ににガウス分布をを直线直线としてとしてとして表さ

mu = @(x)-1.9+.23*x;x = 5:.1:15;yhat = mu(x);dy = -3.5:.1:3.5;sz = size(dy);k =(长度(dy)+1)/2;x1 = 7*一个(sz);y1 = mu(x1)+dy;z1 = normpdf(y1,mu(x1),1);x2 = 10*一个(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)],'R:',...x2,y2,z2,'r-', x2([k k]),y2([k k]),[0 z2(k)],'R:',...x3,y3,z3,'r-', x3([k k]),y3([k k]),[0 z3(k)],'R:');zlim([0 1]); xlabel('X');ylabel('y');zlabel(“概率密度”);grid;查看([ -  45 45]);

一般化线形モデルでは、応答の平均は、予測子の線形関数 g(b0 + b1*x1 + ...) の単調非線形変換としてモデル化されます。変換 g の逆は、"link" 関数として知られています。例として、logit (シグモイド) リンクや log リンクが挙げられます。また、y が、二項分布やポアソン分布といった非正規分布をもつこともあります。たとえば、log リンクと単一の予測子 x を含むポアソン回帰は、各点の周囲にポアソン分布をもつ指数曲線として表すことができます。

mu = @(x) exp(-1.9+.23*x); x = 5:.1:15; yhat = mu(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; y1],[z1; zeros(size(y1))],'r-',x1,y1,z1,'r.',...[x2; x2],[y2; y2],[z2; zeros(size(y2))],'r-', x2,y2,z2,'r.',...[x3; x3],[y3; y3],[z3; zeros(size(y3))],'r-', x3,y3,z3,'r.');zlim([0 1]); xlabel('X');ylabel('y');zlabel('可能性');grid;查看([ -  45 45]);

ロジスティック回帰の近似

この例には、燃費テストで不合格になった、さまざまな重量の自動車の割合をモデル化するのに役立つ実験が含まれています。データには、重量、テストした自動車の台数、および不合格台数の観測値が含まれています。

% A set of car weights重量= [2100 2300 2500 2700 2900 3100 3300 3500 3700 3900 4100 4300]';% The number of cars tested at each weighttested = [48 42 31 34 31 21 23 23 21 16 17 21]';% The number of cars failing the test at each weightfailed = [1 2 0 3 8 8 14 17 19 15 17 21]';% The proportion of cars failing for each weightproportion = failed ./ tested; plot(weight,proportion,'s')xlabel('重量');ylabel('部分');

このグラフは、不合格の自動車の比率を重量の関数として表したものです。不合格台数は、重量と共に値が大きくなる確率パラメーター P を使用して二項分布から得られると仮定するのが合理的です。しかし、どの程度正確に P が重量に比例すべきでしょうか。

これらのデータへの直線のあてはめを試みることができます。

Linearcoef = polyFit(重量,比例,1);LinearFit = polyVal(Linearcoef,weight);情节(重量,比例,'s', weight,linearFit,'r-',[2000 4500],[0 0],,'K:',[2000 4500],[1 1],,'K:')xlabel('重量');ylabel('部分');

この線形近似には、以下の 2 つの問題があります。

1) 線が予測する比率が、0 未満の範囲と、1 を超える範囲である。

2)比率比率境界がある,,正规分布しい。。これこれははは,単纯単纯なな线形回帰回帰モデルモデルのの近似近似ににに必要と

高次多項式が役立つように思われます。

[cubicCoef,stats,ctr] = polyfit(weight,proportion,3); cubicFit = polyval(cubicCoef,weight,[],ctr); plot(weight,proportion,'s', weight,cubicFit,'r-',[2000 4500],[0 0],,'K:',[2000 4500],[1 1],,'K:')xlabel('重量');ylabel('部分');

しかし、この近似にも同様の問題があります。グラフからわかるように、近似された比率は、重量が 4000 を上回ると下がり始めます。実際、この比率は、重量値がさらに増えると負になります。これも当然ながら、正規分布の仮定に違反します。

高次の式の代わりにglmfitを使用する方が、ロジスティック回帰モデルを近似するのに適しています。ロジスティック回帰は一般化線形モデルの特殊なケースであり、以下の 2 つの理由から、これらのデータにとっては線形回帰よりも適切です。第 1 の理由は、二項分布に適した近似手法が採用されているからです。第 2 の理由は、予測される比率がロジスティック リンクによって範囲 [0,1] に制限されるからです。

ロジスティック回帰の場合は、予測子行列と、不合格台数を含む列およびテストした台数を含む列をそれぞれ 1 つもつ行列を指定します。また、二項分布とロジット リンクも指定します。

[logitcoef,dev] = glmfit(重量,[失败测试],“二项式”,'logit');logitFit = glmval(logitCoef,weight,'logit');情节(重量,比例,'bs', weight,logitFit,'r-');xlabel('重量');ylabel('部分');

このプロットで示されているように、近似された比率は、重量の増減に伴って 1 または 0 に近づく漸近線となります。

モデル诊断

関数glmfitは近似调べをテストするため出力を多数备え备え。。。。たとえばたとえば,,,,,,,,つつつつのつつのの逸脱逸脱度度度ををを比较比较比较することことででで,,,二

[logitCoef2,dev2] = glmfit([weight weight.^2],[failed tested],“二项式”,'logit');pval = 1 - chi2cdf(dev-dev2,1)
pval = 0.4019

p 値が大きいことからわかるように、これらのデータについては、2 次項によって近似が大幅に向上することはありません。2 つの近似のプロットは、これらの近似に大差がないことを示しています。

logitFit2 = glmval(logitCoef2,[weight weight.^2],'logit');情节(重量,比例,'bs', weight,logitFit,'r-',重量,logitFit2,'g-');传奇('数据','Linear Terms','Linear and Quadratic Terms','地点','northwest');

ピアソン残差の確率プロットを調べることで、適合度を確認できます。これらの残差は正規化されているため、モデルがデータへの適切なあてはめである場合に、概ね標準正規分布をもちます (この標準化がなければ、残差はさまざまな分散をもつことになります)。

[logitcoef,dev,stats] = glmfit(重量,[失败测试],“二项式”,'logit');normplot(stats.residp);

この残差プロットは、正規分布と十分適合していることを示しています。

モデル予測の評価

満足できるモデルが得られれば、それを使用して、信頼限界の計算などの予測を行うことができます。ここでは、100 台のうち何台の自動車が、4 つの重量での燃費テストに不合格となるかを予測します。

weightPred = 2500:500:4000; [failedPred,dlo,dhi] = glmval(logitCoef,weightPred,'logit',stats,.95,100); errorbar(weightPred,failedPred,dlo,dhi,':');

2项モデルの关数关数

glmfit5つつつ分布それぞれ基准基准基准基准基准基准基准リンクリンクリンクががますます。。二二项项项项项分布分布の场合,,はははははははははは24つのすべて,応答[0,1]内にます。。

eta = -5:.1:5;图(ETA,1 ./(1 + EXP(-ETA)),“- - -”, eta,normcdf(eta),“- - -”,...eta,1 - exp(-exp(eta)),“- - -”,eta,exp(-exp(eta)),“- - -”);xlabel('Linear function of predictors');ylabel('Predicted mean response');传奇('logit','probit',“互补日志”,'log-log','location','east');

pobitリンクリンク使用た场合近似とリンクを使用した场合场合の近似を比较。。

probitCoef = glmfit(weight,[failed tested],“二项式”,'probit');probitFit = glmval(probitCoef,重量,'probit');情节(重量,比例,'bs', weight,logitFit,'r-'、重量、probitFit'g-');传奇('数据','Logit model',“概率模型”,'地点','northwest');

多くの場合、これら 4 つのリンク関数をデータによって区別するのは難しいため、どのリンク関数を選択するかは、理論的な理由に基づいて決められます。