이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

fitlm

선형 회귀 모델 생성

fitlmLinearModel 객체를 생성합니다. 객체를 만들면 작업 공간에 해당 객체가 표시됩니다. 객체를 클릭하면 객체가 포함하는 모든 속성을 확인할 수 있습니다. 플롯을 생성하고 plot, plotResiduals, plotDiagnostics와 같은 메서드를 사용하여 추가 진단 분석을 수행할 수 있습니다. LinearModel에 대한 전체 메서드 목록은 메서드를 참조하십시오.

구문

mdl = fitlm(tbl)
mdl = fitlm(tbl,modelspec)
mdl = fitlm(X,y)
mdl = fitlm(X,y,modelspec)
mdl = fitlm(___,Name,Value)

설명

예제

mdl = fitlm(tbl)은 table형 배열 또는 dataset형 배열 tbl의 변수에 피팅된 선형 모델을 반환합니다. 기본적으로, fitlm은 마지막 변수를 응답 변수로 받습니다.

예제

mdl = fitlm(tbl,modelspec)은 table형 배열 또는 dataset형 배열 tbl의 변수에 피팅된, modelspec에 지정하는 유형의 선형 모델을 반환합니다.

예제

mdl = fitlm(X,y)는 데이터 행렬 X에 피팅된 응답 변수 y의 선형 모델을 반환합니다.

예제

mdl = fitlm(X,y,modelspec)은 데이터 행렬 X에 피팅된, 응답 변수 y에 대해 modelspec에 지정하는 유형의 선형 모델을 반환합니다.

예제

mdl = fitlm(___,Name,Value)는 하나 이상의 Name,Value 쌍 인수로 지정된 추가 옵션을 사용하여 선형 모델을 반환합니다.

예를 들어, 사용자는 어떤 변수가 범주형 변수인지 지정하거나, 로버스트 회귀를 수행하거나, 관측값 가중치를 사용할 수 있습니다.

예제

모두 축소

표본 데이터를 불러옵니다.

load carsmall

테이블에 변수를 저장합니다.

tbl = table(Weight,Acceleration,MPG,'VariableNames',{'Weight','Acceleration','MPG'});

테이블에서 처음 5개 행을 표시합니다.

tbl(1:5,:)
ans=5×3 table
    Weight    Acceleration    MPG
    ______    ____________    ___

     3504           12        18 
     3693         11.5        15 
     3436           11        18 
     3433           12        16 
     3449         10.5        17 

갤런당 마일 주행거리(MPG)에 대해 선형 회귀 모델을 피팅합니다.

lm = fitlm(tbl,'MPG~Weight+Acceleration')
lm = 
Linear regression model:
    MPG ~ 1 + Weight + Acceleration

Estimated Coefficients:
                     Estimate         SE         tStat       pValue  
                    __________    __________    _______    __________

    (Intercept)         45.155        3.4659     13.028    1.6266e-22
    Weight          -0.0082475    0.00059836    -13.783    5.3165e-24
    Acceleration       0.19694       0.14743     1.3359       0.18493


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 4.12
R-squared: 0.743,  Adjusted R-Squared 0.738
F-statistic vs. constant model: 132, p-value = 1.38e-27

이 구문은 윌킨슨(Wilkinson) 표기법을 사용하여 modelspec을 지정합니다.

이 예제의 모델 'MPG~Weight+Acceleration'modelspec으로 'linear'를 사용하는 모델을 피팅하는 것과 동일합니다. 예를 들면 다음과 같습니다.

lm2 = fitlm(tbl,'linear');

modelspec으로 문자형 벡터를 사용하고 응답 변수를 지정하지 않는 경우 fitlm은 기본적으로 tbl의 마지막 변수를 응답 변수로 받고 나머지 변수를 예측 변수로 받습니다.

윌킨슨(Wilkinson) 표기법으로 지정된 모델식을 사용하여 선형 회귀 모델을 피팅합니다.

표본 데이터를 불러옵니다.

load carsmall

테이블에 변수를 저장합니다.

tbl = table(Weight,Acceleration,Model_Year,MPG,'VariableNames',{'Weight','Acceleration','Model_Year','MPG'});

