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

LinearModel.fit

클래스: LinearModel

선형 회귀 모델 생성

LinearModel.fit는 향후 릴리스에서 제거될 예정입니다. fitlm을 대신 사용하십시오.

구문

mdl = LinearModel.fit(tbl)
mdl = LinearModel.fit(X,y)
mdl = LinearModel.fit(___,modelspec)
mdl = LinearModel.fit(___,Name,Value)
mdl = LinearModel.fit(___,modelspec,Name,Value)

설명

mdl = LinearModel.fit(tbl)은 table형 배열 또는 dataset형 배열 tbl의 선형 모델을 생성합니다.

mdl = LinearModel.fit(X,y)는 데이터 행렬 X에 대한 응답 변수 y의 선형 모델을 생성합니다.

mdl = LinearModel.fit(___,modelspec)은 위에 열거된 구문을 사용하여 modelspec으로 지정된 유형의 선형 모델을 생성합니다.

mdl = LinearModel.fit(___,Name,Value) 또는 mdl = LinearModel.fit(___,modelspec,Name,Value)는 하나 이상의 Name,Value 쌍 인수로 지정된 추가 옵션을 사용하여 선형 모델을 생성합니다. 예를 들어, 피팅에 포함시키거나 관측값 가중치에 포함시킬 예측 변수를 지정할 수 있습니다.

입력 인수

모두 확장

입력 데이터로, 테이블 또는 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과 같이 여러 개의 이름-값 쌍의 인수를 원하는 순서로 지정할 수 있습니다.

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

  • 데이터가 table형 배열 또는 dataset형 배열 tbl에 포함된 경우, 기본적으로 LinearModel.fit은 모든 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'가 아닌 경우, 이 모델은 최소제곱 피팅이 아니지만, 로버스트 피팅 함수를 사용합니다.

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

예제

모두 확장

Hald 데이터의 선형 모델을 피팅합니다.

데이터를 불러옵니다.

load hald
X = ingredients; % Predictor variables
y = heat; % Response

데이터에 디폴트 선형 모델을 피팅합니다.

mdl = fitlm(X,y)
mdl = 
Linear regression model:
    y ~ 1 + x1 + x2 + x3 + x4

Estimated Coefficients:
                   Estimate      SE        tStat       pValue 
                   ________    _______    ________    ________

    (Intercept)      62.405     70.071      0.8906     0.39913
    x1               1.5511    0.74477      2.0827    0.070822
    x2              0.51017    0.72379     0.70486      0.5009
    x3              0.10191    0.75471     0.13503     0.89592
    x4             -0.14406    0.70905    -0.20317     0.84407


Number of observations: 13, Error degrees of freedom: 8
Root Mean Squared Error: 2.45
R-squared: 0.982,  Adjusted R-Squared 0.974
F-statistic vs. constant model: 111, p-value = 4.76e-07

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

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

세부 정보

모두 확장

  • 로버스트 피팅(RobustOpts 이름-값 쌍)을 사용하면 이상값의 효과를 자동으로 줄일 수 있습니다.

  • step을 사용하여 모델을 이후에 조정하려는 경우 로버스트 피팅을 사용하지 마십시오.

  • LinearModel 객체에 대한 다른 메서드나 속성은 LinearModel을 참조하십시오.

알고리즘

주요 피팅 알고리즘은 QR 분해입니다. 로버스트 피팅의 경우, 알고리즘은 robustfit입니다.

대안

fitlm을 사용하여 선형 모델을 생성할 수도 있습니다.

stepwiselm을 사용하여 가능한 모델 범위에 있는 모델을 생성할 수 있습니다. 그러나, 로버스트 회귀와 단계적 회귀를 함께 사용할 수는 없습니다.