ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

fitglm

一般化線形回帰モデルの作成

構文

  • mdl = fitglm(tbl)
  • mdl = fitglm(X,y)
  • mdl = fitglm(___,modelspec)
  • mdl = fitglm(___,Name,Value)

説明

mdl = fitglm(tbl) は、テーブルまたはデータセット配列 tbl の変数に一般化線形モデルの近似を返します。既定では、fitglm は最後の変数を応答変数として取ります。

mdl = fitglm(X,y) は、データ行列 X に応答 y の一般化線形モデルの近似を返します。

mdl = fitglm(___,modelspec) は、modelspec で指定したタイプの一般化線形モデルを返します。

mdl = fitglm(___,Name,Value) は、1 つまたは複数の Name,Value のペアの引数によって指定された追加オプションを使用して一般化線形モデルを返します。

たとえば、カテゴリカルである変数、応答変数の分布、使用するリンク関数を指定できます。

すべて折りたたむ

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

因子交互作用モデルを使用して、年齢、体重、性別の関数としての喫煙の可能性の論理的二項モデルを作成します。

データセット配列 hospital を読み込みます。

load hospital
ds = hospital; % just to use the ds name

変数である年齢、体重、性別の間で最大 2 因子の交互作用を許容する式を使用したモデルを指定します。喫煙者は応答変数です。

modelspec = 'Smoker ~ Age*Weight*Sex - Age:Weight:Sex';

論理的二項モデルを近似します。

mdl = fitglm(ds,modelspec,'Distribution','binomial')
mdl = 


Generalized Linear regression model:
    logit(Smoker) ~ 1 + Sex*Age + Sex*Weight + Age*Weight
    Distribution = Binomial

Estimated Coefficients:
                       Estimate       SE           tStat       pValue 
    (Intercept)            -6.0492       19.749     -0.3063    0.75938
    Sex_Male               -2.2859       12.424    -0.18399    0.85402
    Age                    0.11691      0.50977     0.22934    0.81861
    Weight                0.031109      0.15208     0.20455    0.83792
    Sex_Male:Age          0.020734      0.20681     0.10025    0.92014
    Sex_Male:Weight        0.01216     0.053168     0.22871     0.8191
    Age:Weight         -0.00071959    0.0038964    -0.18468    0.85348


100 observations, 93 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 5.07, p-value = 0.535

すべての p 値 (pValue の) は大きな値です。つまり、有意な係数はありません。モデルのテストに関する大きな p 値 0.535 は、このモデルが定数モデルとは統計的に異なっていない可能性があることを示しています。

ポアソン応答の GLM

20 個の予測子で標本データを作成し、そのうちの 3 つのみの予測子と 1 つの定数を使ってポアソン応答を作成します。

rng('default') % for reproducibility
X = randn(100,7);
mu = exp(X(:,[1 3 6])*[.4;.2;.3] + 1);
y = poissrnd(mu);

ポアソン分布を使用して一般化線形モデルで近似します。

mdl =  fitglm(X,y,'linear','Distribution','poisson')
mdl = 


Generalized Linear regression model:
    log(y) ~ 1 + x1 + x2 + x3 + x4 + x5 + x6 + x7
    Distribution = Poisson

Estimated Coefficients:
                   Estimate     SE          tStat       pValue    
    (Intercept)      0.88723    0.070969      12.502    7.3149e-36
    x1               0.44413    0.052337      8.4858    2.1416e-17
    x2             0.0083388    0.056527     0.14752       0.88272
    x3               0.21518    0.063416      3.3932    0.00069087
    x4             -0.058386    0.065503    -0.89135       0.37274
    x5             -0.060824    0.073441     -0.8282       0.40756
    x6               0.34267    0.056778      6.0352    1.5878e-09
    x7               0.04316     0.06146     0.70225       0.48252


100 observations, 92 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 119, p-value = 1.55e-22

2.14e-17、0.00069 および 1.58e-09 の p 値は、変数 x1、x3 および x6 の係数が統計的に有意であることを示します。