가중치와 가속도를 예측 변수로 사용하여 갤런당 마일 주행거리(MPG)에 대한 선형 회귀 모델을 피팅합니다.

lm = fitlm(tbl,'MPG~Weight+Acceleration')
lm = 


Linear regression model:
    MPG ~ 1 + Weight + Acceleration

Estimated Coefficients:
                     Estimate         SE         tStat       pValue  
                    __________    __________    _______    __________

    (Intercept)         45.155        3.4659     13.028    1.6266e-22
    Weight          -0.0082475    0.00059836    -13.783    5.3165e-24
    Acceleration       0.19694       0.14743     1.3359       0.18493


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 4.12
R-squared: 0.743,  Adjusted R-Squared 0.738
F-statistic vs. constant model: 132, p-value = 1.38e-27

-값이 0.18493이라는 것은 AccelerationMPG에 유의미한 영향을 미치지 않는다는 것을 나타냅니다.

모델에서 Acceleration을 제거하고 예측 변수 Model_Year를 추가하여 모델을 향상시켜 봅니다. 먼저 Model_Year를 범주형 변수로 정의합니다.

tbl.Model_Year = categorical(tbl.Model_Year);
lm = fitlm(tbl,'MPG~Weight+Model_Year')
lm = 


Linear regression model:
    MPG ~ 1 + Weight + Model_Year

Estimated Coefficients:
                      Estimate         SE         tStat       pValue  
                     __________    __________    _______    __________

    (Intercept)           40.11        1.5418     26.016    1.2024e-43
    Weight           -0.0066475    0.00042802    -15.531    3.3639e-27
    Model_Year_76        1.9291       0.74761     2.5804      0.011488
    Model_Year_82        7.9093       0.84975     9.3078    7.8681e-15


Number of observations: 94, Error degrees of freedom: 90
Root Mean Squared Error: 2.92
R-squared: 0.873,  Adjusted R-Squared 0.868
F-statistic vs. constant model: 206, p-value = 3.83e-40

윌킨슨 표기법을 사용하여 modelspec을 지정하면 설계 행렬을 변경할 필요 없이 모델을 업데이트할 수 있습니다. fitlm은 식에 지정된 변수만 사용합니다. 또한, 범주형 변수 Model_Year에 필요한 두 개의 가변수(표시자)도 생성합니다.

범주형 예측 변수를 포함하는 테이블의 모델을 피팅합니다.

carsmall 데이터를 불러옵니다.

load carsmall

연속형 예측 변수 Weight, 범주형 예측 변수 Year, 응답 변수 MPG를 포함하는 테이블을 생성합니다.

tbl = table(MPG,Weight);
tbl.Year = categorical(Model_Year);

MPG의 피팅된 모델을 Year, Weight, Weight^2의 함수로 생성합니다. WeightWeight^2에 대한 낮은 차수 항이기 때문에 식에 명시적으로 포함시킬 필요가 없습니다. fitlm 함수는 Weight를 자동으로 포함시킵니다.

mdl = fitlm(tbl,'MPG ~ Year + Weight^2')
mdl = 
Linear regression model:
    MPG ~ 1 + Weight + Year + Weight^2

Estimated Coefficients:
                    Estimate         SE         tStat       pValue  
                   __________    __________    _______    __________

    (Intercept)        54.206        4.7117     11.505    2.6648e-19
    Weight          -0.016404     0.0031249    -5.2493    1.0283e-06
    Year_76            2.0887       0.71491     2.9215     0.0044137
    Year_82            8.1864       0.81531     10.041    2.6364e-16
    Weight^2       1.5573e-06    4.9454e-07      3.149     0.0022303


Number of observations: 94, Error degrees of freedom: 89
Root Mean Squared Error: 2.78
R-squared: 0.885,  Adjusted R-Squared 0.88
F-statistic vs. constant model: 172, p-value = 5.52e-41

fitlm은 범주형 변량 Year에 대해 두 개의 가변수(표시자)를 생성합니다. 가변수 Year_76은 모델 연도가 1976인 경우 값 1을 받고, 그렇지 않은 경우 값 0을 받습니다. 가변수 Year_82는 모델 연도가 1982인 경우 값 1을 받고, 그렇지 않은 경우 값 0을 받습니다. 연도 1970이 기준 연도입니다. 대응하는 모델은 다음과 같습니다.

