Main Content

fitmnr

多項回帰モデルの当てはめ

R2023a 以降

    説明

    MnrMdl = fitmnr(X,Y) は、行列 X の予測子データと Y の応答データに対して多項回帰モデルを当てはめ、MultinomialRegression オブジェクト MnrMdl を返します。入力 Y は、カウントの行列か応答変数のクラスのベクトルにすることができます。

    MnrMdl = fitmnr(Tbl,Y) は、Tbl の変数を予測子データとして使用します。各 table 変数が異なる予測子変数に対応します。

    MnrMdl = fitmnr(Tbl,ResponseVarName) は、Tbl の変数を予測子データおよび応答データとして使用します。引数 ResponseVarName で、応答データが格納された変数を指定します。

    MnrMdl = fitmnr(Tbl,Formula) は、ウィルキンソンの表記法で多項回帰モデルを指定します。Formula の項では、Tbl の変数名のみを使用します。

    MnrMdl = fitmnr(___,Name=Value) では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、リンク関数やモデル タイプを指定できます。

    すべて折りたたむ

    fisheriris データ セットを読み込みます。

    load fisheriris

    列ベクトル species には、3 種類のアヤメ (setosa、versicolor、virginica) が格納されています。double 行列 meas には、花に関する 4 種類の測定値、がく片の長さと幅 (cm) と花弁の長さと幅 (cm) が格納されています。species のデータはノミナルであり、つまりアヤメの種類に自然順はありません。

    関数uniqueを使用して、species ベクトルに最初に現れる順序でアヤメの種類を表示します。

    unique(species)
    ans = 3x1 cell
        {'setosa'    }
        {'versicolor'}
        {'virginica' }
    
    

    出力から、species ベクトルにおける最後の種類が virginica であることがわかります。

    meas の予測子データと species の応答データに対してノミナル多項回帰モデルを当てはめます。既定では、species で最後に現れる virginica が関数 fitmnr で基準カテゴリとして使用されます。

    MnrModel = fitmnr(meas,species)
    MnrModel = 
    Multinomial regression with nominal responses
    
                                   Value       SE       tStat       pValue  
                                  _______    ______    _______    __________
    
        (Intercept_setosa)         2018.4    12.404     162.72             0
        x1_setosa                  673.85    3.5783     188.32             0
        x2_setosa                  -568.2     3.176     -178.9             0
        x3_setosa                 -516.44    3.5403    -145.87             0
        x4_setosa                 -2760.9    7.1203    -387.75             0
        (Intercept_versicolor)     42.638    5.2719     8.0878    6.0776e-16
        x1_versicolor              2.4652    1.1228     2.1956      0.028124
        x2_versicolor              6.6809    1.4789     4.5176    6.2559e-06
        x3_versicolor             -9.4294    1.2934    -7.2906     3.086e-13
        x4_versicolor             -18.286    2.0967    -8.7214    2.7476e-18
    
    
    150 observations, 290 error degrees of freedom
    Dispersion: 1
    Chi^2-statistic vs. constant model: 317.6851, p-value = 7.0555e-64
    

    MnrModel は、ノミナル多項回帰モデルをデータに当てはめた結果を含む多項回帰モデル オブジェクトです。meas の各予測子の係数統計量が出力に表示されます。列 pValue"p" 値が小さく、すべての係数が 95% の信頼水準で統計的に有意であることを示しています。

    MnrModelFormula プロパティを使用して、モデルの方程式の一般的な形式を調べます。

    MnrModel.Formula
    ans = 
    logit(y) ~ 1 + x1 + x2 + x3 + x4
    

    出力から、MnrModel のリンク関数が既定の多項リンク関数 logit であることがわかります。当てはめたモデルの係数とモデルの方程式の一般的な形式を使用して、当てはめたモデルの方程式を次のように記述できます。

    ln(πsetosaπvirginica)=2018.4+673.9x1-568.2x2-516.4x3-2760.9x4

    ln(πversicolorπvirginica)=42.6+2.5x1+6.7x2-9.4x3-18.3x4

    これらの方程式は、花が特定のカテゴリに含まれる確率を花が基準カテゴリに含まれる確率で除算した商に対する予測子変数の影響を表します。たとえば、2 番目の方程式の推定係数 2.5 は、x1 が 1 単位増加すると、花が versicolor である確率を花が virginica である確率で除算した値が exp(2.5) 倍になることを示します。ノミナル多項回帰モデルの方程式の詳細については、ノミナル応答の多項モデルを参照してください。

    fisheriris データ セットを読み込みます。

    load fisheriris

    列ベクトル species には、3 種類のアヤメ (setosa、versicolor、virginica) が格納されています。double 行列 meas には、花に関する 4 種類の測定値、がく片の長さと幅 (cm) と花弁の長さと幅 (cm) が格納されています。

    関数tableを使用して、花の測定値と種類のデータを含む table を作成します。

    tbl = table(meas(:,1),meas(:,2),meas(:,3),meas(:,4),species,...
        VariableNames=["Sepal_Length","Petal_Length","Sepal_Width","Petal_Width","Species"])
    tbl=150×5 table
        Sepal_Length    Petal_Length    Sepal_Width    Petal_Width     Species  
        ____________    ____________    ___________    ___________    __________
    
            5.1             3.5             1.4            0.2        {'setosa'}
            4.9               3             1.4            0.2        {'setosa'}
            4.7             3.2             1.3            0.2        {'setosa'}
            4.6             3.1             1.5            0.2        {'setosa'}
              5             3.6             1.4            0.2        {'setosa'}
            5.4             3.9             1.7            0.4        {'setosa'}
            4.6             3.4             1.4            0.3        {'setosa'}
              5             3.4             1.5            0.2        {'setosa'}
            4.4             2.9             1.4            0.2        {'setosa'}
            4.9             3.1             1.5            0.1        {'setosa'}
            5.4             3.7             1.5            0.2        {'setosa'}
            4.8             3.4             1.6            0.2        {'setosa'}
            4.8               3             1.4            0.1        {'setosa'}
            4.3               3             1.1            0.1        {'setosa'}
            5.8               4             1.2            0.2        {'setosa'}
            5.7             4.4             1.5            0.4        {'setosa'}
          ⋮
    
    

    測定値を予測子データ、種類を応答データとして使用して、花のデータに多項回帰モデルを当てはめます。既定では、tblSpecies 列で最後に現れる virginica が fitmnr で基準カテゴリとして使用されます。回帰モデルの式を指定して、がく片の幅とがく片の長さの間の交互作用が統計的に有意であるかどうかを調べます。

    MnrModel = fitmnr(tbl,"Species ~ Sepal_Width*Sepal_Length + Petal_Width + Petal_Length")
    MnrModel = 
    Multinomial regression with nominal responses
    
                                                Value       SE       tStat        pValue   
                                               _______    ______    ________    ___________
    
        (Intercept_setosa)                      232.64    50.281      4.6268     3.7137e-06
        Sepal_Length_setosa                     11.918     10.31       1.156        0.24768
        Petal_Length_setosa                     27.965    4.5863      6.0975     1.0775e-09
        Sepal_Width_setosa                     -5.2318     13.66    -0.38302        0.70171
        Petal_Width_setosa                     -260.77    9.3403     -27.919    1.5677e-171
        Sepal_Length:Sepal_Width_setosa        -10.453    2.2141     -4.7211     2.3452e-06
        (Intercept_versicolor)                 -231.52    43.626     -5.3068     1.1158e-07
        Sepal_Length_versicolor                 48.459     8.178      5.9255     3.1133e-09
        Petal_Length_versicolor                 7.5712    1.7854      4.2406     2.2288e-05
        Sepal_Width_versicolor                  47.602    9.5989      4.9591     7.0832e-07
        Petal_Width_versicolor                 -20.603    2.7859     -7.3955     1.4089e-13
        Sepal_Length:Sepal_Width_versicolor    -9.5086    1.7102     -5.5598     2.7005e-08
    
    
    150 observations, 288 error degrees of freedom
    Dispersion: 1
    Chi^2-statistic vs. constant model: 318.3928, p-value = 1.9971e-62
    

    MnrModel は、ノミナル多項回帰モデル (既定の設定) をデータに当てはめた結果を含む多項回帰モデル オブジェクトです。meas の各予測子の係数統計量が出力に表示されます。各対数オッズの式に含まれる交互作用項の "p" 値が小さいことは、がく片の長さとがく片の幅の間の交互作用が、ある花が特定のカテゴリに含まれる確率を、ある花が基準カテゴリに含まれる確率で除算した対数の商に対して、統計的に有意な影響を与えることを示しています。ノミナル多項回帰モデルの方程式の詳細については、ノミナル応答の多項モデルを参照してください。

    carbig データ セットを読み込みます。

    load carbig

    変数 AccelerationDisplacementHorsepower、および Weight には、自動車の加速度、エンジン排気量、馬力、および重量のデータがそれぞれ格納されています。変数 MPG には、自動車の燃費のデータが格納されています。

    関数discretizeを使用して MPG のデータを 4 つのカテゴリに並べ替えます。関数tableを使用して予測子データの table を作成します。

    mileage = discretize(MPG,[9,19,29,39,48],"categorical");
    X = table(Acceleration,Displacement,Horsepower,Weight,mileage,VariableNames=["Acceleration","Displacement","Horsepower","Weight","Mileage"])
    X=406×5 table
        Acceleration    Displacement    Horsepower    Weight      Mileage  
        ____________    ____________    __________    ______    ___________
    
              12            307            130         3504     [9, 19)    
            11.5            350            165         3693     [9, 19)    
              11            318            150         3436     [9, 19)    
              12            304            150         3433     [9, 19)    
            10.5            302            140         3449     [9, 19)    
              10            429            198         4341     [9, 19)    
               9            454            220         4354     [9, 19)    
             8.5            440            215         4312     [9, 19)    
              10            455            225         4425     [9, 19)    
             8.5            390            190         3850     [9, 19)    
            17.5            133            115         3090     <undefined>
            11.5            350            165         4142     <undefined>
              11            351            153         4034     <undefined>
            10.5            383            175         4166     <undefined>
              11            360            175         3850     <undefined>
              10            383            170         3563     [9, 19)    
          ⋮
    
    

    table XMileage 列に未定義のエントリが含まれています。

    AccelerationDisplacementHorsepower、および Weight を予測子変数、Mileage を応答変数として使用して、順序多項回帰モデルを当てはめます。Mileage 列のエントリが未定義である X の行は fitmnr で無視されます。

    MnrModel = fitmnr(X,"Mileage",ModelType="ordinal")
    MnrModel = 
    Multinomial regression with ordinal responses
    
                                  Value          SE         tStat       pValue  
                                _________    __________    _______    __________
    
        (Intercept_[9, 19))        -16.69        1.9529    -8.5459    1.2757e-17
        (Intercept_[19, 29))      -11.721         1.768    -6.6296    3.3667e-11
        (Intercept_[29, 39))      -8.0606        1.7297    -4.6601    3.1603e-06
        Acceleration              0.10476      0.079916     1.3109       0.18989
        Displacement             0.010336     0.0049035     2.1078      0.035045
        Horsepower                0.06452       0.01476     4.3712    1.2354e-05
        Weight                  0.0016638    0.00066089     2.5175      0.011821
    
    
    392 observations, 1169 error degrees of freedom
    Dispersion: 1
    Chi^2-statistic vs. constant model: 503.6344, p-value = 1.0964e-107
    

    MnrModel は、順序多項回帰モデルをデータに当てはめた結果を含む多項回帰モデル オブジェクトです。X の各予測子の係数統計量が出力に表示されます。既定では、fitmnr はリンク関数 logit を使用し、順序応答カテゴリ間の共通の係数を計算します。このタイプのモデルは "比例オッズ" モデルと呼ばれることがあります。95% の信頼水準で、p 値が 0.035045、1.2354e-05、および 0.011821 であり、DisplacementHorsepower、および Weight の各変数が確率の対数の商に対して統計的に有意な影響を与えることを示しています。分子は自動車の燃費が特定の値以下になる確率、分母は自動車の燃費がその値より大きくなる確率です。

    当てはめたモデルの係数とモデルの方程式の一般的な形式を使用して、当てはめたモデルの方程式を次のように記述できます。

    ln(P(XM19)P(XM>19))=-16.69+0.10476XA+0.010336XD+0.06452XH+0.0016638XW

    ln(P(XM29)P(XM>29))=-11.721+0.10476XA+0.010336XD+0.06452XH+0.0016638XW

    ln(P(XM39)P(XM>39))=-8.0606+0.10476XA+0.010336XD+0.06452XH+0.0016638XW

    XMXAXDXH、および XW は、X の変数 MileageAccelerationDisplacementHorsepower、および Weight をそれぞれ表しています。順序多項回帰モデルの方程式とそれらの項の有意性の詳細については、順序応答の多項モデルを参照してください。

    入力引数

    すべて折りたたむ

    予測子データ。n 行 p 列の数値行列として指定します。ここで、n はデータ セット内の観測値の数、p は予測子変数の数です。X の各行が観測値に対応し、各列が予測子変数に対応します。

    メモ

    fitmnr は自動的に定数項 (切片) をすべてのモデルに含めます。X に 1 の列を入力しないでください。

    データ型: single | double

    応答カテゴリ ラベル。n 行 k 列の行列、または n 行 1 列の数値ベクトル、logical ベクトル、string ベクトル、categorical 配列、文字ベクトルの cell 配列として指定します。

    • Y が n 行 k 列の行列の場合、n はデータ セット内の観測値の数、k は応答カテゴリの数です。Y(i,j) は、X(i,:) で与えられる予測子の組み合わせに対する多項カテゴリ j の結果の数です。この場合、観測値の数は予測子の組み合わせごとの数として判別されます。

    • Y が n 行 1 列の数値ベクトル、logical ベクトル、string ベクトル、categorical 配列、または文字ベクトルの cell 配列の場合、ベクトルまたは配列の値は各観測値に対する応答を示します。この例ではすべての標本サイズが 1 です。

    データ型: single | double | logical | char | string | cell | categorical

    予測子と応答のデータ。table として指定します。Tbl の変数には、数値または categorical のデータを格納できます。Tbl を指定する場合、入力引数 YResponseVarName、または Formula を使用して応答データも指定しなければなりません。

    • Y で応答データを指定する場合、table 変数は多項回帰の予測子データのみを表します。Tbl の予測子の値の行は、Y の同じ位置にある観測値に対応します。Tbl の行数は Y の長さと同じでなければなりません。

    • Y を指定しない場合は、入力引数 ResponseVarName または Formula を使用して、Tbl のどの変数に応答データが格納されているかを示さなければなりません。名前と値の引数 PredictorNames を使用して、多項回帰で使用する Tbl の因子のサブセットを選択することもできます。関数 fitmnr は、Tbl の予測子変数の値を同じ行の応答データに関連付けます。

    例: snake=table(weight,length,species); fitmnr(snake,"species")

    データ型: table

    応答として使用する変数の名前。string スカラーまたは文字ベクトルとして指定します。ResponseVarName は、Tbl のどの変数に応答データが格納されているかを示します。ResponseVarName を指定する場合、入力引数 Tbl も指定しなければなりません。

    例: snake=table(weight,length,species); fitmnr(snake,"species")

    データ型: char | string

    当てはめる多項回帰モデル。ウィルキンソンの表記法による string スカラーまたは文字ベクトルとして指定します。

    例: "species ~ meas1 + meas2 + meas3 + meas1:meas2:meas3" を使用して、多項回帰モデルを変数 meas1meas2meas3 の和とその 3 次交互作用として指定します。

    データ型: char | string

    名前と値の引数

    オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

    例: fitmnr(X,Y,Link="probit",ModelType="ordinal",CategoricalPredictors=[1,2]) は、"probit" を順序多項回帰モデルのリンク関数として指定し、X の最初の 2 列をカテゴリカル変数として指定します。

    カテゴリカルとして扱う予測子。数値ベクトル、string ベクトル、文字ベクトルの cell 配列、または "all" として指定します。

    CategoricalPredictors は次のいずれかとして指定します。

    • 1 から p までのインデックスの数値ベクトル。ここで、p は予測子変数の数です。予測子変数のインデックスは、行列 X または table Tbl の列における順序です。

    • 長さ p の logical ベクトル。true のエントリは、対応する予測子がカテゴリカルであることを示します。

    • string 配列または文字ベクトルの cell 配列。配列の各要素は予測子変数の名前です。予測子の名前は PredictorNames または Tbl の名前に一致しなければなりません。

    • "all"。すべての予測子変数がカテゴリカルであることを示します。

    既定では、fitmnr は数値予測子を連続として扱い、それ以外の型の予測子変数をカテゴリカルとして扱います。カテゴリカル データの詳細については、categorical データの自然表現を参照してください。

    例: CategoricalPredictors=["Location" "Smoker"]

    例: CategoricalPredictors=[1 3 4]

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

    分散パラメーターを推定するインジケーター。数値または logical の 0 (false) または 1 (true) として指定します。

    説明
    0 (false)理論分散値 1 を使用します (既定の設定)。
    1 (true)標準誤差の計算で使用する多項分布の分散パラメーターを推定します。

    例: EstimateDispersion=1

    データ型: single | double | logical

    応答カテゴリと係数の間の交互作用を表すインジケーター。数値または logical の 1 (true) または 0 (false) として指定します。

    説明
    1 (true)ノミナル モデルと階層モデルの既定値。クラス間で異なる係数でモデルを当てはめます。
    0 (false)順序モデルの既定値。すべての多項クラス間で予測子変数の係数の共通セットでモデルを当てはめます。多くの場合、このタイプのモデルは "並列回帰" モデルまたは "比例オッズ" モデルと呼ばれます。ノミナル モデルの場合、IncludeClassInteractionsfalse に設定すると、fitmnr は切片のみのモデルを返します。

    いずれの場合も、モデルはクラス間で異なる切片をもちます。IncludeClassInteractions の値により、出力配列 MultinomialRegression.Coefficients の次元が決まります。

    例: IncludeClassInteractions=1

    データ型: single | double | logical

    モデルの当てはめに使用される反復的に再重み付けした最小二乗 (IRLS) の最大反復回数。正の整数として指定します。IterationLimit の既定値は 100 です。

    IRLS アルゴリズムの詳細については、反復的に再重み付けした最小二乗を参照してください。

    例: IterationLimit=400

    データ型: single | double

    順序モデルと階層モデルに使用するリンク関数。次の表のいずれかの値として指定します。

    関数
    "logit" (既定の設定)f(γ) = ln(γ/(1 –γ))
    "probit"f(γ) = Φ-1(γ) — 誤差項は分散 1 で正規分布されます。
    "comploglog"

    f(γ) = ln(–ln(1 – γ))

    "loglog"

    f(γ) = ln(–ln(γ))

    リンク関数は、応答確率と予測子の線形結合との間の関係を定義します。γ は、順序応答をもつモデルの場合は累積確率、階層応答をもつモデルの場合は条件付き確率です。

    順序モデルの場合、πj は観測値がカテゴリ j に含まれる確率であり、γ は観測値がカテゴリ 1 から j までに含まれる累積確率を表します。ロジット リンク関数をもつモデルの形式は次のようになります。

    ln(γ1γ)=ln(π1+π2++πjπj+1++πk)=β0j+β1X1+β2X2++βpXp,

    ここで、k は最後のカテゴリを表します。

    階層モデルの場合、πj および γ は観測値がカテゴリ j に含まれる確率を表します。その観測値が前のカテゴリに含まれていないことが前提となります。ロジット リンク関数をもつモデルの形式は次のようになります。

    ln(γ1γ)=ln(πjπj+1++πk)=β0j+β1X1+β2X2++βpXp,

    ここで、k は最後のカテゴリを表します。

    ノミナル モデルの場合は、常に次の多項ロジット リンクが使用されるため Link は指定できません。

    ln(πjπr)=βj0+βj1Xj1+βj2Xj2++βjpXjp,j=1,,k1,

    ここで、πj は観測値がカテゴリ j に含まれる確率であり、r は基準カテゴリに対応します。fitmnr では、最後のカテゴリをノミナル モデルの基準カテゴリとして使用します。

    例: Link="loglog"

    データ型: char | string

    当てはめるモデルのタイプ。次の表のいずれかの値として指定します。

    説明
    "nominal" (既定の設定)応答クラスに順序はありません。ModelType"nominal" の場合、多項回帰を "ソフトマックス回帰" と呼ぶこともあります。
    "ordinal"応答クラスに自然順があります。
    "hierarchical"応答クラスが入れ子になっています。

    例: ModelType="hierarchical"

    データ型: char | string

    予測子の名前。string ベクトルまたは文字ベクトルの cell 配列として指定します。

    • fitmnr の呼び出しで Tbl を指定する場合、PredictorNamesTbl の table 変数のサブセットでなければなりません。fitmnr は、PredictorNames で指定された予測子のみを使用します。この場合、PredictorNames の既定値は Tbl の予測子変数の名前のコレクションです。

    • fitmnr の呼び出しで行列 X を指定する場合、PredictorNames に任意の名前を指定できます。この場合、PredictorNames の既定値は 1 行 p 列の cell 配列 ['x1','x2',…,'xp'] です。ここで、p は予測子変数の数です。

    Formula を指定した場合、fitmnrPredictorNames を無視します。

    例: PredictorNames=["time","latitude"]

    データ型: string | cell

    応答変数に割り当てる名前。string スカラーまたは文字ベクトルとして指定します。ResponseVarName または Formula を指定した場合、fitmnrResponseName を無視します。

    例: ResponseName="City"

    データ型: char | string

    反復的に再重み付けした最小二乗 (IRLS) 当てはめアルゴリズムの終了許容誤差。数値スカラーとして指定します。fitmnr は、IRLS アルゴリズムの 2 回の反復における各係数の相対差が Tolerance より小さい場合にモデルが収束するものと見なします。Tolerance の既定値は 1e-6 です。

    IRLS アルゴリズムの詳細については、反復的に再重み付けした最小二乗を参照してください。

    例: Tolerance=1e-4

    データ型: single | double

    観測値の重み。n 行 1 列の数値ベクトルとして指定します。ここで、n は観測値の数です。Weights の既定値は n 行 1 列の 1 のベクトルです。

    例: Weights

    データ型: single | double

    出力引数

    すべて折りたたむ

    多項回帰モデル。MultinomialRegression モデル オブジェクトとして返されます。

    アルゴリズム

    X または TblNaN 値、<undefined> 値、空の文字、空の string が格納されている場合、関数 fitmnrY の対応する観測値を無視します。

    バージョン履歴

    R2023a で導入