関連する例

入力引数

すべて折りたたむ

tbl — 入力データテーブル | データセット配列

入力データ。テーブルまたはデータセット配列として指定します。modelspecformula の場合、予測子および応答として使用される変数が指定されます。それ以外の場合、予測子変数と応答変数を指定しないときは、既定では、最後の変数が応答変数で、その他の変数が予測子変数になります。

予測子変数と応答変数は数値、あるいは論理またはカテゴリカルなどのグループ化変数の型にできます (グループ化変数を参照してください)。

応答変数として異なる列を設定するには、名前と値のペア引数 ResponseVar を使用します。列のサブセットを予測子として使用するには、名前と値のペア引数 PredictorVars を使用します。

データ型: single | double | logical

X — 予測子変数行列

n 行 p 列の行列として指定される予測子変数。ここで、n は観測値の数、p は予測子変数の数です。X の各列が 1 つの変数を表し、各行が 1 つの観測値を表します。

既定では、明示的に削除しない限り、モデルには定数項があるので、1 の列を X に含めないでください。

データ型: single | double | logical

y — 応答変数ベクトル

n 行 1 列のベクトルとして指定される応答変数。ここで、n は観測値の数です。y の各エントリは X の対応する行に対する応答です。

modelspec — モデル仕様モデルを指定する文字列 | t 行 (p+1) 列の項行列 | 'Y ~ terms' の形式の文字列

モデル仕様は stepwiseglm の開始モデルであり、以下のいずれかとして指定されます。

  • モデルのタイプを指定する文字列。

    文字列モデル タイプ
    'constant'モデルは定数 (切片) 項だけを含みます。
    'linear'モデルは各予測子に対して切片と線形項を含みます。
    'interactions'モデルは、切片、線形項、異なる予測子のペアのすべての積 (二乗項なし) を含みます。
    'purequadratic'モデルは、切片、線形項、二乗項を含みます。
    'quadratic'モデルは、切片、線形項、交互作用、二乗項を含みます。
    'polyijk'モデルは、すべての項が最初の予測子で次数 i までで、2 番目の予測子で次数 j までであるといった多項式です。数字 0 から 9 までを使用します。たとえば、'poly2111' には、1 つの定数のほかにすべての線形項と積項があり、また、予測子 1 の二乗の項を含んでいます。

  • モデル内に含める項を指定する t 行 (p+1) 列の行列、つまり 項の行列 であり、t は項の数、p は予測子変数の数、+1 は応答変数を示します。

  • 次の形式で を表す文字列。

    'Y ~ terms',

    termsウィルキンソンの表記法 にあります。

例: 'quadratic'

名前/値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

例: 'Distribution','normal','link','probit','Exclude',[23,59] は応答の分布が正規であることを指定し、プロビット リンク関数を使用して近似から 23 番目と 59 番目の観測値を除外するよう fitglm に指示します。

'BinomialSize' — 二項分布の試行回数1 (既定値) | スカラー値 | ベクトル

二項分布の試行回数、つまり標本サイズ。スカラー値または応答と同じ長さのベクトルで構成されるコンマ区切りのペアとして指定します。これは近似した二項分布のための n パラメーターです。BinomialSize は、Distribution パラメーターが 'binomial' であるときにだけ適用されます。

BinomialSize がスカラー値の場合は、すべての観測が同じ試行回数であることを意味します。

BinomialSize の代替法として、列 1 にカウント、列 2 に BinomialSize をもつ 2 列ベクトルとして応答を指定できます。

データ型: single | double

'CategoricalVars' — カテゴリカル変数文字列のセル配列 | 論理インデックス ベクトルまたは数値インデックス ベクトル