선형 회귀 모델을 표본 데이터에 피팅합니다. 응답 변수와 예측 변수를 지정하고 쌍별(Pairwise) 상호 작용 항만 모델에 포함시킵니다.

표본 데이터를 불러옵니다.

load hospital

상호 작용 항이 있는 선형 모델을 데이터에 피팅합니다. 체중을 응답 변수로 지정하고, 성별, 연령 및 흡연 여부를 예측 변수로 지정합니다. 또한, 성별과 흡연 여부가 범주형 변수임을 지정합니다.

mdl = fitlm(hospital,'interactions','ResponseVar','Weight',...
    'PredictorVars',{'Sex','Age','Smoker'},...
    'CategoricalVar',{'Sex','Smoker'})
mdl = 
Linear regression model:
    Weight ~ 1 + Sex*Age + Sex*Smoker + Age*Smoker

Estimated Coefficients:
                         Estimate      SE        tStat        pValue  
                         ________    _______    ________    __________

    (Intercept)             118.7     7.0718      16.785     6.821e-30
    Sex_Male               68.336     9.7153      7.0339    3.3386e-10
    Age                   0.31068    0.18531      1.6765      0.096991
    Smoker_1               3.0425     10.446     0.29127       0.77149
    Sex_Male:Age         -0.49094    0.24764     -1.9825      0.050377
    Sex_Male:Smoker_1      0.9509     3.8031     0.25003       0.80312
    Age:Smoker_1         -0.07288    0.26275    -0.27737       0.78211


Number of observations: 100, Error degrees of freedom: 93
Root Mean Squared Error: 8.75
R-squared: 0.898,  Adjusted R-Squared 0.892
F-statistic vs. constant model: 137, p-value = 6.91e-44

5% 유의수준에서 환자의 체중이 연령, 흡연 여부 또는 환자의 성별과 이러한 인자의 상호 작용에 따라 크게 다르지 않은 것으로 보입니다.

로버스트 피팅 방법을 사용하여 선형 회귀 모델을 피팅합니다.

표본 데이터를 불러옵니다.

load hald

hald 데이터는 시멘트 조성물이 해당 시멘트의 경화 열에 미치는 영향을 측정합니다. 행렬 ingredients는 시멘트에 존재하는 네 가지 화학 성분의 조성 비율을 포함합니다. 배열 heat는 각 시멘트 표본에 대해 180일이 지난 후의 경화 열 값을 포함합니다.

데이터에 로버스트 선형 모델을 피팅합니다.

mdl = fitlm(ingredients,heat,'linear','RobustOpts','on')
mdl = 
Linear regression model (robust fit):
    y ~ 1 + x1 + x2 + x3 + x4

Estimated Coefficients:
                   Estimate      SE        tStat       pValue 
                   ________    _______    ________    ________

    (Intercept)       60.09     75.818     0.79256      0.4509
    x1               1.5753    0.80585      1.9548    0.086346
    x2               0.5322    0.78315     0.67957     0.51596
    x3              0.13346     0.8166     0.16343     0.87424
    x4             -0.12052     0.7672    -0.15709     0.87906


Number of observations: 13, Error degrees of freedom: 8
Root Mean Squared Error: 2.65
R-squared: 0.979,  Adjusted R-Squared 0.969
F-statistic vs. constant model: 94.6, p-value = 9.03e-07

입력 인수

모두 축소

입력 데이터로, 테이블 또는 dataset형 배열로 지정됩니다. modelspecformula인 경우, 이는 예측 변수와 응답 변수로 사용되는 변수를 지정합니다. 그렇지 않고 예측 변수와 응답 변수를 지정하지 않으면 기본적으로 마지막 변수가 응답 변수이고, 나머지 변수는 예측 변수가 됩니다.

예측 변수는 숫자형이거나 그룹화 변수 유형(예: 논리형 또는 categorical형) 중 하나일 수 있습니다(Grouping Variables 항목 참조). 응답 변수는 숫자형이거나 논리형이어야 합니다.

