Main Content

random

当てはめられた多項回帰モデルからランダム応答を生成

R2023a 以降

    説明

    Ysim = random(mdl,XNew) は、当てはめられた多項回帰モデル オブジェクト mdl に予測子データ XNew を渡して生成される多項分布からランダムにサンプリングされた応答のベクトルを返します。

    Ysim = random(mdl,XNew,NumTrials) は、XNew の各データ点についてランダムにサンプリングされた応答を返す数を指定します。

    Ysim = random(___,type) は、前の構文におけるいずれかの入力引数の組み合わせを使用して、シミュレートされた応答をカテゴリ ラベルとして返すかカウントの table として返すかを指定します。

    すべて折りたたむ

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

    load fisheriris

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

    測定値を予測子データ、アヤメの種類を応答データとして使用して、多項回帰モデルを当てはめます。

    mdl = fitmnr(meas,species);

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

    関数randを使用して、測定値データに一様分布のランダム ノイズを追加することで新しい予測子データを生成します。

    rng("default")  % Set the random seed for reproducibility
    sz = size(meas);
    measNew = meas + rand(sz);

    measNew の各行が一意のデータ点の予測子データに対応します。

    当てはめられたモデルに measNew を渡して生成される多項分布からサンプリングされたランダム応答値を生成します。

    speciesPred = random(mdl,measNew)
    speciesPred = 150x1 cell
        {'versicolor'}
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'versicolor'}
        {'setosa'    }
        {'versicolor'}
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'versicolor'}
        {'setosa'    }
        {'versicolor'}
        {'setosa'    }
        {'versicolor'}
        {'setosa'    }
        {'versicolor'}
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'setosa'    }
        {'versicolor'}
        {'setosa'    }
        {'setosa'    }
        {'versicolor'}
          ⋮
    
    

    元の応答データを表示します。

    species
    species = 150x1 cell
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
        {'setosa'}
          ⋮
    
    

    speciesPredspecies の出力から、speciesPred のランダムに生成された応答の大部分は species の元の応答ラベルと一致していることがわかります。speciesPredspecies の違いは measNewmeas の違いによるもので、予測子データに関連付けられた多項分布から speciesPred の値をサンプリングするランダム性も影響しています。

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

    load fisheriris

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

    測定値を予測子データ、アヤメの種類を応答データとして使用して、多項回帰モデルを当てはめます。

    mdl = fitmnr(meas,species);

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

    関数randを使用して、測定値データに一様分布のランダム ノイズを追加することで新しい予測子データを生成します。

    rng("default")  % Set the random seed for reproducibility
    sz = size(meas);
    measNew = meas + 5*rand(sz);

    measNew の各行が一意のデータ点の予測子データに対応します。

    当てはめられたモデルに measNew を渡して生成される多項分布からサンプリングされたランダム応答値を生成します。measNew の各データ点について、対応する多項分布から 100 個の標本を生成し、結果をカウントの table で返します。

    speciesPred = random(mdl,measNew,100,"counts")
    speciesPred=150×3 table
        setosa    versicolor    virginica
        ______    __________    _________
    
           0          31            69   
         100           0             0   
           0         100             0   
           0         100             0   
           0         100             0   
           0          78            22   
           0         100             0   
           0           0           100   
           0          98             2   
         100           0             0   
           0         100             0   
           0           0           100   
           0           0           100   
           0         100             0   
           0         100             0   
           0           0           100   
          ⋮
    
    

    table speciesPred の各行が measNew のデータ点に対応し、各 table 変数が応答カテゴリに対応します。speciesPred の要素は、それぞれの種類のサンプリング回数を示します。

    入力引数

    すべて折りたたむ

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

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

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

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

    例: random(mdl,[5.8 2.7; 5.7 2.5]) は、2 つの予測子のモデル mdl をクエリ点 xq1 = [5.8 2.7] および xq2 = [5.7 2.5] で評価して与えられる各多項分布からシミュレートされた応答を生成します。

    データ型: single | double | table

    XNew の各データ点についてシミュレートする試行回数。正の整数スカラーとして指定します。

    データ型: single | double

    シミュレートされた応答を返すタイプ。"samples" または "counts" として指定します。シミュレートされた応答値をクラス ラベルの cell 配列として返すには、type"samples" として指定します。シミュレートされた応答値を各応答カテゴリのカウントの table として返すには、type"counts" として指定します。

    データ型: char | string

    出力引数

    すべて折りたたむ

    シミュレートされた応答。カテゴリ ラベルの cell 配列またはカウントの table として返されます。

    • 入力引数 type"samples" として指定した場合、Ysim は r 行 m 列のカテゴリ ラベルの cell 配列になります。r は XNew 内のデータ点の数、m は NumTrials で指定した試行回数です。

    • 入力引数 type"counts" として指定した場合、Ysim は r 行 N 列の table になります。ここで、N は mdl の当てはめに使用されたデータ内の応答変数カテゴリの数です。

    アルゴリズム

    関数 random は、当てはめられた多項回帰モデル オブジェクト mdl を使用して、XNew の各データ点の応答カテゴリ確率を計算します。それぞれの確率のセットで、対応する予測子データの応答値を関数でサンプリングする多項分布が定義されます。

    バージョン履歴

    R2023a で導入