近似のカテゴリカル変数。'CategoricalVars' と、テーブルまたはデータセット配列 tbl のカテゴリカル変数名の文字列のセル配列か、どの列がカテゴリカルであるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルで構成される、コンマ区切りのペアとして指定します。

  • データがテーブルまたはデータセット配列 tbl の場合、既定では、すべてのカテゴリカル変数または論理変数、文字配列、文字列のセル配列がカテゴリカル変数として扱われます。

  • データが行列 X の場合、この名前と値のペア引数の既定値は空の行列 [] になります。つまり、指定しない限り、カテゴリカルになる変数はありません。

たとえば、以下のいずれかの例を使用して、6 つの観測値のうち観測値 2 および 3 をカテゴリカルとして指定できます。

例: 'CategoricalVars',[2,3]

例: 'CategoricalVars',logical([0 1 1 0 0 0])

データ型: single | double | logical

'DispersionFlag' — 分散パラメーターを計算するインジケーターfalse ('binomial' および 'poisson' 分布の場合) (既定値) | true

'binomial' および 'poisson' 分布の分散パラメーターを計算するインジケーター。'DispersionFlag' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

true標準誤差を計算するときに分散パラメーターを推定する
false既定の設定。標準誤差を計算するときに理論値を使用する

近似関数は常に他の分布の分散を予測します。

例: 'DispersionFlag',true

'Distribution' — 応答変数の分布'normal' (既定値) | 'binomial' | 'poisson' | 'gamma' | 'inverse gaussian'

応答変数の分布。'Distribution' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

'normal'正規分布
'binomial'二項分布
'poisson'ポアソン分布
'gamma'ガンマ分布
'inverse gaussian'逆ガウス分布

例: 'Distribution','gamma'

'Exclude' — 除外する観測値論理インデックス ベクトルまたは数値インデックス ベクトル

近似から除外する観測値。'Exclude' と、近似から除外する観測値を示す論理インデックス ベクトルまたは数値インデックス ベクトルで構成されるコンマ区切りのペアとして指定します。

たとえば、以下のいずれかの例を使用して、6 つの観測値のうち観測値 2 および 3 を除外できます。

例: 'Exclude',[2,3]

例: 'Exclude',logical([0 1 1 0 0 0])

データ型: single | double | logical

'Intercept' — 定数項のインジケーターtrue (既定値) | false

近似の定数項 (切片) のインジケーター。'Intercept' と、モデルに定数項を含める true またはモデルから定数項を削除する false で構成されるコンマ区切りのペアとして指定します。

式または行列ではなく、文字列を使用してモデルを指定する場合にのみ、'Intercept' を使用します。

例: 'Intercept',false

正準リンク関数の代わりに使用するリンク関数。'Link' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

リンク関数名リンク関数平均 (逆) 関数
'identity'f(μ) = μμ = Xb
'log'f(μ) = log(μ)μ = exp(Xb)
'logit'f(μ) = log(μ/(1–μ))μ = exp(Xb) / (1 + exp(Xb))
'probit'f(μ) = Φ–1(μ)μ = Φ(Xb)
'comploglog'f(μ) = log(–log(1 – μ))μ = 1 – exp(–exp(Xb))
'reciprocal'f(μ) = 1/μμ = 1/(Xb)
p (数値)f(μ) = μpμ = Xb1/p
3 つのフィールドをもつ
S (構造体)。各フィールドは、入力のベクトルを受け入れ、同じサイズのベクトルを返す関数ハンドルを保持します。
  • S.Link — リンク関数

  • S.Inverse — 逆リンク関数

  • S.Derivative — リンク関数の微分

f(μ) = S.Link(μ)μ = S.Inverse(Xb)

リンク関数は、平均応答 μ と、予測子の線形結合 X*b の関係である f(μ) = X*b を定義します。

正準リンク関数についての詳細は、Definitions. を参照してください。

例: 'Link','probit'

'Offset' — オフセット変数[ ] (既定値) | vector | 文字列

近似のオフセット変数。'Offset' と、応答と同じ長さの変数のベクトルまたは名前で構成されるコンマ区切りのペアとして指定します。

fitglmstepwiseglm は、1.0 で固定した係数値をもつ追加の予測子変数として Offset を使用します。つまり、近似の式は次のようになります