다른 열을 응답 변수로 설정하려면 ResponseVar 이름-값 쌍의 인수를 사용하십시오. 열 중 일부를 예측 변수로 사용하려면 PredictorVars 이름-값 쌍의 인수를 사용하십시오.

예측 변수로, nxp 행렬로 지정됩니다. 여기서 n은 관측값 개수이고 p는 예측 변수 개수입니다. X의 각 열은 하나의 변수를 나타내고, 각 행은 하나의 관측값을 나타냅니다.

기본적으로, 명시적으로 제거하지 않는 한 모델에 상수항이 있으므로 X에 1로 구성된 열을 포함시키지 마십시오.

데이터형: single | double | logical

응답 변수로, nx1 벡터로 지정됩니다. 여기서 n은 관측값 개수입니다. y의 각 요소는 X의 대응 행에 대한 응답 변수입니다.

데이터형: single | double | logical

모델 사양으로, 다음 중 하나로 지정됩니다.

  • 모델을 명명하는 문자형 벡터 또는 string형 스칼라.

    모델 유형
    'constant'모델에 하나의 상수(절편) 항만 있습니다.
    'linear'각 예측 변수에 대해 모델에 하나의 절편 항과 여러 일차항이 있습니다.
    'interactions'모델에 하나의 절편 항, 여러 일차항, 서로 다른 예측 변수 쌍의 모든 곱(즉, 제곱 항 제외)이 있습니다.
    'purequadratic'모델에 하나의 절편 항과 여러 일차항 및 제곱 항이 있습니다.
    'quadratic'모델에 하나의 절편 항과 여러 일차항, 상호 작용, 제곱 항이 있습니다.
    'polyijk'모델이 첫 번째 예측 변수에 차수 i까지의 모든 항을 포함하고 두 번째 예측 변수에 차수 j까지의 모든 항을 포함하는 식으로 진행되는 다항식입니다. 숫자 0부터 9까지 사용하십시오. 예를 들어, 'poly2111'은 상수항과 모든 일차항 및 곱셈 항을 가지며, 예측 변수 1의 제곱 항도 포함합니다.
  • 모델에 포함시킬 항을 지정하는 tx(p + 1) 행렬, 즉 항 행렬. 여기서 t는 항의 개수이고, p는 예측 변수의 개수이며, + 1은 응답 변수에 대한 것입니다.

  • 다음 형식의 을 나타내는 문자형 벡터 또는 string형 스칼라.

    'Y ~ terms'

    여기서 terms윌킨슨(Wilkinson) 표기법으로 지정됩니다.

예: 'quadratic'

예: 'y ~ X1 + X2^2 + X1:X2'

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정할 수 있습니다. 여기서 Name은 인수 이름이고 Value는 이에 대응하는 값입니다. Name은 따옴표로 묶어야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 원하는 순서로 지정할 수 있습니다.

예: 'Intercept',false,'PredictorVars',[1,3],'ResponseVar',5,'RobustOpts','logistic'은 상수항이 없는 로버스트 회귀 모델을 지정합니다. 여기서 이 알고리즘은 디폴트 조율 상수를 갖는 로지스틱 가중 함수를 사용하고, 첫 번째 변수와 세 번째 변수는 예측 변수이며, 다섯 번째 변수는 응답 변수입니다.

범주형 변수 목록으로, 'CategoricalVars'와 함께 table형 배열 또는 dataset형 배열 tbl의 범주형 변수 이름을 포함하는 string형 배열이나 문자형 벡터로 구성된 셀형 배열, 또는 어떤 열이 범주형인지를 나타내는 논리형 또는 숫자형 인덱스 벡터가 쉼표로 구분되어 지정됩니다.

  • 데이터가 table형 배열 또는 dataset형 배열 tbl에 포함된 경우, 기본적으로 fitlm은 모든 categorical형 값, 논리값, 문자형 배열, string형 배열, 문자형 벡터로 구성된 셀형 배열을 범주형 변수로 처리합니다.

  • 데이터가 행렬 X에 포함된 경우, 'CategoricalVars'의 디폴트 값은 빈 행렬 []입니다. 즉, 범주형 변수로 직접 지정하지 않는 한 어떠한 변수도 범주형 변수가 아닙니다.

