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

fitlm

선형 회귀 모델 피팅하기

설명

예제

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

예제

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

예제

mdl = fitlm(___,modelspec)은 위에 열거된 구문대로 입력 인수를 조합하여 모델 사양을 정의합니다.

예제

mdl = fitlm(___,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 옵션을 추가로 지정합니다. 예를 들어, 사용자는 어떤 변수가 범주형 변수인지 지정하거나, 로버스트 회귀를 수행하거나, 관측값 가중치를 사용할 수 있습니다.

예제

모두 축소

행렬 입력 데이터 세트를 사용하여 선형 회귀 모델을 피팅합니다.

행렬 입력 데이터 세트인 carsmall 데이터 세트를 불러옵니다.

load carsmall
X = [Weight,Horsepower,Acceleration];

fitlm을 사용하여 선형 회귀 모델을 피팅합니다.

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

Estimated Coefficients:
                    Estimate        SE          tStat        pValue  
                   __________    _________    _________    __________

    (Intercept)        47.977       3.8785        12.37    4.8957e-21
    x1             -0.0065416    0.0011274      -5.8023    9.8742e-08
    x2              -0.042943     0.024313      -1.7663       0.08078
    x3              -0.011583      0.19333    -0.059913       0.95236


Number of observations: 93, Error degrees of freedom: 89
Root Mean Squared Error: 4.09
R-squared: 0.752,  Adjusted R-Squared: 0.744
F-statistic vs. constant model: 90, p-value = 7.38e-27

모델 표시 화면에 모델식, 추정된 계수 및 모델 요약 통계량이 포함됩니다.

표시된 모델식 y ~ 1 + x1 + x2 + x3y=β0+β1X1+β2X2+β3X3+ϵ에 해당합니다.

모델 표시 화면에 Coefficients 속성에 저장된, 추정된 계수 정보도 표시됩니다. Coefficients 속성을 표시합니다.

mdl.Coefficients
ans=4×4 table
                    Estimate        SE          tStat        pValue  
                   __________    _________    _________    __________

    (Intercept)        47.977       3.8785        12.37    4.8957e-21
    x1             -0.0065416    0.0011274      -5.8023    9.8742e-08
    x2              -0.042943     0.024313      -1.7663       0.08078
    x3              -0.011583      0.19333    -0.059913       0.95236

Coefficient 속성은 다음과 같은 열을 포함합니다.

  • Estimate — 모델에서 각각의 대응되는 항에 대한 계수 추정값입니다. 예를 들어, 상수항(intercept)에 대한 추정값은 47.977입니다.

  • SE — 계수의 표준 오차입니다.

  • tStat — 모델에 주어진 다른 예측 변수를 상정한 경우, '대응하는 계수가 0이 아니다'는 대립가설에 대해 '계수가 0이다'는 귀무가설을 검정하는 데 사용된 각 계수에 대한 t-통계량입니다. 참고로, tStat = Estimate/SE입니다. 예를 들어, 절편에 대한 t-통계량은 47.977/3.8785 = 12.37입니다.

  • pValue — 대응하는 계수가 0인지 아니면 0이 아닌지를 검정하는 가설에 대한 t-통계량의 p-값입니다. 예를 들어, x2에 대한 t-통계량의 p-값은 0.05보다 크므로 모델의 다른 항을 고려할 때 이 항은 5% 유의수준에서 유의미하지 않습니다.

모델의 요약 통계량은 다음과 같습니다.

  • Number of observationsNaN 값을 포함하지 않는 행 개수입니다. 예를 들어, XMPG의 행 개수는 100개인데 MPG 데이터 벡터에 NaN 값이 6개 있고 Horsepower 데이터 벡터에 다른 관측값에 대한 NaN 값이 1개 있기 때문에 Number of observations는 93입니다.

  • Error degrees of freedomn p이며, 여기서 n은 관측값의 개수이고 p는 절편을 포함하여 모델에 포함된 계수의 개수입니다. 예를 들어, 이 모델은 4개의 예측 변수를 가지므로 Error degrees of freedom은 93 – 4 = 89입니다.

  • Root mean squared error — 평균 제곱 오차의 제곱근으로, 오차 분포의 표준편차를 추정합니다.

  • R-squaredAdjusted R-squared — 각각 결정계수와 수정된 결정계수를 나타냅니다. 예를 들어, R-squared 값은 모델이 응답 변수 MPG의 변동성의 약 75%를 설명한다는 것을 나타냅니다.

  • F-statistic vs. constant model — 회귀 모델에 대한 F-검정의 검정 통계량으로, 이 모델이 상수항만으로 구성된 퇴화 모델보다 훨씬 더 잘 피팅되는지 여부를 검정합니다.

  • p-value — 모델에 대한 F-검정의 p-값입니다. 예를 들어, 이 모델은 p-값이 7.3816e-27인 경우 유의미합니다.

모델 속성(NumObservations, DFE, RMSERsquared)에서, 그리고 anova 함수를 사용하여 이러한 통계량을 확인할 수 있습니다.

anova(mdl,'summary')
ans=3×5 table
                SumSq     DF    MeanSq      F         pValue  
                ______    __    ______    ______    __________

    Total       6004.8    92    65.269                        
    Model         4516     3    1505.3    89.987    7.3816e-27
    Residual    1488.8    89    16.728                        

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

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

이 예제의 모델 'MPG~Weight+Acceleration'은 모델 사양으로 'linear'를 설정하는 것과 동일합니다. 예를 들면 다음과 같습니다.

lm2 = fitlm(tbl,'linear');

모델 사양으로 문자형 벡터를 사용하고 응답 변수를 지정하지 않는 경우 fitlmtbl의 마지막 변수를 응답 변수로 받고 나머지 변수를 예측 변수로 받습니다.

윌킨슨(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

p-값이 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에 필요한 두 개의 가변수(표시자)도 생성합니다.

항 행렬을 사용하여 선형 회귀 모델을 피팅합니다.

테이블 입력값에 대한 항 행렬

모델 변수가 테이블에 있는 경우 항 행렬에서 0으로 구성된 열은 응답 변수의 위치를 나타냅니다.

hospital 데이터 세트를 불러옵니다.

load hospital

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

t = 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 = 4×4

     0     0     0     0
     1     0     0     0
     0     0     1     0
     0     0     0     1

선형 모델을 피팅합니다.

mdl1 = fitlm(t,T)
mdl1 = 
Linear regression model:
    BloodPressure ~ 1 + Sex + Age + Smoker

Estimated Coefficients:
                   Estimate       SE        tStat        pValue  
                   ________    ________    ________    __________

    (Intercept)      116.14      2.6107      44.485    7.1287e-66
    Sex_Male       0.050106     0.98364    0.050939       0.95948
    Age            0.085276    0.066945      1.2738        0.2058
    Smoker_1           9.87      1.0346      9.5395    1.4516e-15


Number of observations: 100, Error degrees of freedom: 96
Root Mean Squared Error: 4.78
R-squared: 0.507,  Adjusted R-Squared: 0.492
F-statistic vs. constant model: 33, p-value = 9.91e-15

행렬 입력값에 대한 항 행렬

예측 변수와 응답 변수가 행렬과 열 벡터에 있는 경우 항 행렬의 각 행의 끝에 응답 변수를 나타내는 0을 포함시켜야 합니다.

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

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 = 5×3

     0     0     0
     1     0     0
     0     1     0
     1     1     0
     0     2     0

선형 모델을 피팅합니다.

mdl2 = fitlm(X,MPG,T)
mdl2 = 
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% 유의수준에서 유의미합니다.

범주형 예측 변수를 포함하는 선형 회귀 모델을 피팅합니다. 모델에서 기준 레벨을 제어하기 위해 범주형 예측 변수의 범주를 다시 정렬합니다. 그런 다음 anova를 사용하여 범주형 변수의 유의성을 검정합니다.

범주형 예측 변수를 갖는 모델

carsmall 데이터 세트를 불러오고, MPG의 선형 회귀 모델을 Model_Year의 함수로 생성합니다. 숫자형 벡터 Model_Year를 범주형 변수로 처리하기 위해 'CategoricalVars' 이름-값 쌍의 인수를 사용하여 예측 변수를 식별합니다.

load carsmall
mdl = fitlm(Model_Year,MPG,'CategoricalVars',1,'VarNames',{'Model_Year','MPG'})
mdl = 
Linear regression model:
    MPG ~ 1 + Model_Year

Estimated Coefficients:
                     Estimate      SE      tStat       pValue  
                     ________    ______    ______    __________

    (Intercept)        17.69     1.0328    17.127    3.2371e-30
    Model_Year_76     3.8839     1.4059    2.7625     0.0069402
    Model_Year_82      14.02     1.4369    9.7571    8.2164e-16


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56
R-squared: 0.531,  Adjusted R-Squared: 0.521
F-statistic vs. constant model: 51.6, p-value = 1.07e-15

표시된 모델식 MPG ~ 1 + Model_Year는 다음에 해당합니다.

MPG=β0+β1ΙYear=76+β2ΙYear=82+ϵ

여기서 ΙYear=76ΙYear=82Model_Year의 값이 각각 76 및 82일 때 값이 1인 표시 변수입니다. Model_Year 변수는 3개의 고유한 값을 포함하고 있으며, 이는 unique 함수를 사용해서 확인할 수 있습니다.

unique(Model_Year)
ans = 3×1

    70
    76
    82

fitlmModel_Year에서 가장 작은 값을 기준 레벨('70')로 선택하고 두 개의 표시 변수 ΙYear=76ΙYear=82를 생성합니다. 모델이 3개의 표시 변수(각 레벨당 1개)와 1개의 절편 항을 포함하는 경우 설계 행렬이 랭크 부족이 되므로 모델은 2개의 표시 변수만 포함합니다.

전체 표시 변수를 갖는 모델

mdl의 모델식을 절편 항이 없고 3개의 표시 변수를 갖는 모델로 해석할 수 있습니다.

y=β0Ιx1=70+(β0+β1)Ιx1=76+(β0+β2)Ιx2=82+ϵ.

또는 표시 변수를 수동으로 생성하고 모델식을 지정하여 절편 항이 없고 3개의 표시 변수를 갖는 모델을 생성할 수도 있습니다.

temp_Year = dummyvar(categorical(Model_Year));
Model_Year_70 = temp_Year(:,1);
Model_Year_76 = temp_Year(:,2);
Model_Year_82 = temp_Year(:,3);
tbl = table(Model_Year_70,Model_Year_76,Model_Year_82,MPG);
mdl = fitlm(tbl,'MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82 - 1')
mdl = 
Linear regression model:
    MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82

Estimated Coefficients:
                     Estimate      SE       tStat       pValue  
                     ________    _______    ______    __________

    Model_Year_70      17.69      1.0328    17.127    3.2371e-30
    Model_Year_76     21.574     0.95387    22.617    4.0156e-39
    Model_Year_82      31.71     0.99896    31.743    5.2234e-51


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56

모델에서 기준 레벨 선택하기

범주형 변수에서 범주 순서를 수정하여 기준 레벨을 선택할 수 있습니다. 먼저 범주형 변수 Year를 만듭니다.

Year = categorical(Model_Year);

categories 함수를 사용하여 범주의 순서를 확인합니다.

categories(Year)
ans = 3x1 cell array
    {'70'}
    {'76'}
    {'82'}

Year를 예측 변수로 사용할 경우 fitlm은 첫 번째 범주 '70'을 기준 레벨로 선택합니다. reordercats 함수를 사용하여 Year를 다시 정렬합니다.

Year_reordered = reordercats(Year,{'76','70','82'});
categories(Year_reordered)
ans = 3x1 cell array
    {'76'}
    {'70'}
    {'82'}

Year_reordered의 첫 번째 범주는 '76'입니다. MPG의 선형 회귀 모델을 Year_reordered의 함수로 생성합니다.

mdl2 = fitlm(Year_reordered,MPG,'VarNames',{'Model_Year','MPG'})
mdl2 = 
Linear regression model:
    MPG ~ 1 + Model_Year

Estimated Coefficients:
                     Estimate      SE        tStat       pValue  
                     ________    _______    _______    __________

    (Intercept)       21.574     0.95387     22.617    4.0156e-39
    Model_Year_70    -3.8839      1.4059    -2.7625     0.0069402
    Model_Year_82     10.136      1.3812     7.3385    8.7634e-11


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56
R-squared: 0.531,  Adjusted R-Squared: 0.521
F-statistic vs. constant model: 51.6, p-value = 1.07e-15

mdl2'76'을 기준 레벨로 사용하고 두 개의 표시 변수 ΙYear=70ΙYear=82를 포함합니다.

범주형 예측 변수 평가하기

mdl2의 모델 표시 화면은 대응되는 계수가 0인지 여부를 검정하기 위해 각 항의 p-값을 포함합니다. 각 p-값은 각 표시 변수를 조사합니다. 범주형 변수 Model_Year를 표시 변수의 그룹으로 조사하려면 anova를 사용하십시오. 모델의 상수항을 제외한 각 변수에 대해 분산분석 통계량을 포함하는 성분 분산분석표를 반환하도록 'components'를 지정합니다.

anova(mdl2,'components')
ans=2×5 table
                  SumSq     DF    MeanSq      F        pValue  
                  ______    __    ______    _____    __________

    Model_Year    3190.1     2    1595.1    51.56    1.0694e-15
    Error         2815.2    91    30.936                       

성분 분산분석표는 표시 변수의 p-값보다 작은 Model_Year 변수의 p-값을 포함합니다.

선형 회귀 모델을 표본 데이터에 피팅합니다. 응답 변수와 예측 변수를 지정하고 쌍별(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% 유의수준에서 환자의 체중이 연령, 흡연 여부 또는 환자의 성별과 이러한 인자의 상호 작용에 따라 크게 다르지 않은 것으로 보입니다.

시멘트 조성물이 해당 시멘트의 경화 열에 미치는 영향을 측정하는 hald 데이터 세트를 불러옵니다.

load hald

이 데이터 세트는 변수 ingredientsheat를 포함합니다. 행렬 ingredients는 시멘트에 존재하는 네 가지 화학 성분의 조성 비율을 포함합니다. 벡터 heat는 각 시멘트 표본에 대해 180일이 지난 후의 경화 열 값을 포함합니다.

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

mdl = fitlm(ingredients,heat,'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

자세한 내용은 로버스트 피팅의 결과와 표준 최소제곱 피팅의 결과를 비교하는 Robust Regression — Reduce Outlier Effects 항목을 참조하십시오.

입력 인수

모두 축소

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

예측 변수는 숫자형, 논리형, categorical형, 문자 또는 string형일 수 있습니다. 응답 변수는 숫자형이거나 논리형이어야 합니다.

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

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

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

데이터형: single | double

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

데이터형: single | double | logical

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

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

    모델 유형
    'constant'모델에 하나의 상수(절편) 항만 있습니다.
    'linear'모델에 하나의 절편 항과 각 예측 변수에 대한 일차항이 있습니다.
    'interactions'모델에 하나의 절편 항, 각 예측 변수에 대한 일차항, 서로 다른 예측 변수 쌍의 모든 곱(제곱 항 아님)이 있습니다.
    'purequadratic'모델에 하나의 절편 항과 각 예측 변수에 대한 일차항 및 제곱 항이 있습니다.
    'quadratic'모델에 하나의 절편 항, 각 예측 변수에 대한 일차항 및 제곱 항, 서로 다른 예측 변수 쌍의 모든 곱이 있습니다.
    'polyijk'모델이 첫 번째 예측 변수에 차수 i까지의 모든 항을 포함하고 두 번째 예측 변수에 차수 j까지의 모든 항을 포함하는 식으로 진행되는 다항식입니다. 숫자 0부터 9까지를 사용하여 각 예측 변수에 대해 최대 차수를 지정합니다. 모델에 상호 작용 항이 있지만 각 상호 작용 항의 차수가 지정된 차수의 최댓값을 초과하지 않습니다. 예를 들어, 'poly13'에는 절편 항과 x1, x2, x22, x23, x1*x2, x1*x22 항이 있으며, 여기서 x1과 x2는 각각 첫 번째 예측 변수, 두 번째 예측 변수입니다.
  • 모델의 항을 지정하는 tx(p + 1) 행렬 또는 항 행렬. 여기서 t는 항 개수이고, p는 예측 변수 개수이며, +1은 응답 변수에 해당합니다. 항 행렬은 예측 변수 개수가 많고 항을 프로그래밍 방식으로 생성하려는 경우에 유용합니다.

  • 다음 형식의 공식를 표현하는 문자형 벡터 또는 string형 스칼라.

    'Y ~ terms',

    여기서 terms윌킨슨 표기법으로 표현됩니다.

예: 'quadratic'

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

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

이름-값 쌍의 인수

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

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

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

  • 데이터가 테이블 또는 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'와 함께 테이블 또는 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'와 함께 테이블 또는 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

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

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

  • 'on' — 로버스트 피팅 사용. 디폴트 조율 상수를 갖는 'bisquare' 가중치 함수를 사용합니다.

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

  • 두 개의 필드 RobustWgtFunTune을 갖는 구조체.

    • RobustWgtFun 필드는 다음 표에 나와 있는 로버스트 피팅 가중치 함수의 이름을 포함하거나 사용자 지정 가중치 함수의 함수 핸들을 포함합니다.

    • Tune 필드는 조율 상수를 포함합니다. Tune 필드를 설정하지 않으면 fitlm 함수는 지정된 디폴트 조율 상수를 사용합니다.

    가중치 함수설명디폴트 조율 상수
    'andrews'w = (abs(r)<pi) .* sin(r) ./ r1.339
    'bisquare'w = (abs(r)<1) .* (1 - r.^2).^2(biweight, 즉 이중 가중이라고도 함)4.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과 동일한 크기의 가중치로 구성된 벡터를 반환합니다.1
    • 내장 가중치 함수의 디폴트 조율 상수는 응답 변수가 이상값 없이 정규분포를 가지는 경우, 보통최소제곱해 추정값으로서 대략 95% 정도로 통계적 효율성을 갖는 계수 추정값을 제공합니다. 조율 상수를 낮추면 큰 잔차에 할당된 비중강하 값이 높아지고, 조율 상수를 높이면 큰 잔차에 할당된 비중강하 값이 낮아집니다.

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

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

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

      s = MAD/0.6745.

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

로버스트 피팅의 경우 fitlm 함수는 M-추정을 사용하여 추정 방정식을 정식화하고 반복 재가중 최소제곱(IRLS) 방법을 사용하여 방정식을 풉니다.

예: 'RobustOpts','andrews'

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

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

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

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

데이터형: string | cell

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

데이터형: single | double

출력 인수

모두 축소

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

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

세부 정보

모두 축소

항 행렬

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

예를 들어, 3개의 예측 변수 A, B, C와 응답 변수 YA, B, C, Y의 순서로 포함하는 입력값이 있다고 가정하겠습니다. T의 각 행은 하나의 항을 나타냅니다.

  • [0 0 0 0] — 상수항 또는 절편

  • [0 1 0 0]B 또는 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은 응답 변수를 나타냅니다. 일반적으로 항 행렬에서 0으로 구성된 열 벡터는 응답 변수의 위치를 나타냅니다. 행렬과 열 벡터로 예측 변수와 응답 변수를 지정하는 경우 각 행의 마지막 열에 응답 변수를 나타내는 0을 포함시켜야 합니다.

공식

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

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

  • terms는 윌킨슨 표기법을 사용하여 모델의 예측 변수 항을 표현합니다.

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

  • 'Y ~ A + B + C'는 변수가 3개이며 절편이 있는 선형 모델을 지정합니다.

  • 'Y ~ A + B + C – 1'은 변수가 3개이며 절편이 없는 선형 모델을 지정합니다. 공식에는 기본적으로 상수항(절편)이 포함되어 있습니다. 모델에서 상수항을 제외하려면 공식에 –1을 포함시켜야 합니다.

윌킨슨 표기법

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

윌킨슨 표기법은 다음과 같은 기호를 사용합니다.

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

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

  • : - 상호 작용, 즉 항의 곱을 정의합니다.

  • * - 상호 작용과 모든 낮은 차수 항을 정의합니다.

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

  • () - 항을 그룹화합니다.

다음 표에는 윌킨슨 표기법의 일반적인 예가 나와 있습니다.

윌킨슨 표기법표준 표기법으로 표현되는 항
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을 사용하여 상수항을 명시적으로 제거하지 않는 한 상수항을 항상 포함시킵니다.

자세한 내용은 Wilkinson Notation 항목을 참조하십시오.

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

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

알고리즘

  • 주요 피팅 알고리즘은 QR 분해입니다. 로버스트 피팅의 경우 fitlm 함수는 M-추정을 사용하여 추정 방정식을 정식화하고 반복 재가중 최소제곱(IRLS) 방법을 사용하여 방정식을 풉니다.

  • fitlm 함수는 범주형 예측 변수를 다음과 같이 처리합니다.

    • 수준(범주)이 L개인 범주형 예측 변수를 갖는 모델은 L – 1개의 표시 변수를 갖습니다. 이 모델은 첫 번째 범주를 기준 레벨로 사용하므로 기준 레벨에 대한 표시 변수는 포함하지 않습니다. 범주형 예측 변수의 데이터형이 categorical인 경우 categories를 사용하여 범주 순서를 확인하고 reordercats를 사용하여 범주를 다시 정렬하여 기준 레벨을 사용자 지정할 수 있습니다.

    • fitlm 함수는 L – 1개의 표시 변수 그룹을 단일 변수로 처리합니다. 표시 변수를 고유한 예측 변수로 처리하려면 dummyvar을 사용하여 표시 변수를 수동으로 만드십시오. 그런 다음 모델을 피팅할 때 범주형 변수의 기준 레벨에 해당하는 변수를 제외한 표시 변수를 사용하십시오. 범주형 예측 변수 X의 경우, dummyvar(X)의 모든 열과 절편 항을 예측 변수로 지정하면 설계 행렬은 랭크 부족이 됩니다.

    • 연속형 예측 변수와 수준이 L개인 범주형 예측 변수 사이의 상호 작용 항은 L – 1개의 표시 변수와 연속형 예측 변수의 요소별 곱으로 구성됩니다.

    • 수준이 L개인 범주형 예측 변수와 수준이 M개인 범주형 예측 변수의 두 범주형 예측 변수 사이의 상호 작용 항은 (L – 1)*(M – 1)개의 표시 변수로 구성되어 두 범주형 예측 변수 수준의 모든 가능한 조합을 포함합니다.

    • 표시 변수의 제곱은 그 자신과 동일하기 때문에 범주형 예측 변수에 대한 고차 항은 지정할 수 없습니다.

  • fitlm 함수는 tbl, XYNaN, ''(빈 문자형 벡터), ""(빈 string형), <missing>, <undefined> 값을 결측값으로 간주합니다. fitlm 함수는 피팅할 때 결측값이 있는 관측값을 사용하지 않습니다. 피팅된 모델의 ObservationInfo 속성은 fitlm 함수가 피팅에서 각 관측값을 사용하는지 여부를 나타냅니다.

대체 기능

  • 고차원 데이터 세트에 대한 계산 시간을 단축시키려면 fitrlinear 함수를 사용하여 선형 회귀 모델을 피팅하십시오.

  • 회귀를 정규화하려면 fitrlinear, lasso, ridge 또는 plsregress를 사용하십시오.

    • fitrlinear는 고차원 데이터 세트에 대한 회귀를 라소 또는 능형 회귀를 사용하여 정규화합니다.

    • lasso는 라소 또는 신축망을 사용하여 선형 회귀에서 중복된 예측 변수를 제거합니다.

    • ridge는 상관관계를 갖는 항이 있는 회귀를 능형 회귀를 사용하여 정규화합니다.

    • plsregress는 상관관계를 갖는 항이 있는 회귀를 부분 최소제곱을 사용하여 정규화합니다.

참고 문헌

[1] DuMouchel, W. H., and F. L. O'Brien. “Integrating a Robust Option into a Multiple Regression Computing Environment.” Computer Science and Statistics: Proceedings of the 21st Symposium on the Interface. Alexandria, VA: American Statistical Association, 1989.

[2] Holland, P. W., and R. E. Welsch. “Robust Regression Using Iteratively Reweighted Least-Squares.” Communications in Statistics: Theory and Methods, A6, 1977, pp. 813–827.

[3] Huber, P. J. Robust Statistics. Hoboken, NJ: John Wiley & Sons, Inc., 1981.

[4] Street, J. O., R. J. Carroll, and D. Ruppert. “A Note on Computing Robust Regression Estimates via Iteratively Reweighted Least Squares.” The American Statistician. Vol. 42, 1988, pp. 152–154.

확장 기능

R2013b에 개발됨