μ ~ Offset + (terms involving real predictors)

係数 1 をもつ Offset 予測子付き。

たとえば、ポアソン回帰モデルを検討してください。カウントの数が理論上の理由により予測子 A に対して比例していることがわかっていると仮定します。log リンク関数を使用し、オフセットに log(A) を指定することにより、この理論上の制約を満たすことをモデルに強制できます。

データ型: single | double | char

'PredictorVars' — 予測子変数文字列のセル配列 | 論理インデックス ベクトルまたは数値インデックス ベクトル

近似で使用する予測子変数。'PredictorVars' と、テーブルまたはデータセット配列 tbl の変数名の文字列のセル配列、あるいはどの列が予測子変数であるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルで構成されるコンマ区切りのペアとして指定します。

文字列は、tbl にある名前、または名前と値のペア引数 'VarNames' を使用して指定した名前にしてください。

既定の設定は、X 内のすべての変数、または ResponseVar を除く、tbl 内のすべての変数です。

たとえば、以下のいずれかの例を使用して、2 番目と 3 番目の変数を予測子変数として指定できます。

例: 'PredictorVars',[2,3]

例: 'PredictorVars',logical([0 1 1 0 0 0])

データ型: single | double | logical | cell

'ResponseVar' — 応答変数tbl の最後の列 (既定値) | 変数名の文字列 | 論理インデックス ベクトルまたは数値インデックス ベクトル

近似で使用する応答変数。'ResponseVar' と、テーブルまたはデータセット配列 tbl の変数名の文字列、あるいはどの列が応答変数であるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルで構成される、コンマ区切りのペアとして指定します。通常、テーブルまたはデータセット配列 tbl を近似させる場合に 'ResponseVar' を使用する必要があります。

たとえば、以下のいずれかの方法を使用して、6 つの変数のうち 4 番目の変数、たとえば yield を応答変数として指定できます。

例: 'ResponseVar','yield'

例: 'ResponseVar',[4]

例: 'ResponseVar',logical([0 0 0 1 0 0])

データ型: single | double | logical | char

'VarNames' — 近似の変数の名前{'x1','x2',...,'xn','y'} (既定値) | 文字列のセル配列

近似の変数の名前。'VarNames' と、X の列名を最初に含み、応答変数 y の名前を最後に含む文字列のセル配列で構成されるコンマ区切りのペアとして指定します。

テーブルまたはデータセット配列の変数には既に名前が設定されているため、'VarNames' はこれらの配列には適用されません。

たとえば、データ内で、自動車の馬力、加速度、モデル年度が予測子変数であり、ガロンあたりの走行マイル数 (MPG) が応答変数である場合は、以下のように変数に名前を付けることができます。

例: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}

データ型: cell

'Weights' — 観測値の重みones(n,1) (既定値) | 非負のスカラー値の n 行 1 列のベクトル

観測値の重み。'Weights' と、非負のスカラー値の n 行 1 列のベクトル (n は観測値の数) で構成されるコンマ区切りのペアとして指定します。

データ型: single | double

出力引数

すべて折りたたむ

mdl — 一般化線形モデルGeneralizedLinearModel オブジェクト

データに対する応答のリンクの最小二乗近似を表す一般化線形モデル。GeneralizedLinearModel オブジェクトとして返されます。

一般化線形モデル オブジェクト mdl のプロパティとメソッドについては、GeneralizedLinearModel クラスのページを参照してください。

代替機能

モデル仕様を自動的に選択するには、stepwiseglm を使用します。stepaddTerms または removeTerms を使用して近似モデルを調整します。

詳細

すべて折りたたむ

項の行列

項行列は、モデル内の項を指定する t 行 (p + 1) 列の行列です。t は項の数、p は予測子変数の数、+ 1 は応答変数を示します。

T(i,j) の値は、項 i の変数 j の指数です。ABC の 3 つの予測子変数があると仮定します。