예를 들어, 다음 예 중 하나를 사용하여 6개 관측값 중 관측값 2와 관측값 3을 범주형으로 지정할 수 있습니다.

예: 'CategoricalVars',[2,3]

예: 'CategoricalVars',logical([0 1 1 0 0 0])

데이터형: single | double | logical | string | cell

피팅에서 제외시킬 관측값으로, 'Exclude'와 함께 피팅에서 제외시킬 관측값을 나타내는 논리형 또는 숫자형 인덱스 벡터가 쉼표로 구분되어 지정됩니다.

예를 들어, 다음 예 중 하나를 사용하여 6개 관측값 중에서 관측값 2와 관측값 3을 제외시킬 수 있습니다.

예: 'Exclude',[2,3]

예: 'Exclude',logical([0 1 1 0 0 0])

데이터형: single | double | logical

피팅에 포함된 상수항(절편)에 대한 표시자로, 'Intercept'와 함께 true(상수항 포함) 또는 false(모델에서 상수항 제외)가 쉼표로 구분되어 지정됩니다.

식 또는 행렬이 아니라 문자형 벡터 또는 string형 스칼라를 사용하여 모델을 지정하는 경우에만 'Intercept'를 사용하십시오.

예: 'Intercept',false

피팅에 사용할 예측 변수로, 'PredictorVars'와 함께 table형 배열 또는 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'와 함께 table형 배열 또는 dataset형 배열 tbl의 변수 이름을 포함하는 문자형 벡터나 string형 스칼라 또는 응답 변수 열을 나타내는 논리형 또는 숫자형 인덱스 벡터가 쉼표로 구분되어 지정됩니다. 일반적으로 table형 배열 또는 dataset형 배열 tbl을 피팅할 때는 'ResponseVar'를 사용해야 합니다.

예를 들어, 다음과 방법 중 하나로 네 번째 변수, 이를 테면 yield를 6개 변수 중 응답 변수로 지정할 수 있습니다.

예: 'ResponseVar','yield'

예: 'ResponseVar',[4]

예: 'ResponseVar',logical([0 0 0 1 0 0])

데이터형: single | double | logical | char | string

