fitmnr
構文
説明
は、行列 MnrMdl
= fitmnr(X
,Y
)X
の予測子データと Y
の応答データに対して多項回帰モデルを当てはめ、MultinomialRegression
オブジェクト MnrMdl
を返します。入力 Y
は、カウントの行列か応答変数のクラスのベクトルにすることができます。
は、MnrMdl
= fitmnr(Tbl
,ResponseVarName
)Tbl
の変数を予測子データおよび応答データとして使用します。引数 ResponseVarName
で、応答データが格納された変数を指定します。
は、ウィルキンソンの表記法で多項回帰モデルを指定します。MnrMdl
= fitmnr(Tbl
,Formula
)Formula
の項では、Tbl
の変数名のみを使用します。
では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、リンク関数やモデル タイプを指定できます。MnrMdl
= fitmnr(___,Name=Value
)
例
ノミナル多項回帰モデルの当てはめ
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% の信頼水準で統計的に有意であることを示しています。
MnrModel
の Formula
プロパティを使用して、モデルの方程式の一般的な形式を調べます。
MnrModel.Formula
ans = logit(y) ~ 1 + x1 + x2 + x3 + x4
出力から、MnrModel
のリンク関数が既定の多項リンク関数 logit
であることがわかります。当てはめたモデルの係数とモデルの方程式の一般的な形式を使用して、当てはめたモデルの方程式を次のように記述できます。
これらの方程式は、花が特定のカテゴリに含まれる確率を花が基準カテゴリに含まれる確率で除算した商に対する予測子変数の影響を表します。たとえば、2 番目の方程式の推定係数 2.5 は、 が 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'}
⋮
測定値を予測子データ、種類を応答データとして使用して、花のデータに多項回帰モデルを当てはめます。既定では、tbl
の Species
列で最後に現れる 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
変数 Acceleration
、Displacement
、Horsepower
、および 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 X
の Mileage
列に未定義のエントリが含まれています。
Acceleration
、Displacement
、Horsepower
、および 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% の信頼水準で、 値が 0.035045、1.2354e-05、および 0.011821 であり、Displacement
、Horsepower
、および Weight
の各変数が確率の対数の商に対して統計的に有意な影響を与えることを示しています。分子は自動車の燃費が特定の値以下になる確率、分母は自動車の燃費がその値より大きくなる確率です。
当てはめたモデルの係数とモデルの方程式の一般的な形式を使用して、当てはめたモデルの方程式を次のように記述できます。
、、、、および は、X
の変数 Mileage
、Acceleration
、Displacement
、Horsepower
、および Weight
をそれぞれ表しています。順序多項回帰モデルの方程式とそれらの項の有意性の詳細については、順序応答の多項モデルを参照してください。
入力引数
X
— 予測子データ
n 行 p 列の数値行列
予測子データ。n 行 p 列の数値行列として指定します。ここで、n はデータ セット内の観測値の数、p は予測子変数の数です。X
の各行が観測値に対応し、各列が予測子変数に対応します。
メモ
fitmnr
は自動的に定数項 (切片) をすべてのモデルに含めます。X
に 1 の列を入力しないでください。
データ型: single
| double
Y
— 応答カテゴリ ラベル
n 行 k 列の行列 | n 行 1 列の数値ベクトル | n 行 1 列の logical ベクトル | n 行 1 列の string ベクトル | n 行 1 列の categorical 配列 | n 行 1 列の文字ベクトルの cell 配列
応答カテゴリ ラベル。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
Tbl
— 予測子と応答のデータ
テーブル
予測子と応答のデータ。table として指定します。Tbl
の変数には、数値または categorical のデータを格納できます。Tbl
を指定する場合、入力引数 Y
、ResponseVarName
、または Formula
を使用して応答データも指定しなければなりません。
Y
で応答データを指定する場合、table 変数は多項回帰の予測子データのみを表します。Tbl
の予測子の値の行は、Y
の同じ位置にある観測値に対応します。Tbl
の行数はY
の長さと同じでなければなりません。Y
を指定しない場合は、入力引数ResponseVarName
またはFormula
を使用して、Tbl
のどの変数に応答データが格納されているかを示さなければなりません。名前と値の引数PredictorNames
を使用して、多項回帰で使用するTbl
の因子のサブセットを選択することもできます。関数fitmnr
は、Tbl
の予測子変数の値を同じ行の応答データに関連付けます。
例: snake=table(weight,length,species); fitmnr(snake,"species")
データ型: table
ResponseVarName
— 応答として使用する変数の名前
string スカラー | 文字ベクトル
応答として使用する変数の名前。string スカラーまたは文字ベクトルとして指定します。ResponseVarName
は、Tbl
のどの変数に応答データが格納されているかを示します。ResponseVarName
を指定する場合、入力引数 Tbl
も指定しなければなりません。
例: snake=table(weight,length,species); fitmnr(snake,"species")
データ型: char
| string
Formula
— 当てはめる多項回帰モデル
string スカラー | 文字ベクトル
当てはめる多項回帰モデル。ウィルキンソンの表記法による string スカラーまたは文字ベクトルとして指定します。
例: 式 "species ~ meas1 + meas2 + meas3 + meas1:meas2:meas3"
を使用して、多項回帰モデルを変数 meas1
、meas2
、meas3
の和とその 3 次交互作用として指定します。
データ型: char
| string
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
例: fitmnr(X,Y,Link="probit",ModelType="ordinal",CategoricalPredictors=[1,2])
は、"probit"
を順序多項回帰モデルのリンク関数として指定し、X
の最初の 2 列をカテゴリカル変数として指定します。
CategoricalPredictors
— カテゴリカルとして扱う予測子
数値ベクトル | string ベクトル | 文字ベクトルの cell 配列 | "all"
カテゴリカルとして扱う予測子。数値ベクトル、string ベクトル、文字ベクトルの cell 配列、または "all"
として指定します。
CategoricalPredictors
は次のいずれかとして指定します。
1 から p までのインデックスの数値ベクトル。ここで、p は予測子変数の数です。予測子変数のインデックスは、行列
X
または tableTbl
の列における順序です。長さ p の logical ベクトル。true のエントリは、対応する予測子がカテゴリカルであることを示します。
string 配列または文字ベクトルの cell 配列。配列の各要素は予測子変数の名前です。予測子の名前は
PredictorNames
またはTbl
の名前に一致しなければなりません。"all"
。すべての予測子変数がカテゴリカルであることを示します。
既定では、fitmnr
は数値予測子を連続として扱い、それ以外の型の予測子変数をカテゴリカルとして扱います。カテゴリカル データの詳細については、categorical データの自然表現を参照してください。
例: CategoricalPredictors=["Location" "Smoker"]
例: CategoricalPredictors=[1 3 4]
データ型: single
| double
| logical
| string
| cell
EstimateDispersion
— 分散パラメーターを推定するインジケーター
false
または 0
(既定値) | true
または 1
分散パラメーターを推定するインジケーター。数値または logical の 0
(false
) または 1
(true
) として指定します。
値 | 説明 |
---|---|
0 (false ) | 理論分散値 1 を使用します (既定の設定)。 |
1 (true ) | 標準誤差の計算で使用する多項分布の分散パラメーターを推定します。 |
例: EstimateDispersion=1
データ型: single
| double
| logical
IncludeClassInteractions
— 応答カテゴリと係数の間の交互作用を表すインジケーター
true
または 1
| false
または 0
応答カテゴリと係数の間の交互作用を表すインジケーター。数値または logical の 1
(true
) または 0
(false
) として指定します。
値 | 説明 |
---|---|
1 (true ) | ノミナル モデルと階層モデルの既定値。クラス間で異なる係数でモデルを当てはめます。 |
0 (false ) | 順序モデルの既定値。すべての多項クラス間で予測子変数の係数の共通セットでモデルを当てはめます。多くの場合、このタイプのモデルは "並列回帰" モデルまたは "比例オッズ" モデルと呼ばれます。ノミナル モデルの場合、IncludeClassInteractions を false に設定すると、fitmnr は切片のみのモデルを返します。 |
いずれの場合も、モデルはクラス間で異なる切片をもちます。IncludeClassInteractions
の値により、出力配列 MultinomialRegression.Coefficients
の次元が決まります。
例: IncludeClassInteractions=1
データ型: single
| double
| logical
IterationLimit
— 最大反復回数
100 (既定値) | 正の整数
モデルの当てはめに使用される反復的に再重み付けした最小二乗 (IRLS) の最大反復回数。正の整数として指定します。IterationLimit
の既定値は 100
です。
IRLS アルゴリズムの詳細については、反復的に再重み付けした最小二乗を参照してください。
例: IterationLimit=400
データ型: single
| double
Link
— リンク関数
"logit"
(既定値) | "probit"
| "comploglog"
| "loglog"
順序モデルと階層モデルに使用するリンク関数。次の表のいずれかの値として指定します。
値 | 関数 |
---|---|
"logit" (既定の設定) | f(γ) = ln(γ/(1 –γ)) |
"probit" | f(γ) = Φ-1(γ) — 誤差項は分散 1 で正規分布されます。 |
"comploglog" | f(γ) = ln(–ln(1 – γ)) |
"loglog" | f(γ) = ln(–ln(γ)) |
リンク関数は、応答確率と予測子の線形結合との間の関係を定義します。γ は、順序応答をもつモデルの場合は累積確率、階層応答をもつモデルの場合は条件付き確率です。
順序モデルの場合、πj は観測値がカテゴリ j に含まれる確率であり、γ は観測値がカテゴリ 1 から j までに含まれる累積確率を表します。ロジット リンク関数をもつモデルの形式は次のようになります。
ここで、k は最後のカテゴリを表します。
階層モデルの場合、πj および γ は観測値がカテゴリ j に含まれる確率を表します。その観測値が前のカテゴリに含まれていないことが前提となります。ロジット リンク関数をもつモデルの形式は次のようになります。
ここで、k は最後のカテゴリを表します。
ノミナル モデルの場合は、常に次の多項ロジット リンクが使用されるため Link
は指定できません。
ここで、πj は観測値がカテゴリ j に含まれる確率であり、r は基準カテゴリに対応します。fitmnr
では、最後のカテゴリをノミナル モデルの基準カテゴリとして使用します。
例: Link="loglog"
データ型: char
| string
ModelType
— 当てはめるモデルのタイプ
"nominal"
(既定値) | "ordinal"
| "hierarchical"
当てはめるモデルのタイプ。次の表のいずれかの値として指定します。
値 | 説明 |
---|---|
"nominal" (既定の設定) | 応答クラスに順序はありません。ModelType が "nominal" の場合、多項回帰を "ソフトマックス回帰" と呼ぶこともあります。 |
"ordinal" | 応答クラスに自然順があります。 |
"hierarchical" | 応答クラスが入れ子になっています。 |
例: ModelType="hierarchical"
データ型: char
| string
PredictorNames
— 予測子変数の名前
string ベクトル (既定値) | 文字ベクトルの cell 配列
予測子の名前。string ベクトルまたは文字ベクトルの cell 配列として指定します。
fitmnr
の呼び出しでTbl
を指定する場合、PredictorNames
はTbl
の table 変数のサブセットでなければなりません。fitmnr
は、PredictorNames
で指定された予測子のみを使用します。この場合、PredictorNames
の既定値はTbl
の予測子変数の名前のコレクションです。fitmnr
の呼び出しで行列X
を指定する場合、PredictorNames
に任意の名前を指定できます。この場合、PredictorNames
の既定値は 1 行 p 列の cell 配列['x1','x2',…,'xp']
です。ここで、p は予測子変数の数です。
Formula
を指定した場合、fitmnr
は PredictorNames
を無視します。
例: PredictorNames=["time","latitude"]
データ型: string
| cell
ResponseName
— 応答変数に割り当てる名前
string スカラー | 文字ベクトル
応答変数に割り当てる名前。string スカラーまたは文字ベクトルとして指定します。ResponseVarName
または Formula
を指定した場合、fitmnr
は ResponseName
を無視します。
例: ResponseName="City"
データ型: char
| string
Tolerance
— 終了許容誤差
1e-6
(既定値) | 数値スカラー
反復的に再重み付けした最小二乗 (IRLS) 当てはめアルゴリズムの終了許容誤差。数値スカラーとして指定します。fitmnr
は、IRLS アルゴリズムの 2 回の反復における各係数の相対差が Tolerance
より小さい場合にモデルが収束するものと見なします。Tolerance
の既定値は 1e-6
です。
IRLS アルゴリズムの詳細については、反復的に再重み付けした最小二乗を参照してください。
例: Tolerance=1e-4
データ型: single
| double
Weights
— 観測値の重み
n 行 1 列の数値ベクトル
観測値の重み。n 行 1 列の数値ベクトルとして指定します。ここで、n は観測値の数です。Weights
の既定値は n 行 1 列の 1 のベクトルです。
例: Weights
データ型: single
| double
出力引数
MnrMdl
— 多項回帰モデル
MultinomialRegression
モデル オブジェクト
多項回帰モデル。MultinomialRegression
モデル オブジェクトとして返されます。
バージョン履歴
R2023a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)