[0 0 0 0] % Constant term or intercept
[0 1 0 0] % B; equivalently, A^0 * B^1 * C^0
[1 0 1 0] % A*C
[2 0 0 0] % A^2
[0 1 2 0] % B*(C^2)
各項の最後の 0 は、応答変数を表します。一般に、以下のようになります。

  • テーブルまたはデータセット配列に変数がある場合、応答変数の位置に応じて 0 で応答変数を表さなければなりません。次の例はこれを説明します。

    標本データを読み込み、データセット配列を定義します。

    load hospital
    ds = dataset(hospital.Sex,hospital.BloodPressure(:,1),hospital.Age,...
    hospital.Smoker,'VarNames',{'Sex','BloodPressure','Age','Smoker'});

    線形モデル 'BloodPressure ~ 1 + Sex + Age + Smoker' を項行列で表します。応答変数はデータセット配列の 2 列目にあるので、応答変数を示す 0 の列が項行列の 2 列目になければなりません。

    T = [0 0 0 0;1 0 0 0;0 0 1 0;0 0 0 1]
    
    T =
    
         0     0     0     0
         1     0     0     0
         0     0     1     0
         0     0     0     1

    データセット配列を再定義します。

    ds = dataset(hospital.BloodPressure(:,1),hospital.Sex,hospital.Age,...
    hospital.Smoker,'VarNames',{'BloodPressure','Sex','Age','Smoker'});
    

    これで、応答変数はデータセット配列の最初の項になりました。項行列を使用して、同じ線形モデル 'BloodPressure ~ 1 + Sex + Age + Smoker' を指定します。

    T = [0 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1]
    T =
    
         0     0     0     0
         0     1     0     0
         0     0     1     0
         0     0     0     1
  • 行列および列ベクトルに予測子と応答変数がある場合、各項の最後に応答変数を示す 0 がなければなりません。次の例はこれを説明します。

    標本データを読み込み、予測子の行列を定義します。

    load carsmall
    X = [Acceleration,Weight];
    

    項行列を使用してモデル 'MPG ~ Acceleration + Weight + Acceleration:Weight + Weight^2' を指定し、このモデルをデータに近似します。このモデルには、変数 Acceleration および Weight の主効果および 2 因子交互作用項、変数 Weight の 2 次の項が含まれます。

    T = [0 0 0;1 0 0;0 1 0;1 1 0;0 2 0]
    
    T =
    
         0     0     0
         1     0     0
         0     1     0
         1     1     0
         0     2     0
    

    線形モデルを近似します。

    mdl = fitlm(X,MPG,T)
    mdl = 
    
    Linear regression model:
        y ~ 1 + x1*x2 + x2^2
    
    Estimated Coefficients:
                       Estimate       SE            tStat      pValue    
        (Intercept)         48.906        12.589     3.8847    0.00019665
        x1                 0.54418       0.57125    0.95261       0.34337
        x2               -0.012781     0.0060312    -2.1192      0.036857
        x1:x2          -0.00010892    0.00017925    -0.6076         0.545
        x2^2            9.7518e-07    7.5389e-07     1.2935       0.19917
    
    Number of observations: 94, Error degrees of freedom: 89
    Root Mean Squared Error: 4.1
    R-squared: 0.751,  Adjusted R-Squared 0.739
    F-statistic vs. constant model: 67, p-value = 4.99e-26

    変数 Weight に対応する切片および x2 の項のみが 5% の有意水準を示しています。

    ここで、定数モデルを開始モデルとし、交互作用項をもつ線形モデルを上位モデルとして、ステップワイズ回帰を実行します。

    T = [0 0 0;1 0 0;0 1 0;1 1 0];
    mdl = stepwiselm(X,MPG,[0 0 0],'upper',T)
    1. Adding x2, FStat = 259.3087, pValue = 1.643351e-28
    
    mdl = 
    
    Linear regression model:
        y ~ 1 + x2
    
    Estimated Coefficients:
                       Estimate      SE           tStat      pValue    
        (Intercept)        49.238       1.6411     30.002    2.7015e-49
        x2             -0.0086119    0.0005348    -16.103    1.6434e-28
    
    Number of observations: 94, Error degrees of freedom: 92
    Root Mean Squared Error: 4.13
    R-squared: 0.738,  Adjusted R-Squared 0.735
    F-statistic vs. constant model: 259, p-value = 1.64e-28

    ステップワイズ回帰の結果は、前の手順の fitlm の結果と整合性があります。