사용할 로버스트 피팅 유형에 대한 표시자로, 'RobustOpts'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'off' — 로버스트 피팅 없음. fitlm은 보통최소제곱해(Ordinary Least Squares)를 사용합니다.

  • 'on' — 로버스트 피팅. 로버스트 피팅을 사용하는 경우 'bisquare' 가중치 함수가 디폴트 값입니다.

  • 문자형 벡터 또는 string형 스칼라 — 다음 표에 나와 있는 로버스트 피팅 가중치 함수의 이름. fitlm은 표에서 대응되는 디폴트 조율 상수를 사용합니다.

  • 다음 표에 나와 있는 로버스트 피팅 가중치 함수의 이름을 포함하는 문자형 벡터 또는 string형 스칼라 RobustWgtFun과 선택적 스칼라 Tune 필드를 갖는 구조체 — fitlm은 구조체에서 RobustWgtFun 가중치 함수와 Tune 조율 상수를 사용합니다. 이 표에 나와 있는 로버스트 피팅 가중치 함수의 이름을 선택할 수 있습니다. Tune 필드를 제공하지 않으면 피팅 함수가 이에 대응되는 디폴트 조율 상수를 사용합니다.

    가중치 함수수식디폴트 조율 상수
    'andrews'w = (abs(r)<pi) .* sin(r) ./ r1.339
    'bisquare'(디폴트 값)w = (abs(r)<1) .* (1 - r.^2).^24.685
    'cauchy'w = 1 ./ (1 + r.^2)2.385
    'fair'w = 1 ./ (1 + abs(r))1.400
    'huber'w = 1 ./ max(1, abs(r))1.345
    'logistic'w = tanh(r) ./ r1.205
    'ols'보통최소제곱해(가중 함수 없음)없음
    'talwar'w = 1 * (abs(r)<1)2.795
    'welsch'w = exp(-(r.^2))2.985

    가중치 함수의 값 r은 다음과 같습니다.

    r = resid/(tune*s*sqrt(1-h)),

    여기서 resid는 이전 반복의 잔차로 구성된 벡터이고, h는 최소제곱 피팅의 지렛대값으로 구성된 벡터이며, s는 다음과 같이 주어진 오차항의 표준편차에 대한 추정값입니다.

    s = MAD/0.6745.

    MAD는 잔차의 중앙값과 잔차 간의 중앙값 절대편차(Median Absolute Deviation)입니다. 상수 0.6745는 정규분포에 대해 무편향 추정값을 생성합니다. X에 p개의 열이 있을 경우 중앙값을 계산할 때 가장 작은 p개의 절대편차가 제외됩니다.

    디폴트 조율 상수는 응답 변수가 이상값 없이 정규분포를 가지는 경우, 보통최소제곱해 추정값으로서 대략 95% 정도로 통계적 효율성을 갖는 계수 추정값을 제공합니다. 조율 상수를 낮추면 큰 잔차에 할당된 비중강하 값이 높아지고, 조율 상수를 높이면 큰 잔차에 할당된 비중강하 값이 낮아집니다.

  • 함수 핸들 RobustWgtFun과 선택적 스칼라 Tune 필드를 갖는 구조체 — 사용자 지정 가중치 함수를 지정할 수 있습니다. fitlm은 구조체에서 RobustWgtFun 가중치 함수와 Tune 조율 상수를 사용합니다. 잔차 벡터를 받아 동일한 크기의 가중 벡터를 반환하는 함수 핸들로 RobustWgtFun을 지정합니다. 피팅 함수는 조율 상수(디폴트 값이 1임)로 나누고 가중치 함수를 호출하기 전에 오차 표준편차의 추정값으로 나누어 잔차를 스케일링합니다.

예: 'RobustOpts','andrews'

변수 이름으로, 'VarNames'와 함께X의 열에 대한 이름을 첫 번째로 포함하고 응답 변수 y의 이름을 마지막으로 포함하는 string형 배열 또는 문자형 벡터로 구성된 셀형 배열이 쉼표로 구분되어 지정됩니다.

'VarNames'는 table형 배열 또는 dataset형 배열의 변수에 적용되지 않습니다. 이러한 변수는 이미 이름을 갖고 있기 때문입니다.

예를 들어, 데이터에서 마력, 가속도, 자동차의 모델 연도가 예측 변수이고 갤런당 마일 주행거리(MPG)가 응답 변수인 경우 다음과 같이 변수 이름을 지정할 수 있습니다.

예: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}

데이터형: string | cell

관측값 가중치로, 'Weights'와 함께 음이 아닌 스칼라 값으로 구성된 nx1 벡터가 쉼표로 구분되어 지정됩니다. 여기서 n은 관측값 개수입니다.

데이터형: single | double

출력 인수

모두 축소

데이터에 대한 응답 변수의 최소제곱 피팅을 나타내는 선형 모델로, LinearModel 객체로 반환됩니다.

'RobustOpts' 이름-값 쌍의 값이 [] 또는 'ols'가 아닌 경우, 이 모델은 최소제곱 피팅이 아니지만, 로버스트 피팅 함수를 사용합니다.

선형 모델 객체 mdl에 대한 속성과 메서드에 대한 자세한 내용은 LinearModel 클래스 페이지를 참조하십시오.

세부 정보

모두 축소

항 행렬

항 행렬은 모델의 항을 지정하는 tx(p + 1) 행렬입니다. 여기서 t는 항 개수이고, p는 예측 변수 개수이며, 더하기 1은 응답 변수에 해당합니다.

T(i,j)의 값은 항 i에 포함된 변수 j의 지수입니다. 세 개의 예측 변수 A, B, C가 있다고 가정해 보겠습니다.

