fitglm
일반화 선형 회귀 모델 생성
구문
설명
은 응답 변수 데이터를 포함할 테이블 변수를 지정합니다.mdl
= fitglm(tbl
,ResponseVarName
)
는 하나 이상의 mdl
= fitglm(___,Name,Value
)Name,Value
쌍 인수를 추가 옵션으로 지정하여 일반화 선형 회귀 모델을 반환합니다.
예를 들어, 사용자는 어떤 변수가 범주형 변수인지와 응답 변수의 분포, 사용할 연결 함수를 지정할 수 있습니다.
예제
로지스틱 회귀 모델 피팅하기
흡연 확률의 로지스틱 이항 모델을 이원 상호 작용 모델을 사용하여 연령, 체중 및 성별의 함수로 만듭니다.
hospital
dataset형 배열을 불러옵니다.
load hospital
dsa = hospital;
연령, 체중 및 성별 변수 간에 최대 이원 상호 작용을 허용하는 공식을 사용하여 모델을 지정합니다. 흡연자는 응답 변수입니다.
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
p
-값 2.14e-17, 0.00069, 1.58e-09는 변수 x1
, x3
, x6
의 계수가 통계적으로 유의함을 나타냅니다.
입력 인수
tbl
— 입력 데이터
table형 | dataset형 배열
예측 변수와 응답 변수를 포함하는 입력 데이터로, 테이블 또는 dataset형 배열로 지정됩니다. 예측 변수와 응답 변수는 숫자형, 논리형, categorical형, 문자 또는 string형일 수 있습니다. 응답 변수는 'Distribution'
이 'binomial'
인 경우에만 숫자형 이외의 데이터형을 가질 수 있습니다.
기본적으로,
fitglm
함수는 마지막 변수를 응답 변수로 받고, 나머지 변수를 예측 변수로 받습니다.다른 열을 응답 변수로 설정하려면
ResponseVar
이름-값 쌍의 인수를 사용하십시오.열 중 일부를 예측 변수로 사용하려면
PredictorVars
이름-값 쌍의 인수를 사용하십시오.모델 사양을 정의하려면 식이나 항 행렬을 사용하여
modelspec
인수를 설정하십시오. 이 식이나 항 행렬이 예측 변수, 응답 변수로 사용할 열을 지정합니다.
테이블의 변수 이름은 유효한 MATLAB® 식별자일 필요는 없지만, 선행 공백이나 후행 공백을 포함해서는 안 됩니다. 이름이 유효하지 않으면 모델을 피팅하거나 조정할 때 식을 사용할 수 없습니다. 예를 들면 다음과 같은 상황에서 식을 사용할 수 없습니다.
식을 사용하여
modelspec
을 지정할 수 없습니다.addTerms
함수 또는removeTerms
함수를 사용할 때 추가하거나 제거할 항을 지정하기 위해 식을 사용할 수 없습니다.step
함수 또는stepwiseglm
함수 각각을 이름-값 쌍 인수'Lower'
및'Upper'
와 함께 사용할 때 모델의 하한과 상한을 지정하기 위해 식을 사용할 수 없습니다.
isvarname
함수를 사용하여 tbl
에 포함된 변수 이름을 확인할 수 있습니다. 변수 이름이 유효하지 않으면 matlab.lang.makeValidName
함수를 사용하여 변수 이름을 변환할 수 있습니다.
ResponseVarName
— 응답 변수로 사용할 변수 이름
string형 스칼라 | 문자형 벡터
응답 변수로 사용할 변수 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다. ResponseVarName
은 응답 데이터를 포함하는 tbl
의 변수를 나타냅니다. ResponseVarName
을 지정하는 경우 tbl
입력 인수도 지정해야 합니다.
데이터형: char
| string
X
— 예측 변수
행렬
예측 변수로, n×p 행렬로 지정됩니다. 여기서 n은 관측값 개수이고 p는 예측 변수 개수입니다. X
의 각 열은 하나의 변수를 나타내고, 각 행은 하나의 관측값을 나타냅니다.
기본적으로, 명시적으로 제거하지 않는 한 모델에 상수항이 있으므로 X
에 1로 구성된 열을 포함시키지 마십시오.
데이터형: 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
'모델이 첫 번째 예측 변수에 차수 i
까지의 모든 항을 포함하고 두 번째 예측 변수에 차수j
까지의 모든 항을 포함하는 식으로 진행되는 다항식입니다. 숫자 0부터 9까지를 사용하여 각 예측 변수에 대해 최대 차수를 지정합니다. 모델에 상호 작용 항이 있지만 각 상호 작용 항의 차수가 지정된 차수의 최댓값을 초과하지 않습니다. 예를 들어,'poly13'
에는 절편 항과 x1, x2, x22, x23, x1*x2, x1*x22 항이 있으며, 여기서 x1과 x2는 각각 첫 번째 예측 변수, 두 번째 예측 변수입니다.모델의 항을 지정하는 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]
는 응답 변수의 분포가 정규분포임을 지정하고 fitglm
에 프로빗 연결 함수를 사용하고 피팅에서 23번째 및 59번째 관측값을 제외하도록 지시합니다.
BinomialSize
— 이항분포에 사용할 시행 횟수
1 (디폴트 값) | 숫자형 스칼라 | 숫자형 벡터 | 문자형 벡터 | string형 스칼라
이항분포, 즉 표본 크기에 대한 시행 횟수로, 'BinomialSize'
, tbl
의 변수 이름, 숫자형 스칼라 또는 응답 변수와 길이가 같은 숫자형 벡터가 쉼표로 구분되어 지정됩니다. 이는 피팅된 이항분포에 대한 모수 n
입니다. BinomialSize
는 Distribution
파라미터가 'binomial'
인 경우에만 적용됩니다.
BinomialSize
가 스칼라 값이면 모든 관측값의 시행 횟수가 동일함을 의미합니다.
BinomialSize
에 대한 대안으로 응답 변수를 1열에 도수가 있고 2열에 BinomialSize
가 있는 2열 행렬로 지정할 수 있습니다.
데이터형: single
| double
| char
| string
B0
— 계수 추정값의 초기값
숫자형 벡터
계수 추정값의 초기값으로, 숫자형 벡터로 지정됩니다. 디폴트 값은 입력 데이터에서 파생된 초기 피팅 값입니다.
데이터형: single
| double
CategoricalVars
— 범주형 변수 목록
string형 배열 | 문자형 벡터로 구성된 셀형 배열 | 논리형 또는 숫자형 인덱스 벡터
범주형 변수 목록으로, 'CategoricalVars'
와 함께 테이블 또는 dataset형 배열 tbl
의 범주형 변수 이름을 포함하는 string형 배열이나 문자형 벡터로 구성된 셀형 배열, 또는 어떤 열이 범주형인지를 나타내는 논리형 또는 숫자형 인덱스 벡터가 쉼표로 구분되어 지정됩니다.
데이터가 테이블 또는 dataset형 배열
tbl
에 포함된 경우, 기본적으로fitglm
함수는 모든 범주형 값, 논리값, 문자형 배열, string형 배열, 문자형 벡터로 구성된 셀형 배열을 범주형 변수로 처리합니다.데이터가 행렬
X
에 포함된 경우,'CategoricalVars'
의 디폴트 값은 빈 행렬[]
입니다. 즉, 범주형 변수로 직접 지정하지 않는 한 어떠한 변수도 범주형 변수가 아닙니다.
예를 들어, 다음 중 하나를 사용하여 6개 변수 중 두 번째 변수와 세 번째 변수를 범주형으로 지정할 수 있습니다.
예: 'CategoricalVars',[2,3]
예: 'CategoricalVars',logical([0 1 1 0 0 0])
데이터형: single
| double
| logical
| string
| cell
DispersionFlag
— 산포 모수를 계산하기 위한 표시자
'binomial'
분포와 'poisson'
분포의 경우 false
(디폴트 값) | 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
함수는 가능도 추정값에 벌점을 적용하기 전에 Jeffreys를 사용합니다.
로지스틱 모델의 경우 LikelihoodPenalty
를 "jeffreys-prior"
로 설정하는 것을 퍼스의 회귀(Firth's regression)라고 합니다. 표본이 적거나 별도의 데이터 세트에서 이항 (로지스틱) 회귀를 실행하는 경우 계수 추정값 편향을 줄이려면 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 |
| f(μ) = S.Link (μ) | μ = S.Inverse (Xb) |
연결 함수는 평균 응답 변수 μ와 예측 변수의 선형 결합 X*b 간의 관계 f(μ) = X*b를 정의합니다.
정준 연결 함수에 대한 자세한 내용은 정준 연결 함수 항목을 참조하십시오.
예: 'Link','probit'
데이터형: char
| string
| single
| double
| struct
Options
— 최적화 옵션
statset('fitglm
')
(디폴트 값) | 구조체
fitglm
')최적화 옵션으로, 구조체로 지정됩니다. 이 인수는 fitglm
함수가 사용하는 반복 알고리즘에 대한 제어 파라미터를 지정합니다.
함수 statset
을 사용하거나 다음 표에서 설명하는 필드 및 값을 포함하는 구조체형 배열을 만들어서 'Options'
값을 만듭니다.
필드 이름 | 값 | 디폴트 값 |
---|---|---|
Display | 알고리즘이 표시하는 정보의 양
| 'off' |
MaxIter | 허용되는 최대 반복 횟수로, 양의 정수로 지정됩니다. | 100 |
TolX | 모수에 대한 종료 허용오차로, 양의 스칼라로 지정됩니다. | 1e-6 |
명령 창에 statset('
을 입력하여 fitglm
')fitglm
함수가 'Options'
이름-값 인수로 받는 필드의 이름과 디폴트 값을 확인할 수도 있습니다.
예: 'Options',statset('Display','final','MaxIter',1000)
은 반복 알고리즘 결과의 최종 정보를 표시하고 허용되는 최대 반복 횟수를 1000으로 변경하도록 지정합니다.
데이터형: struct
Offset
— 오프셋 변수
[ ] (디폴트 값) | 숫자형 벡터 | 문자형 벡터 | string형 스칼라
피팅의 오프셋 변수로, 'Offset'
과 tbl
의 변수 이름이 쉼표로 구분되어 지정되거나 응답 변수와 길이가 같은 숫자형 벡터로 지정됩니다.
fitglm
함수는 Offset
을 계수 값이 1로 고정된 추가 예측 변수로 사용합니다. 즉, 피팅 수식은 다음과 같습니다.
f(μ) = Offset + X*b
,
여기서 f는 연결 함수이고, μ는 평균 응답 변수이고, X*b는 예측 변수 X의 선형 결합입니다. Offset
예측 변수의 계수는 1
입니다.
예를 들어, 푸아송 회귀 모델이 있다고 가정하겠습니다. 예측 변수 A
에 비례하는 이론적 이유로 횟수의 개수가 알려져 있다고 가정하겠습니다. 로그 연결 함수를 사용하고 log(A)
를 오프셋으로 지정하면 모델이 이론상의 제약 조건을 만족하도록 강제할 수 있습니다.
데이터형: single
| double
| char
| string
PredictorVars
— 예측 변수
string형 배열 | 문자형 벡터로 구성된 셀형 배열 | 논리형 또는 숫자형 인덱스 벡터
피팅에 사용할 예측 변수로, 'PredictorVars'
와 함께 테이블 또는 dataset형 배열 tbl
의 변수 이름에 대한 string형 배열이나 문자형 벡터로 구성된 셀형 배열 또는 예측 변수 열을 나타내는 논리형 또는 숫자형 인덱스 벡터가 쉼표로 구분되어 지정됩니다.
string형 값 또는 문자형 벡터는 tbl
에 포함된 이름이거나 'VarNames'
이름-값 쌍의 인수를 사용하여 지정하는 이름이어야 합니다.
디폴트 값은 X
에 포함된 모든 변수 또는 tbl
에 포함된 모든 변수입니다. 단, ResponseVar
는 예외입니다.
예를 들어, 다음 예 중 하나를 사용하여 두 번째 변수와 세 번째 변수를 예측 변수로 지정할 수 있습니다.
예: 'PredictorVars',[2,3]
예: 'PredictorVars',logical([0 1 1 0 0 0])
데이터형: single
| double
| logical
| string
| cell
ResponseVar
— 응답 변수
tbl
의 마지막 열 (디폴트 값) | 변수 이름을 포함하는 문자형 벡터 또는 string형 스칼라 | 논리형 또는 숫자형 인덱스 벡터
피팅에 사용할 응답 변수로, 'ResponseVar'
와 함께 테이블 또는 dataset형 배열 tbl
의 변수 이름을 포함하는 문자형 벡터나 string형 스칼라 또는 응답 변수 열을 나타내는 논리형 또는 숫자형 인덱스 벡터가 쉼표로 구분되어 지정됩니다. 일반적으로 테이블 또는 dataset형 배열 tbl
을 피팅할 때는 'ResponseVar'
를 사용해야 합니다.
예를 들어, 다음과 방법 중 하나로 네 번째 변수, 이를 테면 yield
를 6개 변수 중 응답 변수로 지정할 수 있습니다.
예: 'ResponseVar','yield'
예: 'ResponseVar',[4]
예: 'ResponseVar',logical([0 0 0 1 0 0])
데이터형: single
| double
| logical
| char
| string
VarNames
— 변수의 이름
{'x1','x2',...,'xn','y'}
(디폴트 값) | string형 배열 | 문자형 벡터로 구성된 셀형 배열
변수 이름으로, 'VarNames'
와 함께 X
의 열에 대한 이름을 첫 번째로 포함하고 응답 변수 y
의 이름을 마지막으로 포함하는 string형 배열 또는 문자형 벡터로 구성된 셀형 배열이 쉼표로 구분되어 지정됩니다.
'VarNames'
는 테이블 또는 dataset형 배열의 변수에 적용되지 않습니다. 이러한 변수는 이미 이름을 갖고 있기 때문입니다.
변수 이름은 유효한 MATLAB 식별자일 필요는 없지만, 선행 공백이나 후행 공백을 포함해서는 안 됩니다. 이름이 유효하지 않으면 모델을 피팅하거나 조정할 때 식을 사용할 수 없습니다. 예를 들면 다음과 같은 상황에서 식을 사용할 수 없습니다.
addTerms
함수 또는removeTerms
함수를 사용할 때 추가하거나 제거할 항을 지정하기 위해 식을 사용할 수 없습니다.step
함수 또는stepwiseglm
함수 각각을 이름-값 쌍 인수'Lower'
및'Upper'
와 함께 사용할 때 모델의 하한과 상한을 지정하기 위해 식을 사용할 수 없습니다.
'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
의 각 행은 하나의 항을 나타냅니다.
[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으로 구성된 열 벡터는 응답 변수의 위치를 나타냅니다. 행렬과 열 벡터로 예측 변수와 응답 변수를 지정하는 경우 각 행의 마지막 열에 응답 변수를 나타내는 0
을 포함시켜야 합니다.
공식
모델 사양의 식은 다음 형식의 문자형 벡터 또는 string형 스칼라입니다. '
y
~ terms
'
y
는 응답 변수 이름입니다.terms
는 윌킨슨 표기법을 사용하여 모델의 예측 변수 항을 표현합니다.
예측 변수와 응답 변수를 표현하려면, 테이블 입력값 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 |
자세한 내용은 Wilkinson Notation 항목을 참조하십시오.
정준 연결 함수
일반화 선형 모델의 디폴트 연결 함수는 정준 연결 함수입니다.
분포 | 정준 연결 함수 이름 | 연결 함수 | 평균 함수(역함수) |
---|---|---|---|
'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™가 필요합니다. 자세한 내용은 Introduction to Code Generation 항목을 참조하십시오.
알고리즘
fitglm
함수는 범주형 예측 변수를 다음과 같이 처리합니다.수준(범주)이 L개인 범주형 예측 변수를 갖는 모델은 L – 1개의 표시 변수를 갖습니다. 이 모델은 첫 번째 범주를 기준 레벨로 사용하므로 기준 레벨에 대한 표시 변수는 포함하지 않습니다. 범주형 예측 변수의 데이터형이
categorical
인 경우categories
를 사용하여 범주 순서를 확인하고reordercats
를 사용하여 범주를 다시 정렬하여 기준 레벨을 사용자 지정할 수 있습니다. 표시 변수 생성에 대한 자세한 내용은 Automatic Creation of Dummy Variables 항목을 참조하십시오.fitglm
함수는 L – 1개의 표시 변수 그룹을 단일 변수로 처리합니다. 표시 변수를 고유한 예측 변수로 처리하려면dummyvar
을 사용하여 표시 변수를 수동으로 만드십시오. 그런 다음 모델을 피팅할 때 범주형 변수의 기준 레벨에 해당하는 변수를 제외한 표시 변수를 사용하십시오. 범주형 예측 변수X
의 경우,dummyvar(X)
의 모든 열과 절편 항을 예측 변수로 지정하면 설계 행렬은 랭크 부족이 됩니다.연속형 예측 변수와 수준이 L개인 범주형 예측 변수 사이의 상호 작용 항은 L – 1개의 표시 변수와 연속형 예측 변수의 요소별 곱으로 구성됩니다.
수준이 L개인 범주형 예측 변수와 수준이 M개인 범주형 예측 변수의 두 범주형 예측 변수 사이의 상호 작용 항은 (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'
이름-값 쌍을 사용하여 options 구조체에 전달할 반복 횟수를 변경할 수 있습니다.MaxIter
에 다른 값을 지정하려면statset
을 사용하여 options 구조체를 만듭니다.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
함수는 이제 Jeffreys prior로 벌점이 적용된 가능도 추정값을 지원합니다. 일반화 선형 회귀 모델을 분리 가능한 데이터 세트 또는 적은 수의 표본에 피팅하는 경우 Jeffreys prior를 사용하여 계수 추정값 편향을 줄일 수 있습니다. 가능도 추정값에 벌점을 적용하려면 LikelihoodPenalty
이름-값 인수를 "jeffreys-prior"
로 설정하십시오.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 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)