Main Content

plotResiduals

多項回帰モデルの残差プロット

R2023a 以降

    説明

    plotResiduals(mdl) は、多項回帰モデル オブジェクト mdl の逸脱度残差の確率密度プロットを生成します。

    plotResiduals(mdl,plotType) は、残差のプロット タイプを指定します。

    plotResiduals(ax,___) は、前の構文におけるいずれかの入力引数の組み合わせを使用して、現在の座標軸ではなく ax によって指定される座標軸にプロットします。

    plotResiduals(___,Name=Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、プロットする残差のタイプやプロットされるオブジェクトの色を指定できます。

    h = plotResiduals(___) は、プロット内のラインまたはパッチに対するグラフィックス オブジェクトを返します。プロットの作成後に特定のラインまたはパッチのプロパティを修正するには、h を使用します。プロパティの一覧については、Line のプロパティまたはPatch のプロパティを参照してください。

    すべて折りたたむ

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

    load fisheriris

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

    多項回帰モデルを当てはめ、測定値を使用してアヤメの種類を予測します。当てはめたモデルの残差の table を表示します。

    mdl = fitmnr(meas,species);
    mdl.Residuals
    ans=150×3 table
            Raw          Pearson      Deviance
        ___________    ___________    ________
    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
        0    0    0    0    0    0       0    
          ⋮
    
    

    モデルの生の残差、ピアソン残差、および逸脱度残差が出力に表示されます。

    逸脱度残差の確率密度プロットを生成します。

    plotResiduals(mdl)

    Figure contains an axes object. The axes object with title Histogram of residuals, xlabel Residuals, ylabel Probability density contains an object of type patch.

    ヒストグラムから、逸脱度残差はほとんどがわずかであることがわかります。ただし、いくつかの残差が 1 より大きくなっています。

    残差が大きい観測値を検査します。関数sortを使用して、残差を大きいものから小さいものの順に並べ替えます。関数headを使用して、大きい順に 4 つの残差とそれらに対応するインデックスを表示します。

    [r, ind] = sort(mdl.Residuals.Deviance,"descend");
    head(r,4)
        4.0443
        3.1707
        1.0378
        0.8035
    
    head(ind,4)
        84
       134
        71
       139
    

    出力から、measspecies の行 84、134、および 71 に対応する観測値の残差が 1 より大きいことがわかります。他のほとんどの残差はゼロに近いことから、観測値 84、134、および 71 は外れ値である可能性が高いと考えられます。

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

    load carbig

    ベクトル DisplacementCylinders、および Model_Year に、自動車のエンジン排気量、エンジンの気筒数、および自動車が製造された年のデータがそれぞれ格納されています。

    DisplacementCylinders を予測子変数、Model_Year を応答として使用して、多項回帰モデルを当てはめます。

    mdl = fitmnr([Displacement Cylinders],Model_Year);

    残差がランダムであるかどうかを調べるために、逸脱度残差のラグ付きプロットを生成します。

    plotResiduals(mdl,"lagged")

    Figure contains an axes object. The axes object with title Plot of residuals vs. lagged residuals, xlabel Residual(t-1), ylabel Residual(t) contains 3 objects of type line. One or more of the lines displays its values using only markers

    逸脱度残差のラグ付きプロットから、残差のクラスターがプロットの右上に向かって広がっていることがわかります。このクラスターはデータ点の残差と前のデータ点の残差の間に緩やかな正の相関があることを示しており、残差がランダムでない可能性があることを示唆しています。

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

    load carbig

    ベクトル DisplacementCylinders、および Model_Year に、自動車のエンジン排気量、エンジンの気筒数、および自動車が製造された年のデータがそれぞれ格納されています。

    DisplacementCylinders を予測子変数、Model_Year を応答として使用して、ノミナル多項回帰モデルを当てはめます。

    mdl = fitmnr([Displacement Cylinders],Model_Year);

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

    最初の応答カテゴリの名前を表示します。

    mdl.ClassNames(1)
    ans = 70
    

    出力から、最初の応答カテゴリは 1970 年に製造された自動車に対応することがわかります。

    1970 年に製造された自動車の生の残差がランダムに分布しているかどうかを調べるために、確率プロットを作成し、プロットされたオブジェクトのグラフィックス配列を返します。plotResiduals では、既定で、最初の応答カテゴリの生の残差を使用して確率プロットが作成されます。

    h = plotResiduals(mdl,"probability",ResidualType="raw")
    h = 
      2x1 graphics array:
    
      Line            (main)
      FunctionLine
    
    

    グラフィックス配列 h の要素のデータ型が出力に表示されます。Line 要素は生の残差に対応します。FunctionLine 要素は理論上の正規分布を表すラインに対応します。

    h の 2 番目の要素の Color プロパティを変更して、正規分布のラインの色に赤を指定します。

    h(2).Color = "r"

    Figure contains an axes object. The axes object with title Normal probability plot of residuals, xlabel Residuals, ylabel Probability contains 2 objects of type functionline, line. One or more of the lines displays its values using only markers

    h = 
      2x1 graphics array:
    
      Line            (main)
      FunctionLine
    
    

    プロットから、残差が赤のラインに従っていないことがわかります。これは、1970 年に製造された自動車の生の残差が正規分布でないことを示します。

    入力引数

    すべて折りたたむ

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

    プロット タイプ。次の値のいずれかとして指定します。

    説明
    "histogram"残差の確率密度プロット (既定の設定)
    "caseorder"残差とケース (行) 順の比較
    "lagged"残差とラグ付き残差の比較 (つまり r(i) と r(i – 1)、ここで r(i) は i 番目のデータ点の残差)
    "probability"正規確率プロット
    "symmetry" 対称性プロット

    例: "lagged"

    データ型: char | string

    ターゲットの座標軸。Axes オブジェクトを指定します。座標軸を指定しない場合、plotResiduals は現在の座標軸 (gca) を使用します。

    名前と値の引数

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

    例: plotResiduals(mdl,ResidualType="Pearson",ClassToPlot="virginica",FaceColor="m") は、virginica 応答カテゴリのピアソン残差のヒストグラムをマゼンタで生成します。

    残差

    すべて折りたたむ

    プロットする残差のタイプ。次の表のオプションのいずれかとして指定します。

    オプション説明
    "deviance"逸脱度残差 (既定の設定)
    "raw"

    観測値から当てはめ値を減算した生の残差

    "Pearson"

    生の残差を平方根平均二乗誤差 (RMSE) で除算したピアソン残差

    それぞれの残差のタイプの詳細については、Residualsを参照してください。

    例: ResidualType="raw"

    データ型: char | string

    プロットする残差応答カテゴリ。mdl の当てはめに使用された応答カテゴリの名前として指定します。応答カテゴリの名前のリストは mdl.ClassNames プロパティを使用して確認できます。ClassToPlot の既定値は mdl.ClassNames(1) です。この引数は、ResidualType"Pearson" または "raw" の場合のみ有効です。

    例: ClassToPlot="virginica"

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

    ヒストグラムのグラフィックス

    すべて折りたたむ

    表面の色。"interp""flat"、RGB 3 成分、16 進数のカラー コード、色の名前または省略名として指定します。

    すべての表面に単色を指定するには、FaceColor を RGB 3 成分、16 進数のカラー コード、色の名前または省略名として指定します。

    • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 要素の行ベクトルです。強度は範囲 [0,1] に含まれていなければなりません。たとえば [0.4 0.6 0.7] のようになります。

    • 16 進数のカラー コードは、ハッシュ記号 (#) で始まり、0 から F の範囲にある 16 進数が 3 つまたは 6 つ続く、文字ベクトルまたは string スカラーです。この値では、大文字と小文字は区別されません。したがって、カラー コード "#FF8800""#ff8800""#F80""#f80" は等価です。

    色の名前省略名RGB 3 成分16 進数のカラー コード外観
    "red""r"[1 0 0]"#FF0000"

    Sample of the color red

    "green""g"[0 1 0]"#00FF00"

    Sample of the color green

    "blue""b"[0 0 1]"#0000FF"

    Sample of the color blue

    "cyan" "c"[0 1 1]"#00FFFF"

    Sample of the color cyan

    "magenta""m"[1 0 1]"#FF00FF"

    Sample of the color magenta

    "yellow""y"[1 1 0]"#FFFF00"

    Sample of the color yellow

    "black""k"[0 0 0]"#000000"

    Sample of the color black

    "white""w"[1 1 1]"#FFFFFF"

    Sample of the color white

    "none"該当なし該当なし該当なし色なし

    以下は、MATLAB® が多くのタイプのプロットで使用する既定の色に対する RGB 3 成分および 16 進数のカラー コードです。

    RGB 3 成分16 進数のカラー コード外観
    [0 0.4470 0.7410]"#0072BD"

    Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

    [0.8500 0.3250 0.0980]"#D95319"

    Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

    [0.9290 0.6940 0.1250]"#EDB120"

    Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

    [0.4940 0.1840 0.5560]"#7E2F8E"

    Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

    [0.4660 0.6740 0.1880]"#77AC30"

    Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

    [0.3010 0.7450 0.9330]"#4DBEEE"

    Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

    [0.6350 0.0780 0.1840]"#A2142F"

    Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

    例: FaceColor="g"

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

    表面の透明度。次の値のいずれかとして指定します。

    • 範囲 [0,1] のスカラー — すべての表面で同じ透明度を使用します。値 1 では完全な不透明に、値 0 では完全な透明になります。このオプションでは、FaceVertexAlphaData プロパティの透明度の値は使用されません。

    • 'flat'FaceVertexAlphaData プロパティの値に基づいて、異なる透明度を各表面に使用します。まず、名前と値の引数 FaceVertexAlphaData を表面または頂点ごとに 1 つの透明度の値を含むベクトルとして指定しなければなりません。最初の頂点における透明度の値によって表面全体の透明度が決定されます。

    • 'interp'FaceVertexAlphaData プロパティの値に基づいて、内挿された透明度を各表面に使用します。まず、名前と値の引数 FaceVertexAlphaData を頂点ごとに 1 つの透明度の値を含むベクトルとして指定しなければなりません。頂点で値を内挿することにより、透明度が各表面域で変化します。

    例: FaceAlpha=0.5

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

    ラインの幅。ポイント単位の正の値として指定します。1 ポイントは 1/72 インチです。ラインにマーカーがある場合、ライン幅はマーカー エッジにも影響を与えます。

    ライン幅をピクセルの幅より細くすることはできません。ライン幅をシステムのピクセル幅より小さい値に設定すると、ラインは 1 ピクセル幅で表示されます。

    例: LineWidth=1.5

    データ型: single | double

    メモ

    ここでは、ヒストグラムのグラフィックス プロパティの一部だけを紹介しています。完全な一覧については、Patch のプロパティを参照してください。

    ラインのグラフィックス

    すべて折りたたむ

    ラインの色。RGB 3 成分、16 進数のカラー コード、色の名前または省略名として指定します。既定値の [0 0 0] は黒に対応します。

    カスタム色の場合は、RGB 3 成分または 16 進数のカラー コードを指定します。

    • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 要素の行ベクトルです。強度は範囲 [0,1] に含まれていなければなりません。たとえば [0.4 0.6 0.7] のようになります。

    • 16 進数のカラー コードは、ハッシュ記号 (#) で始まり、0 から F の範囲にある 16 進数が 3 つまたは 6 つ続く、文字ベクトルまたは string スカラーです。この値では、大文字と小文字は区別されません。したがって、カラー コード "#FF8800""#ff8800""#F80""#f80" は等価です。

    あるいは、一部の一般的な色を名前で指定できます。次の表は、名前が付いた色のオプション、等価な RGB 3 成分、および 16 進数のカラー コードの一覧です。

    色の名前省略名RGB 3 成分16 進数のカラー コード外観
    "red""r"[1 0 0]"#FF0000"

    Sample of the color red

    "green""g"[0 1 0]"#00FF00"

    Sample of the color green

    "blue""b"[0 0 1]"#0000FF"

    Sample of the color blue

    "cyan" "c"[0 1 1]"#00FFFF"

    Sample of the color cyan

    "magenta""m"[1 0 1]"#FF00FF"

    Sample of the color magenta

    "yellow""y"[1 1 0]"#FFFF00"

    Sample of the color yellow

    "black""k"[0 0 0]"#000000"

    Sample of the color black

    "white""w"[1 1 1]"#FFFFFF"

    Sample of the color white

    "none"該当なし該当なし該当なし色なし

    以下は、MATLAB が多くのタイプのプロットで使用する既定の色に対する RGB 3 成分および 16 進数のカラー コードです。

    RGB 3 成分16 進数のカラー コード外観
    [0 0.4470 0.7410]"#0072BD"

    Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

    [0.8500 0.3250 0.0980]"#D95319"

    Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

    [0.9290 0.6940 0.1250]"#EDB120"

    Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

    [0.4940 0.1840 0.5560]"#7E2F8E"

    Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

    [0.4660 0.6740 0.1880]"#77AC30"

    Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

    [0.3010 0.7450 0.9330]"#4DBEEE"

    Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

    [0.6350 0.0780 0.1840]"#A2142F"

    Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

    例: Color="blue"

    例: Color=[0 0 1]

    例: Color="#0000FF"

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

    ライン スタイル。次の表に記載されたオプションのいずれかとして指定します。

    ライン スタイル説明結果として得られるライン
    "-"実線

    Sample of solid line

    "--"破線

    Sample of dashed line

    ":"点線

    Sample of dotted line

    "-."一点鎖線

    Sample of dash-dotted line, with alternating dashes and dots

    "none"ラインなしラインなし

    例: LineStyle="--"

    データ型: char | string

    マーカー記号。次の表に記載された値のいずれかとして指定します。既定では、オブジェクトはマーカーを表示しません。マーカー記号を指定すると、各データ点または各頂点にマーカーが追加されます。

    マーカー説明結果として得られるマーカー
    "o"

    Sample of circle marker

    "+"プラス記号

    Sample of plus sign marker

    "*"アスタリスク

    Sample of asterisk marker

    "."

    Sample of point marker

    "x"十字

    Sample of cross marker

    "_"水平線

    Sample of horizontal line marker

    "|"垂直線

    Sample of vertical line marker

    "square"正方形

    Sample of square marker

    "diamond"菱形

    Sample of diamond line marker

    "^"上向き三角形

    Sample of upward-pointing triangle marker

    "v"下向き三角形

    Sample of downward-pointing triangle marker

    ">"右向き三角形

    Sample of right-pointing triangle marker

    "<"左向き三角形

    Sample of left-pointing triangle marker

    "pentagram"星形五角形

    Sample of pentagram marker

    "hexagram"星形六角形

    Sample of hexagram marker

    "none"マーカーなし該当なし

    例: Marker="x"

    データ型: char | string

    メモ

    ここでは、ラインのグラフィックス プロパティの一部だけを紹介しています。完全な一覧については、Line のプロパティを参照してください。

    出力引数

    すべて折りたたむ

    プロットされたオブジェクトのハンドル。Patch オブジェクトまたはグラフィックス配列として返されます。

    plotType"Histogram" の場合、hPatch オブジェクトです。それ以外の場合、h はグラフィックス配列です。グラフィックス配列の内容は、plotType の値によって異なります。

    plotType Valueグラフィックス配列の内容
    "caseorder"[Line; Line]
    "lagged"[Line; Line; Line]
    "probability"[Line; FunctionLine]
    "symmetry"[Line; Line]

    バージョン履歴

    R2023a で導入