このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
fitglm
一般化線形回帰モデルの作成
構文
説明
は、応答データが格納された table 変数を指定します。mdl
= fitglm(tbl
,ResponseVarName
)
は、1 つ以上の mdl
= fitglm(___,Name,Value
)Name,Value
のペアの引数で指定された追加オプションを使用して一般化線形回帰モデルを返します。
たとえば、カテゴリカルである変数、応答変数の分布、使用するリンク関数を指定できます。
例
ロジスティック回帰モデルの当てはめ
2 次交互作用モデルを使用し、年齢、体重、性別を関数とする喫煙可能性の論理二項モデルを作成します。
データセット配列 hospital
を読み込みます。
load hospital
dsa = hospital;
変数である年齢、体重、性別の間で最大 2 次の交互作用を許容する式を使用したモデルを指定します。喫煙者は応答変数です。
modelspec = 'Smoker ~ Age*Weight*Sex - Age:Weight:Sex';
論理二項モデルを当てはめます。
mdl = fitglm(dsa,modelspec,'Distribution','binomial')
mdl = Generalized linear regression model: logit(Smoker) ~ 1 + Sex*Age + Sex*Weight + Age*Weight Distribution = Binomial Estimated Coefficients: Estimate SE tStat pValue ___________ _________ ________ _______ (Intercept) -6.0492 19.749 -0.3063 0.75938 Sex_Male -2.2859 12.424 -0.18399 0.85402 Age 0.11691 0.50977 0.22934 0.81861 Weight 0.031109 0.15208 0.20455 0.83792 Sex_Male:Age 0.020734 0.20681 0.10025 0.92014 Sex_Male:Weight 0.01216 0.053168 0.22871 0.8191 Age:Weight -0.00071959 0.0038964 -0.18468 0.85348 100 observations, 93 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 5.07, p-value = 0.535
すべての p 値 (pValue
の) は大きな値です。つまり、有意な係数はありません。モデルのテストに対する大きい 値 0.535 は、このモデルが定数モデルとは統計的に異なっていない可能性があることを示しています。
ポアソン応答の GLM
20 個の予測子で標本データを作成し、そのうちの 3 つのみの予測子と 1 つの定数を使ってポアソン応答を作成します。
rng('default') % for reproducibility X = randn(100,7); mu = exp(X(:,[1 3 6])*[.4;.2;.3] + 1); y = poissrnd(mu);
ポアソン分布を使用して一般化線形モデルを当てはめます。
mdl = fitglm(X,y,'linear','Distribution','poisson')
mdl = Generalized linear regression model: log(y) ~ 1 + x1 + x2 + x3 + x4 + x5 + x6 + x7 Distribution = Poisson Estimated Coefficients: Estimate SE tStat pValue _________ ________ ________ __________ (Intercept) 0.88723 0.070969 12.502 7.3149e-36 x1 0.44413 0.052337 8.4858 2.1416e-17 x2 0.0083388 0.056527 0.14752 0.88272 x3 0.21518 0.063416 3.3932 0.00069087 x4 -0.058386 0.065503 -0.89135 0.37274 x5 -0.060824 0.073441 -0.8282 0.40756 x6 0.34267 0.056778 6.0352 1.5878e-09 x7 0.04316 0.06146 0.70225 0.48252 100 observations, 92 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 119, p-value = 1.55e-22
2.14e-17、0.00069 および 1.58e-09 という p
値は、変数 x1
、x3
および x6
の係数が統計的に有意であることを示します。
入力引数
tbl
— 入力データ
テーブル | データセット配列
予測子変数と応答変数を含む入力データ。テーブルまたはデータセット配列として指定します。予測子変数と応答変数は、数値、logical、categorical、文字または string にすることができます。応答変数のデータ型を数値以外にすることができるのは、'Distribution'
が 'binomial'
である場合だけです。
既定では、
fitglm
は最後の変数を応答変数として、それ以外の変数を予測子変数として取ります。応答変数として異なる列を設定するには、名前と値のペア引数
ResponseVar
を使用します。列のサブセットを予測子として使用するには、名前と値のペア引数
PredictorVars
を使用します。モデル仕様を定義するには、式または項行列を使用して引数
modelspec
を設定します。式または項行列は、予測子または応答変数として使用する列を指定します。
table の変数名は、有効な MATLAB® 識別子である必要はありませんが、先頭または末尾に空白を含んではなりません。名前が有効でない場合、モデルの当てはめや調整の際に式を使用することはできません。以下に例を示します。
式を使用して
modelspec
を指定することはできません。関数
addTerms
または関数removeTerms
をそれぞれ使用するときに、式を使用して追加または削除する項を指定することはできません。名前と値のペアの引数
'Lower'
と'Upper'
を使用して関数step
または関数stepwiseglm
をそれぞれ使用するときに、式を使用してモデルの下限と上限を指定することはできません。
関数 isvarname
を使用して tbl
の変数名を検証できます。変数名が有効でない場合、関数 matlab.lang.makeValidName
を使用してそれらを変換できます。
ResponseVarName
— 応答として使用する変数の名前
string スカラー | 文字ベクトル
応答として使用する変数の名前。string スカラーまたは文字ベクトルとして指定します。ResponseVarName
は、tbl
のどの変数に応答データが格納されているかを示します。ResponseVarName
を指定する場合、入力引数 tbl
も指定しなければなりません。
データ型: char
| string
X
— 予測子変数
行列
n 行 p 列の行列として指定される予測子変数。ここで、n は観測値の数、p は予測子変数の数です。X
の各列が 1 つの変数を表し、各行が 1 つの観測値を表します。
既定では、明示的に削除しない限り、モデルには定数項があるので、1 の列を X
に含めないでください。
データ型: single
| double
y
— 応答変数
ベクトル | 行列
応答変数。ベクトルまたは行列として指定します。
'Distribution'
が'binomial'
ではない場合、y
は、n 行 1 列のベクトルでなければなりません。ここで、n は観測値の数です。y
の各エントリはX
またはtbl
の対応する行に対する応答です。データ型は single または double でなければなりません。'Distribution'
が'binomial'
である場合、y
は n 行 1 列のベクトル、または列 1 にカウントを、列 2 にBinomialSize
をもつ n 行 2 列の行列とすることができます。
データ型: single
| double
| logical
| categorical
modelspec
— モデル仕様
'linear'
(既定値) | モデルを指定する文字ベクトルまたは string スカラー | t 行 (p + 1) 列の項行列 | 'y ~ terms'
という形式の文字ベクトルまたは string スカラー式
モデル仕様。次のいずれかの値を指定します。
モデルを指定する文字ベクトルまたは string スカラー。
値 モデル タイプ 'constant'
モデルは定数 (切片) 項だけを含みます。 'linear'
切片と各予測子の線形項がモデルに含まれます。 'interactions'
切片、各予測子の線形項、および異なる予測子のペアすべての積がモデルに含まれます (二乗項はありません)。 'purequadratic'
切片項と各予測子の線形項および二乗項がモデルに含まれます。 'quadratic'
切片項、各予測子の線形項、二乗項、および異なる予測子のペアすべての積がモデルに含まれます。 'poly
ijk
'モデルは多項式であり、1 番目の予測子における次数 i
までのすべての項、2 番目の予測子における次数j
までのすべての項が含まれます。3 番目以降の項についても同様です。0 ~ 9 の数値を使用して、各予測子の最大次数を指定します。モデルには交互作用項が含まれますが、各交互作用項の次数は、指定された次数の最大値を超えません。たとえば、'poly13'
には、切片、x1、x2、x22、x23、x1*x2 および x1*x22 の各項が含まれます。x1 および x2 はそれぞれ 1 番目および 2 番目の予測子です。モデル内の項を指定する t 行 (p + 1) 列の行列、つまり項の行列。t は項の個数、p は予測子変数の個数であり、+1 は応答変数に相当します。項行列は、予測子の個数が多いときに項をプログラムで生成する場合に便利です。
次の形式の文字ベクトルまたは string スカラー式。
'y ~ terms'
,ここで、
terms
はウィルキンソンの表記法で表されます。式の変数名はtbl
の変数名またはVarnames
によって指定された変数名でなければなりません。また、変数名は有効な MATLAB 識別子でなければなりません。tbl
またはX
の項の順序によって、当てはめたモデルの項の順序が決定されます。そのため、モデルの項の順序は、指定した式での項の順序とは異なる場合があります。
例: 'quadratic'
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: 'Distribution','normal','link','probit','Exclude',[23,59]
は応答の分布が正規であることを指定し、プロビット リンク関数を使用して近似から 23 番目と 59 番目の観測値を除外するよう fitglm
に指示します。
BinomialSize
— 二項分布の試行回数
1 (既定値) | 数値スカラー | 数値ベクトル | 文字ベクトル | string スカラー
二項分布の試行回数、つまり標本サイズ。'BinomialSize'
と tbl
の変数名、数値スカラー、または応答と同じ長さの数値ベクトルで構成されるコンマ区切りのペアとして指定します。これは当てはめた二項分布のための n
パラメーターです。BinomialSize
は、Distribution
パラメーターが 'binomial'
であるときにだけ適用されます。
BinomialSize
がスカラー値の場合は、すべての観測が同じ試行回数であることを意味します。
BinomialSize
の代替法として、列 1 にカウント、列 2 に BinomialSize
をもつ 2 列の行列として応答を指定できます。
データ型: single
| double
| char
| string
B0
— 係数推定値の初期値
数値ベクトル
係数推定値の初期値。数値ベクトルとして指定します。既定値は、入力データから派生する初期の当てはめた値です。
データ型: single
| double
CategoricalVars
— カテゴリカル変数のリスト
string 配列 | 文字ベクトルの cell 配列 | 論理インデックス ベクトルまたは数値インデックス ベクトル
カテゴリカル変数のリスト。'CategoricalVars'
と、テーブルまたはデータセット配列 tbl
内のカテゴリカル変数名が含まれている文字ベクトルの cell 配列または string 配列、またはどの列がカテゴリカルであるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルから構成されるコンマ区切りのペアとして指定します。
データがテーブルまたはデータセット配列
tbl
に格納されている場合の既定では、fitglm
はカテゴリカル値、論理値、文字配列、string 配列、および文字ベクトルの cell 配列をすべてカテゴリカル変数として扱います。データが行列
X
に格納されている場合、'CategoricalVars'
の既定値は空の行列[]
です。つまり、カテゴリカルとして指定しない限り、カテゴリカルになる変数はありません。
たとえば、以下のいずれかを使用して、6 つのうちの 2 番目と 3 番目の変数をカテゴリカルとして指定できます。
例: 'CategoricalVars',[2,3]
例: 'CategoricalVars',logical([0 1 1 0 0 0])
データ型: single
| double
| logical
| string
| cell
DispersionFlag
— 分散パラメーターを計算するインジケーター
false
('binomial'
および 'poisson'
分布の場合) (既定値) | true
'binomial'
および 'poisson'
分布の分散パラメーターを計算するインジケーター。'DispersionFlag'
と以下のいずれかで構成されるコンマ区切りのペアとして指定します。
true | 標準誤差を計算するときに分散パラメーターを推定します。分散パラメーターの推定値は、ピアソン残差の二乗和を誤差の自由度 (DFE) で除算した値です。 |
false | 既定の設定。標準誤差を計算するときに理論値 1 を使用します。 |
近似関数は常に他の分布の分散を予測します。
例: 'DispersionFlag',true
Distribution
— 応答変数の分布
'normal'
(既定値) | 'binomial'
| 'poisson'
| 'gamma'
| 'inverse gaussian'
応答変数の分布。'Distribution'
と以下のいずれかで構成されるコンマ区切りのペアとして指定します。
'normal' | 正規分布 |
'binomial' | 二項分布 |
'poisson' | ポアソン分布 |
'gamma' | ガンマ分布 |
'inverse gaussian' | 逆ガウス分布 |
例: 'Distribution','gamma'
Exclude
— 除外する観測値
論理インデックス ベクトルまたは数値インデックス ベクトル
近似から除外する観測値。'Exclude'
と、近似から除外する観測値を示す論理インデックス ベクトルまたは数値インデックス ベクトルで構成されるコンマ区切りのペアとして指定します。
たとえば、以下のいずれかの例を使用して、6 つの観測値のうち観測値 2 および 3 を除外できます。
例: 'Exclude',[2,3]
例: 'Exclude',logical([0 1 1 0 0 0])
データ型: single
| double
| logical
Intercept
— 定数項のインジケーター
true
(既定値) | false
当てはめにおける定数項 (切片) のインジケーター。'Intercept'
と、モデルに定数項を含める true
またはモデルから定数項を削除する false
で構成されるコンマ区切りのペアとして指定します。
式または行列ではなく文字ベクトルまたは string スカラーを使用してモデルを指定する場合のみ、'Intercept'
を使用します。
例: 'Intercept',false
LikelihoodPenalty
— 尤度推定のペナルティ
"none"
(既定値) | "jeffreys-prior"
尤度推定のペナルティ。"none"
または "jeffreys-prior"
として指定します。
"none"
—fitglm
は尤度推定にペナルティを適用しません。"jeffreys-prior"
—fitglm
はジェフリーズ事前分布を使用して尤度推定にペナルティを課します。
ロジスティック モデルでは、LikelihoodPenalty
を "jeffreys-prior"
に設定することを "Firth 回帰" と呼びます。標本の数が少ない場合や可分データ セットで二項 (ロジスティック) 回帰を実行する場合の係数推定バイアスを減らすには、LikelihoodPenalty
を "jeffreys-prior"
に設定します。
例: LikelihoodPenalty="jeffreys-prior"
データ型: char
| string
Link
— リンク関数
正準リンク関数 (既定値) | スカラー値 | 構造体
正準リンク関数の代わりに使用するリンク関数。'Link'
と以下のいずれかで構成されるコンマ区切りのペアとして指定します。
リンク関数名 | リンク関数 | 平均 (逆) 関数 |
---|---|---|
'identity' | f(μ) = μ | μ = Xb |
'log' | f(μ) = log(μ) | μ = exp(Xb) |
'logit' | f(μ) = log(μ/(1–μ)) | μ = exp(Xb) / (1 + exp(Xb)) |
'probit' | f(μ) = Φ–1(μ)。Φ は標準正規分布の累積分布関数です。 | μ = Φ(Xb) |
'comploglog' | f(μ) = log(–log(1 – μ)) | μ = 1 – exp(–exp(Xb)) |
'reciprocal' | f(μ) = 1/μ | μ = 1/(Xb) |
p (数値) | f(μ) = μp | μ = Xb1/p |
3 つのフィールドをもつ
| f(μ) = S.Link (μ) | μ = S.Inverse (Xb) |
リンク関数は、平均応答 μ と、予測子の線形結合 X*b の関係である f(μ) = X*b を定義します。
正準リンク関数の詳細については、正準リンク関数を参照してください。
例: 'Link','probit'
データ型: char
| string
| single
| double
| struct
Options
— 最適化オプション
statset('fitglm
')
(既定値) | 構造体
fitglm
')最適化オプション。構造体を指定します。この引数は、fitglm
が使用する反復アルゴリズムの制御パラメーターを決定します。
'Options'
の値を作成するには、関数 statset
を使用するか、次の表に記載されているフィールドと値が含まれている構造体配列を作成します。
フィールド名 | 値 | 既定値 |
---|---|---|
Display | アルゴリズムで表示される情報量
| 'off' |
MaxIter | 許容される最大反復回数。正の整数として指定 | 100 |
TolX | パラメーターの終了許容誤差。正のスカラーとして指定 | 1e-6 |
コマンド ウィンドウで「statset('
」と入力して、fitglm
')fitglm
が名前と値の引数 'Options'
で受け入れるフィールドの名前と既定値を表示することもできます。
例: 'Options',statset('Display','final','MaxIter',1000)
は、反復アルゴリズムの結果の最終情報を表示し、許容される最大反復回数を 1000 に変更するよう指定します。
データ型: struct
Offset
— オフセット変数
[ ] (既定値) | 数値ベクトル | 文字ベクトル | string スカラー
近似のオフセット変数。'Offset'
と、tbl
に含まれる変数名または応答と同じ長さの数値ベクトルで構成されるコンマ区切りのペアとして指定します。
fitglm
は、係数値を 1 で固定した追加の予測子として Offset
を使用します。つまり、当てはめの式は次のようになります。
f(μ) = Offset + X*b
,
ここで、f はリンク関数、μ は平均応答、X*b は予測子 X の線形結合です。予測子 Offset
の係数は 1
です。
たとえば、ポアソン回帰モデルを検討してください。カウントの数が理論上の理由により予測子 A
に対して比例していることがわかっていると仮定します。log リンク関数を使用し、オフセットに log(A)
を指定することにより、この理論上の制約を満たすことをモデルに強制できます。
データ型: single
| double
| char
| string
PredictorVars
— 予測子変数
string 配列 | 文字ベクトルの cell 配列 | 論理インデックス ベクトルまたは数値インデックス ベクトル
当てはめで使用する予測子変数。'PredictorVars'
と、テーブルまたはデータセット配列 tbl
に格納されている変数の名前を表す文字ベクトルの cell 配列または string 配列、またはどの列が予測子変数であるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルから構成されるコンマ区切りのペアとして指定します。
string 値または文字ベクトルは、tbl
に含まれている名前、または名前と値のペアの引数 'VarNames'
を使用して指定した名前でなければなりません。
既定の設定は、X
内のすべての変数、または ResponseVar
を除く、tbl
内のすべての変数です。
たとえば、以下のいずれかの例を使用して、2 番目と 3 番目の変数を予測子変数として指定できます。
例: 'PredictorVars',[2,3]
例: 'PredictorVars',logical([0 1 1 0 0 0])
データ型: single
| double
| logical
| string
| cell
ResponseVar
— 応答変数
tbl
の最後の列 (既定値) | 変数名が格納されている文字ベクトルまたは string スカラー | 論理インデックス ベクトルまたは数値インデックス ベクトル
当てはめで使用する応答変数。'ResponseVar'
と、テーブルまたはデータセット配列 tbl
内の変数名が格納されている文字ベクトルまたは string スカラー、またはどの列が応答変数であるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルから構成されるコンマ区切りのペアとして指定します。通常、テーブルまたはデータセット配列 tbl
を当てはめる場合に 'ResponseVar'
を使用する必要があります。
たとえば、以下のいずれかの方法を使用して、6 つの変数のうち 4 番目の変数、つまり yield
を応答変数として指定できます。
例: 'ResponseVar','yield'
例: 'ResponseVar',[4]
例: 'ResponseVar',logical([0 0 0 1 0 0])
データ型: single
| double
| logical
| char
| string
VarNames
— 変数の名前
{'x1','x2',...,'xn','y'}
(既定値) | string 配列 | 文字ベクトルの cell 配列
変数の名前。'VarNames'
と、X
の列名が最初に、応答変数 y
の名前が最後に含まれている文字ベクトルの cell 配列または string 配列から構成されるコンマ区切りのペアとして指定します。
テーブルまたはデータセット配列の変数には既に名前が設定されているため、'VarNames'
はこれらの配列には適用されません。
変数名は、有効な MATLAB 識別子である必要はありませんが、先頭または末尾に空白を含んではなりません。名前が有効でない場合、モデルの当てはめや調整の際に式を使用することはできません。以下に例を示します。
関数
addTerms
または関数removeTerms
をそれぞれ使用するときに、式を使用して追加または削除する項を指定することはできません。名前と値のペアの引数
'Lower'
と'Upper'
を使用して関数step
または関数stepwiseglm
をそれぞれ使用するときに、式を使用してモデルの下限と上限を指定することはできません。
'VarNames',varNames
を指定する前に、関数 isvarname
を使用して varNames
の変数名を検証できます。変数名が有効でない場合、関数 matlab.lang.makeValidName
を使用してそれらを変換できます。
例: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}
データ型: string
| cell
Weights
— 観測値の重み
ones(n,1)
(既定値) | 非負のスカラー値の n 行 1 列のベクトル
観測値の重み。'Weights'
と、非負のスカラー値の n 行 1 列のベクトル (n は観測値の数) で構成されるコンマ区切りのペアとして指定します。
データ型: single
| double
出力引数
mdl
— 一般化線形回帰モデル
GeneralizedLinearModel
オブジェクト
一般化線形回帰モデル。fitglm
または stepwiseglm
を使用して作成した GeneralizedLinearModel
オブジェクトとして指定します。
詳細
項の行列
項行列 T
は、モデル内の項を指定する t 行 (p + 1) 列の行列です。t は項の数、p は予測子変数の数であり、+1 は応答変数に相当します。T(i,j)
の値は、項 i
の変数 j
の指数です。
たとえば、3つの予測子変数 x1
、x2
、x3
と応答変数 y
が x1
、x2
、x3
、y
という順序で入力に含まれていると仮定します。T
の各行は 1 つの項を表します。
[0 0 0 0]
— 定数項 (切片)[0 1 0 0]
—x2
(x1^0 * x2^1 * x3^0
と等価)[1 0 1 0]
—x1*x3
[2 0 0 0]
—x1^2
[0 1 2 0]
—x2*(x3^2)
各項の最後の 0
は、応答変数を表します。一般に、項行列内のゼロの列ベクトルは、応答変数の位置を表します。行列と列ベクトルに予測子と応答変数がある場合、各行の最後の列に応答変数を示す 0
を含めなければなりません。
式
モデル仕様の式は '
という形式の文字ベクトルまたは string スカラーです。y
~ terms
'
y
は応答名です。terms
は、ウィルキンソンの表記法を使用してモデル内の予測子の項を表します。
予測子と応答変数を表現するには、table 入力 tbl
の変数名、または VarNames
を使用して指定された変数名を使用します。VarNames
の既定値は {'x1','x2',...,'xn','y'}
です。
以下に例を示します。
'y ~ x1 + x2 + x3'
は、切片がある 3 変数の線形モデルを指定します。'y ~ x1 + x2 + x3 – 1'
は、切片がない 3 変数の線形モデルを指定します。既定では式に定数 (切片) 項が含まれることに注意してください。モデルから定数項を除外するには、–1
を式に含めなければなりません。
–1
を使用して項を明示的に削除しない限り、式は定数項を含みます。
ウィルキンソンの表記法
ウィルキンソンの表記法は、モデルに存在する項を記述します。この表記法は、モデルに存在する項に関係するものであり、それらの項の乗数 (係数) に関係するものではありません。
ウィルキンソンの表記法では、以下の記号を使用します。
+
は、次の変数を含むことを意味します。–
は、次の変数を含まないことを意味します。:
は、項の積である交互作用を定義します。*
は、交互作用と、より低い次数の項すべてを定義します。^
は、*
を繰り返した場合とまったく同じ方法で予測子をべき乗にします。このため、^
には、より低い次数の項も含まれます。()
は、項をグループ化します。
次の表に、ウィルキンソンの表記法の代表的な例を示します。
ウィルキンソンの表記法 | 標準表記の項 |
---|---|
1 | 定数 (切片) 項 |
x1^k 、k は正の整数 | x1 , x12 , ..., x1k |
x1 + x2 | x1 , x2 |
x1*x2 | x1 , x2 , x1*x2 |
x1:x2 | x1*x2 のみ |
–x2 | x2 は含めない |
x1*x2 + x3 | x1 , x2 , x3 , x1*x2 |
x1 + x2 + x3 + x1:x2 | x1 , x2 , x3 , x1*x2 |
x1*x2*x3 – x1:x2:x3 | x1 , x2 , x3 , x1*x2 , x1*x3 , x2*x3 |
x1*(x2 + x3) | x1 , x2 , x3 , x1*x2 , x1*x3 |
詳細は、ウィルキンソンの表記法を参照してください。
正準リンク関数
一般化線形モデルの既定のリンク関数は、"正準リンク関数" です。
分布 | 正準リンク関数名 | リンク関数 | 平均 (逆) 関数 |
---|---|---|---|
'normal' | 'identity' | f(μ) = μ | μ = Xb |
'binomial' | 'logit' | f(μ) = log(μ/(1 – μ)) | μ = exp(Xb) / (1 + exp(Xb)) |
'poisson' | 'log' | f(μ) = log(μ) | μ = exp(Xb) |
'gamma' | -1 | f(μ) = 1/μ | μ = 1/(Xb) |
'inverse gaussian' | -2 | f(μ) = 1/μ2 | μ = (Xb)–1/2 |
ヒント
正則化された線形モデル
mdl
は、別途Distribution
名前と値のペアで指定しない限り、標準線形モデルです。plotResiduals
またはdevianceTest
などのメソッドや、GeneralizedLinearModel
オブジェクトのプロパティについては、GeneralizedLinearModel
を参照してください。モデルに学習をさせた後で、新しいデータについて応答を予測する C/C++ コードを生成できます。C/C++ コードの生成には MATLAB Coder™ が必要です。詳細については、コード生成の紹介を参照してください。
アルゴリズム
fitglm
では、カテゴリカル予測子が次のように扱われます。L 個の水準 (カテゴリ) があるカテゴリカル予測子をもつモデルには、L – 1 個の指標変数が含まれています。1 番目のカテゴリが基準水準として使用されるので、基準水準に対する指標変数はモデルに含まれません。カテゴリカル予測子のデータ型が
categorical
である場合、categories
を使用してカテゴリの順序をチェックし、reordercats
を使用してカテゴリを並べ替えることにより、基準水準をカスタマイズできます。指標変数の作成の詳細については、ダミー変数の自動作成を参照してください。fitglm
は、L – 1 個の指標変数のグループを単一の変数として扱います。指標変数を個別の予測子変数として扱うには、dummyvar
を使用して指標変数を手動で作成します。そして、モデルを当てはめるときに、カテゴリカル変数の基準水準に対応するものを除く指標変数を使用します。カテゴリカル予測子X
についてdummyvar(X)
のすべての列と切片項を予測子として指定した場合、計画行列はランク落ちとなります。L 個の水準をもつカテゴリカル予測子と連続予測子の間の交互作用項は、L – 1 個の指標変数と連続予測子の要素単位の積から構成されます。
L 個の水準をもつカテゴリカル予測子と M 個の水準をもつカテゴリカル予測子の間の交互作用項は、2 つのカテゴリカル予測子の水準について可能なすべての組み合わせを含めるため、(L – 1)*(M – 1) 個の指標変数から構成されます。
指標の二乗はそれ自体に等しいので、より次数が高い項をカテゴリカル予測子に対して指定することはできません。
fitglm
は、tbl
、X
およびY
に含まれているNaN
、''
(空の文字ベクトル)、""
(空の string)、<missing>
、および<undefined>
値を欠損値と見なします。fitglm
は、欠損値がある観測値を当てはめで使用しません。当てはめたモデルのObservationInfo
プロパティは、fitglm
が各観測値を当てはめで使用したかどうかを示します。
代替機能
モデル仕様を自動的に選択するには、
stepwiseglm
を使用します。step
、addTerms
またはremoveTerms
を使用して当てはめたモデルを調整します。
参照
[1] Collett, D. Modeling Binary Data. New York: Chapman & Hall, 2002.
[2] Dobson, A. J. An Introduction to Generalized Linear Models. New York: Chapman & Hall, 1990.
[3] McCullagh, P., and J. A. Nelder. Generalized Linear Models. New York: Chapman & Hall, 1990.
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は、メモリ超過のデータに対し tall 配列をサポートしますが、いくつかの制限があります。
fitglm
に対する入力引数のいずれかが tall 配列である場合、他の入力もすべて tall 配列でなければなりません。これには、名前と値のペア'Weights'
、'Exclude'
、'Offset'
および'BinomialSize'
で指定する空でない変数も含まれます。名前と値の引数
LikelihoodPenalty
は指定できません。既定の反復回数は 5 です。反復回数は、名前と値のペア
'Options'
を使用してオプション構造体で渡すことにより変更できます。statset
を使用してオプション構造体を作成し、MaxIter
に対して異なる値を指定します。tall データの場合、
fitglm
はGeneralizedLinearModel
オブジェクトと同じプロパティのほとんどが含まれているCompactGeneralizedLinearModel
オブジェクトを返します。主な違いは、コンパクトなオブジェクトがメモリ要件の影響を受けやすいということです。コンパクトなオブジェクトは、データ、またはデータと同じサイズの配列を含むプロパティを含みません。コンパクトなオブジェクトには、以下のGeneralizedLinearModel
のプロパティは格納されません。Diagnostics
Fitted
Offset
ObservationInfo
ObservationNames
Residuals
Steps
Variables
次を使用して
GLM = fitglm(X,Y)
によって返されるコンパクトなオブジェクトから残差を直接計算できます。RES = Y - predict(GLM,X); S = sqrt(GLM.SSE/GLM.DFE); histogram(RES,linspace(-3*S,3*S,51))
詳細は、メモリに収まらないデータの tall 配列を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2013b で導入R2024a: ペナルティ付きの尤度推定の指定
fitglm
で、ジェフリーズ事前分布によるペナルティ付きの尤度推定がサポートされるようになりました。ジェフリーズ事前分布を使用して、可分データ セットや少数の標本に一般化線形回帰モデルを当てはめるときの係数推定バイアスを減らすことができます。尤度推定にペナルティを課すには、名前と値の引数 LikelihoodPenalty
を "jeffreys-prior"
に設定します。
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)