[0 0 0 0] % Constant term or intercept
[0 1 0 0] % B; equivalently, A^0 * B^1 * C^0
[1 0 1 0] % A*C
[2 0 0 0] % A^2
[0 1 2 0] % B*(C^2)
각 항의 끝에 있는 0은 응답 변수를 나타냅니다. 일반적으로 다음과 같습니다.

  • table형 배열 또는 dataset형 배열로 변수를 지정하는 경우 0은 응답 변수의 위치를 기준으로 응답 변수를 나타내야 합니다. 다음 예제에서는 table형을 사용하여 이를 보여줍니다.

    표본 데이터를 불러오고 테이블을 정의합니다.

    load hospital
    dsa = table(hospital.Sex,hospital.BloodPressure(:,1), ...
    hospital.Age,hospital.Smoker,'VariableNames', ...
    {'Sex','BloodPressure','Age','Smoker'});

    항 행렬로 선형 모델 'BloodPressure ~ 1 + Sex + Age + Smoker'를 나타냅니다. 응답 변수가 테이블의 두 번째 열에 있으므로 항 행렬의 두 번째 열은 응답 변수를 나타내는 0으로 구성된 열이어야 합니다.

    T = [0 0 0 0;1 0 0 0;0 0 1 0;0 0 0 1]
    
    T =
    
         0     0     0     0
         1     0     0     0
         0     0     1     0
         0     0     0     1

    테이블을 다시 정의합니다.

    dsa = table(hospital.BloodPressure(:,1),hospital.Sex, ...
    hospital.Age,hospital.Smoker,'VariableNames', ...
    {'BloodPressure','Sex','Age','Smoker'});
    

    이제, 응답 변수가 테이블의 첫 번째 항이 됩니다. 항 행렬을 사용하여 동일한 선형 모델 'BloodPressure ~ 1 + Sex + Age + Smoker'를 지정합니다.

    T = [0 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1]
    T =
    
         0     0     0     0
         0     1     0     0
         0     0     1     0
         0     0     0     1
  • 행렬과 열 벡터로 예측 변수와 응답 변수를 지정하는 경우 각 행의 끝에 응답 변수를 나타내는 0을 포함시켜야 합니다. 다음 예제에서는 이를 보여줍니다.

    표본 데이터를 불러오고 예측 변수로 구성된 행렬을 정의합니다.

    load carsmall
    X = [Acceleration,Weight];
    

    항 행렬을 사용하여 모델 'MPG ~ Acceleration + Weight + Acceleration:Weight + Weight^2'을 지정하고 모델을 데이터에 피팅합니다. 이 모델은 변수 AccelerationWeight에 대한 주효과 항 및 이원 상호 작용 항, 그리고 변수 Weight에 대한 2차 항을 포함합니다.

    T = [0 0 0;1 0 0;0 1 0;1 1 0;0 2 0]
    
    T =
    
         0     0     0
         1     0     0
         0     1     0
         1     1     0
         0     2     0
    

    선형 모델을 피팅합니다.

    mdl = fitlm(X,MPG,T)
    mdl = 
    
    Linear regression model:
        y ~ 1 + x1*x2 + x2^2
    
    Estimated Coefficients:
                       Estimate       SE            tStat      pValue    
        (Intercept)         48.906        12.589     3.8847    0.00019665
        x1                 0.54418       0.57125    0.95261       0.34337
        x2               -0.012781     0.0060312    -2.1192      0.036857
        x1:x2          -0.00010892    0.00017925    -0.6076         0.545
        x2^2            9.7518e-07    7.5389e-07     1.2935       0.19917
    
    Number of observations: 94, Error degrees of freedom: 89
    Root Mean Squared Error: 4.1
    R-squared: 0.751,  Adjusted R-Squared 0.739
    F-statistic vs. constant model: 67, p-value = 4.99e-26

    Weight 변수에 대응되는 x2 항과 절편만 5% 유의수준에서 유의미합니다.

    이제, 시작 모델로 상수 모델을 사용하고 상한 모델로 상호 작용이 포함된 선형 모델을 사용하여 단계적 회귀를 수행합니다.

    T = [0 0 0;1 0 0;0 1 0;1 1 0];
    mdl = stepwiselm(X,MPG,[0 0 0],'upper',T)
    1. Adding x2, FStat = 259.3087, pValue = 1.643351e-28
    
    mdl = 
    
    Linear regression model:
        y ~ 1 + x2
    
    Estimated Coefficients:
                       Estimate      SE           tStat      pValue    
        (Intercept)        49.238       1.6411     30.002    2.7015e-49
        x2             -0.0086119    0.0005348    -16.103    1.6434e-28
    
    Number of observations: 94, Error degrees of freedom: 92
    Root Mean Squared Error: 4.13
    R-squared: 0.738,  Adjusted R-Squared 0.735
    F-statistic vs. constant model: 259, p-value = 1.64e-28

    단계적 회귀의 결과는 이전 단계에서 수행한 fitlm의 결과와 일치합니다.