モデル仕様の式は 'Y ~ terms' という形式の文字列です。

ここで以下のようになります。

  • Y は応答名です。

  • terms 次が含まれます

    • 変数名

    • + は次の変数を含むことを意味します

    • - は次の変数を含まないことを意味します

    • : は、項の積である交互作用を定義します

    • * は、交互作用とすべての低い順序の項を定義します

    • ^ は、* で繰り返されるとおりに予測子をべき乗にし、^ は低い次数の項も含みます

    • () は項をグループ化します

    メモ:   式には既定で定数 (切片) 項が含まれます。モデルから定数項を除外するには、式に -1 を含めます。

次に例を示します。

'Y ~ A + B + C' は切片のある 3 変数線形モデルを意味します。
'Y ~ A + B + C - 1' は切片のない 3 変数線形モデルです。
'Y ~ A + B + C + B^2' は切片と B^2 項のある 3 変数モデルです。
'Y ~ A + B^2 + C' は、B^2B 項を含むので、前の例と同じです。
'Y ~ A + B + C + A:B'A*B 項を含みます。
'Y ~ A*B + C'A*B = A + B + A:B なので前の例と同じです。
'Y ~ A*B*C - A:B:C' には 3 因子交互作用を除き、ABC 間のすべての交互作用があります。
'Y ~ A*(B + C + D)' にはすべての線形項があり、さらに他の変数のそれぞれとの A の積があります。

ウィルキンソンの表記法

ウィルキンソンの表記法は、モデルに存在する因子を記述します。この表記法は、モデルに存在する因子に関係するものであり、それらの因子の乗数 (係数) に関係するものではありません。

ウィルキンソンの表記法標準表記の因子
1定数 (切片) 項
A^kk は正の整数A, A2, ..., Ak
A + BA, B
A*BA, B, A*B
A:BA*B のみ
-BB は含めない
A*B + CA, B, C, A*B
A + B + C + A:BA, B, C, A*B
A*B*C - A:B:CA, B, C, A*B, A*C, B*C
A*(B + C)A, B, C, A*B, A*C

Statistics Toolbox™ 表記は、-1 を使用して項を明示的に削除しない限り、常に定数項を含みます。

正準リンク関数

一般化線形モデルの既定のリンク関数は、"正準リンク関数" です。

一般化線形モデル用の正準リンク関数

分布リンク関数名リンク関数平均 (逆) 関数
'normal''identity'f(μ) = μμ = Xb
'binomial''logit'f(μ) = log(μ/(1–μ))μ = exp(Xb) / (1 + exp(Xb))
'poisson''log'f(μ) = log(μ)μ = exp(Xb)
'gamma'-1f(μ) = 1/μμ = 1/(Xb)
'inverse gaussian'-2f(μ) = 1/μ2μ = (Xb)–1/2

ヒント

  • 正則化された線形モデル mdl は、別途 Distribution 名前と値のペアで指定しない限り、標準線形モデルです。

  • plotResiduals または devianceTest などのメソッドや、GeneralizedLinearModel オブジェクトのプロパティについては、GeneralizedLinearModel を参照してください。

参照

[1] Collett, D. Modeling Binary Data. New York: Chapman & Hall, 2002.

[2] Dobson, A. J. An Introduction to Generalized Linear Models. New York: Chapman & Hall, 1990.

[3] McCullagh, P., and J. A. Nelder. Generalized Linear Models. New York: Chapman & Hall, 1990.

この情報は役に立ちましたか?