Main Content

predict

多項回帰モデルの応答を予測

R2023a 以降

    説明

    Ypred = predict(mdl,XNew) は、予測子データ XNewMultinomialRegression モデル オブジェクト mdl についての予測されたクラス ラベルを返します。

    [Ypred,probs] = predict(mdl,XNew) は、応答カテゴリの確率推定も返します。

    [Ypred,probs,lower,upper] = predict(mdl,XNew) は、応答 Ypred の信頼区間の下限と上限も返します。

    [___] = predict(___,Name=Value) では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、probs で確率推定を返す確率のタイプを指定できます。

    すべて折りたたむ

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

    load fisheriris

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

    関数cvpartitionを使用して、種類と測定値のデータを学習データとテスト データに分割します。関数trainingを使用して、学習データの行のインデックスを取得します。

    n = length(species);
    partition = cvpartition(n,'Holdout',0.05);
    idx_train = training(partition);

    学習データの行のインデックスを使用して学習データを作成し、測定値の行列と種類のラベルのベクトルを作成します。

    meastrain = meas(idx_train,:);
    speciestrain = species(idx_train,:);

    学習データを使用して多項回帰モデルを当てはめます。

    mdl = fitmnr(meastrain,speciestrain)
    mdl = 
    Multinomial regression with nominal responses
    
                                   Value       SE       tStat        pValue  
                                  _______    ______    ________    __________
    
        (Intercept_setosa)         86.293    12.541      6.8807    5.9554e-12
        x1_setosa                 -1.0621    3.5795    -0.29673       0.76667
        x2_setosa                  23.851    3.1238      7.6352    2.2556e-14
        x3_setosa                 -27.266    3.5009     -7.7883    6.7894e-15
        x4_setosa                 -59.671    7.0214     -8.4985     1.921e-17
        (Intercept_versicolor)     42.637    5.2214      8.1659    3.1906e-16
        x1_versicolor              2.4652    1.1263      2.1887      0.028619
        x2_versicolor              6.6808     1.474      4.5325     5.829e-06
        x3_versicolor             -9.4292    1.2946     -7.2837     3.248e-13
        x4_versicolor             -18.286    2.0833     -8.7775     1.671e-18
    
    
    143 observations, 276 error degrees of freedom
    Dispersion: 1
    Chi^2-statistic vs. constant model: 302.0378, p-value = 1.5168e-60
    

    mdl は、ノミナル多項回帰モデルをデータに当てはめた結果を含む多項回帰モデル オブジェクトです。meas の各予測子の係数統計量が table 出力に表示されます。既定では、virginicafitmnr で基準カテゴリとして使用されます。

    関数testを使用して、テスト データの行のインデックスを取得します。テスト データの行のインデックスを使用してテスト データを作成し、測定値の行列と種類のラベルのベクトルを作成します。

    idx_test = test(partition);
    meastest = meas(idx_test,:);
    speciestest = species(idx_test,:);

    meastest の測定値について、アヤメの種類を予測します。

    speciespredict = predict(mdl,meastest)
    speciespredict = 7x1 cell
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'versicolor'}
        {'versicolor'}
    
    

    speciespredict の予測を speciestest のカテゴリ名と比較します。

    speciestest
    speciestest = 7x1 cell
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'versicolor'}
        {'versicolor'}
    
    

    出力から、meastest の測定値について、アヤメの種類がモデルで正確に予測されていることがわかります。

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

    load carbig

    変数 Acceleration および Displacement には、自動車の加速度と排気量のデータがそれぞれ格納されています。変数 Cylinders には、それぞれの自動車のエンジンに搭載された気筒の数のデータが格納されています。

    関数tableを使用して、自動車のデータの変数から table を作成します。

    tbl = table(Acceleration,Displacement,Cylinders,VariableNames=["Acceleration","Displacement","Cylinders"])
    tbl=406×3 table
        Acceleration    Displacement    Cylinders
        ____________    ____________    _________
    
              12            307             8    
            11.5            350             8    
              11            318             8    
              12            304             8    
            10.5            302             8    
              10            429             8    
               9            454             8    
             8.5            440             8    
              10            455             8    
             8.5            390             8    
            17.5            133             4    
            11.5            350             8    
              11            351             8    
            10.5            383             8    
              11            360             8    
              10            383             8    
          ⋮
    
    

    Cylinders のデータには固有の順序があります。AccelerationDisplacement を予測子変数、Cylinders を応答として使用して、順序多項回帰モデルを当てはめます。

    mdl = fitmnr(tbl,"Cylinders",ModelType="ordinal");

    mdl は、順序多項回帰モデルをデータに当てはめた結果を含む多項回帰モデル オブジェクトです。

    加速度が 16 でエンジン排気量が 80 の自動車について、応答カテゴリ、累積カテゴリ確率、および 99% 信頼区間の範囲を予測します。

    [cylinderspredict,cumprobs,lower,upper] = predict(mdl,[16 80],Alpha=0.01,ProbabilityType="cumulative")
    cylinderspredict = 4
    
    cumprobs = 1×4
    
        0.0792    1.0000    1.0000    1.0000
    
    
    lower = 1×4
    
        0.0787    1.0000    1.0000    1.0000
    
    
    upper = 1×4
    
        0.0798    1.0000    1.0000    1.0000
    
    

    出力から、予測された応答カテゴリは 4 であることがわかります。ベクトル cumprobsCylinders の各カテゴリの累積確率を示します。この予測のベースとなっているカテゴリ確率を確認するには、カテゴリ確率を計算します。

    [~,catprobs] = predict(mdl,[16 80])
    catprobs = 1×5
    
        0.0792    0.9208    0.0000    0.0000    0.0000
    
    

    ベクトル catprobs で最も確率が高いのは 2 番目の値です。Cylinders のカテゴリの順序付きリストを表示します。

    mdl.ClassNames
    ans = 5×1
    
         3
         4
         5
         6
         8
    
    

    出力から、2 番目のカテゴリは 4 気筒の自動車に対応することがわかります。したがって、カテゴリ確率が最も高いカテゴリは 4 です。

    入力引数

    すべて折りたたむ

    多項回帰モデル オブジェクト。関数 fitmnr で作成される MultinomialRegression モデル オブジェクトとして指定します。

    新しい予測子の入力値。table または n 行 p 列の行列として指定します。ここで、n は予測する観測値の数、p は mdl の当てはめに使用された予測子変数の数です。

    • XNew が table の場合、mdl の当てはめに使用されたすべての予測子の名前を含める必要があります。予測子の名前は mdl.PredictorNames プロパティで確認できます。

    • XNew が行列の場合、推定された係数と同じ数の列を含める必要があります。推定された係数の数は mdl.NumPredictors プロパティで確認できます。XNew を行列として指定できるのは、mdl.PredictorNames のすべての名前が数値予測子を参照する場合のみです。

    例: predict(mdl,[6.2 3.4; 5.9 3.0]) は、2 つの予測子のモデル mdl を点 p1 = [6.2 3.4] および p2 = [5.9 3.0] において評価します。

    データ型: single | double | table

    名前と値の引数

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

    例: [Ypred,probs,lower,upper] = predict(model,X,Alpha=0.01,ProbabilityType="cumulative") は、確率推定の信頼水準を 99%、そのタイプを累積と指定します。

    確率推定の有意水準。範囲 (0,1) のスカラー値として指定します。信頼区間の信頼水準は 100(1 − α)% です。Alpha の既定値は 0.05 で、推定値の 95% 信頼区間を返します。

    例: Alpha=0.01

    データ型: single | double

    probs で返す確率推定のタイプ。次のオプションのいずれかとして指定します。

    オプション説明
    "category" (既定の設定)各応答カテゴリについての個別の確率を計算します。
    "cumulative"各応答カテゴリについての累積確率を計算します。
    "conditional"各応答カテゴリについての条件付き確率を計算します。

    例: ProbabilityType="conditional"

    データ型: char | string

    出力引数

    すべて折りたたむ

    予測応答カテゴリ。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として返されます。Ypred のデータ型は mdl.ClassNames と同じです。

    応答カテゴリの確率推定。数値行列として返されます。probs の各列は、mdl.ClassNames の同じインデックスのエントリに対応します。

    probs の確率推定についての信頼区間の上限。数値行列として返されます。

    probs の確率推定についての信頼区間の下限。数値行列として返されます。

    代替機能

    • feval は、predict と同じ予測を返します。関数 feval は、各予測子変数に 1 つの入力が対応する複数の入力引数を取ることができます。関数 feval は、予測に対する信頼区間は返さないことに注意してください。

    • random は、ノイズを追加した予測を返します。

    バージョン履歴

    R2023a で導入