공식

모델 사양의 식은 다음 형식의 문자형 벡터 또는 string형 스칼라입니다. 'Y ~ terms'

여기서는 다음을 조건으로 합니다.

  • Y는 응답 변수 이름입니다.

  • terms는 다음을 포함합니다.

    • 변수 이름

    • + - 다음 변수를 포함함을 의미함

    • - - 다음 변수를 포함하지 않음을 의미함

    • : - 상호 작용, 즉 항의 곱을 정의함

    • * - 상호 작용과 모든 낮은 차수 항을 정의함

    • ^ - 예측 변수를 거듭제곱함, 이는 *를 반복하는 것과 동일함, 따라서 ^은 낮은 차수 항도 포함함

    • () - 항을 그룹화함

참고

공식에는 기본적으로 상수항(절편)이 포함되어 있습니다. 모델에서 상수항을 제외하려면 공식에 -1을 포함시키십시오.

예를 들면 다음과 같습니다.

'Y ~ A + B + C'는 변수가 3개이며 절편이 있는 선형 모델을 의미합니다.
'Y ~ A + B + C - 1'은 변수가 3개이며 절편이 없는 선형 모델입니다.
'Y ~ A + B + C + B^2'은 변수가 3개이며 절편과 B^2 항이 있는 모델입니다.
'Y ~ A + B^2 + C'는 앞의 예제와 동일합니다. B^2B 항을 포함하기 때문입니다.
'Y ~ A + B + C + A:B'A*B 항을 포함합니다.
'Y ~ A*B + C'는 앞의 예제와 동일합니다. A*B = A + B + A:B이기 때문입니다.
'Y ~ A*B*C - A:B:C'는 삼원 상호 작용을 제외한 A, B, C 간의 모든 상호 작용을 가집니다.
'Y ~ A*(B + C + D)'는 모든 일차항과 함께 A와 다른 변수 각각에 대한 곱을 가집니다.

윌킨슨 표기법

윌킨슨 표기법은 모델에 존재하는 인자를 설명합니다. 이 표기법은 모델에 존재하는 인자와 관련이 있으며, 이러한 인자의 승수(계수)와는 관련이 없습니다.

윌킨슨 표기법표준 표기법으로 표현되는 인자
1상수(절편) 항
A^k. 여기서 k는 양의 정수입니다.A, A2, ..., Ak
A + BA, B
A*BA, B, A*B
A:BA*B
-BB를 포함시키지 않음
A*B + CA, B, C, A*B
A + B + C + A:BA, B, C, A*B
A*B*C - A:B:CA, B, C, A*B, A*C, B*C
A*(B + C)A, B, C, A*B, A*C

Statistics and Machine Learning Toolbox™ 표기법은 -1을 사용하여 상수항을 명시적으로 제거하지 않는 한 상수항을 항상 포함시킵니다.

  • LinearModel 객체 mdl의 모델 속성에 액세스하려면 점 표기법을 사용하면 됩니다. 예를 들어, mdl.Residuals는 모델에 대한 원시 잔차 값, 피어슨(Pearson) 잔차 값, 스튜던트화 잔차 값 및 표준화 잔차 값으로 구성된 테이블을 반환합니다.

  • 모델을 훈련시킨 후에는 새 데이터에 대한 응답 변수를 예측하는 C/C++ 코드를 생성할 수 있습니다. C/C++ 코드를 생성하려면 MATLAB® Coder™가 필요합니다. 자세한 내용은 Introduction to Code Generation 항목을 참조하십시오.

확장 기능

R2013b에 개발됨