Main Content

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

regress

다중 선형 회귀

설명

예제

b = regress(y,X)는 예측 변수 행렬 X와 이에 대한 응답 변수 벡터 y가 주어졌을 때, 다중 선형 회귀에 대한 계수 추정값으로 구성된 벡터 b를 반환합니다. 상수항(절편)을 갖는 모델에 대한 계수 추정값을 계산하려면 행렬 X에 1로 구성된 열을 포함시키십시오.

[b,bint] = regress(y,X)는 계수 추정값에 대한 95% 신뢰구간의 행렬 bint도 반환합니다.

[b,bint,r] = regress(y,X)는 잔차로 구성된 추가 벡터 r도 반환합니다.

예제

[b,bint,r,rint] = regress(y,X)는 이상값을 진단하는 데 사용될 수 있는 구간으로 구성된 행렬 rint도 반환합니다.

예제

[b,bint,r,rint,stats] = regress(y,X)는 R2 통계량, F-통계량과 관련 p-값, 오차 분산의 추정값을 포함하는 벡터 stats도 반환합니다. 모델 통계량을 정확하게 계산하려면 행렬 X는 1로 구성된 열을 포함해야 합니다.

예제

[___] = regress(y,X,alpha)100*(1-alpha)% 신뢰수준을 사용하여 bintrint를 계산합니다. 위에 열거된 구문에 나와 있는 출력 인수를 원하는 대로 조합하여 지정할 수 있습니다.

예제

모두 축소

carsmall 데이터 세트를 불러옵니다. 중량과 마력을 예측 변수로 식별하고 주행 거리를 응답 변수로 식별합니다.

load carsmall
x1 = Weight;
x2 = Horsepower;    % Contains NaN data
y = MPG;

상호 작용 항이 있는 선형 모델에 대한 회귀 계수를 계산합니다.

X = [ones(size(x1)) x1 x2 x1.*x2];
b = regress(y,X)    % Removes NaN data
b = 4×1

   60.7104
   -0.0102
   -0.1882
    0.0000

데이터와 모델을 플로팅합니다.

scatter3(x1,x2,y,'filled')
hold on
x1fit = min(x1):100:max(x1);
x2fit = min(x2):10:max(x2);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);
YFIT = b(1) + b(2)*X1FIT + b(3)*X2FIT + b(4)*X1FIT.*X2FIT;
mesh(X1FIT,X2FIT,YFIT)
xlabel('Weight')
ylabel('Horsepower')
zlabel('MPG')
view(50,10)
hold off

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

load examgrades

마지막 시험 점수를 응답 변수 데이터로 사용하고 처음 두 번의 시험 점수를 예측 변수 데이터로 사용합니다.

y = grades(:,5);
X = [ones(size(grades(:,1))) grades(:,1:2)];

alpha = 0.01을 사용하여 다중 선형 회귀를 수행합니다.

[~,~,r,rint] = regress(y,X,0.01);

0을 포함하지 않는 잔차 구간 rint를 구하여 이상값을 진단합니다.

contain0 = (rint(:,1)<0 & rint(:,2)>0);
idx = find(contain0==false)
idx = 2×1

    53
    54

가능한 이상값은 관측값 5354입니다.

잔차에 대한 산점도 플롯을 생성합니다. 이상값에 해당하는 점을 채웁니다.

hold on
scatter(y,r)
scatter(y(idx),r(idx),'b','filled')
xlabel("Last Exam Grades")
ylabel("Residuals")
hold off

hald 데이터 세트를 불러옵니다. heat를 응답 변수로 사용하고 ingredients를 예측 변수 데이터로 사용합니다.

load hald
y = heat;
X1 = ingredients;
x1 = ones(size(X1,1),1);
X = [x1 X1];    % Includes column of ones

다중 선형 회귀를 수행하고 모델 통계량을 생성합니다.

[~,~,~,~,stats] = regress(y,X)
stats = 1×4

    0.9824  111.4792    0.0000    5.9830

R20.9824는 1에 가깝고 p-0.0000은 디폴트 유의수준 0.05보다 작기 때문에 응답 변수 yX의 예측 변수 간에 유의미한 선형 회귀 관계가 존재합니다.

입력 인수

모두 축소

응답 변수 데이터로, nx1 숫자형 벡터로 지정됩니다. y의 행은 각기 다른 관측값에 대응됩니다. yX와 동일한 개수의 행을 가져야 합니다.

데이터형: single | double

예측 변수 데이터로, nxp 숫자형 행렬로 지정됩니다. X의 행은 관측값에 대응되고, 열은 예측 변수에 대응됩니다. Xy와 동일한 개수의 행을 가져야 합니다.

데이터형: single | double

유의수준으로, 양의 스칼라로 지정됩니다. alpha는 0과 1 사이여야 합니다.

데이터형: single | double

출력 인수

모두 축소

다중 선형 회귀에 대한 계수 추정값으로, 숫자형 벡터로 반환됩니다. b는 px1 벡터이고, 여기서 p는 X에 포함된 예측 변수의 개수입니다. X의 열이 1차 종속이면 regressb의 최대 요소 개수를 0으로 설정합니다.

데이터형: double

계수 추정값에 대한 신뢰 하한 및 신뢰 상한으로, 숫자형 행렬로 반환됩니다. bint는 px2 행렬이며, 여기서 p는 X에 포함된 예측 변수의 개수입니다. bint의 첫 번째 열은 각각의 계수 추정값에 대한 신뢰 하한을 포함하고, 두 번째 열은 신뢰 상한을 포함합니다. X의 열이 1차 종속이면 regressb의 0 요소에 대응되는 bint 요소에 0을 반환합니다.

데이터형: double

잔차로, 숫자형 벡터로 반환됩니다. r은 nx1 벡터이며, 여기서 n은 X에 포함된 관측값 개수 또는 행 개수입니다.

데이터형: single | double

이상값을 진단할 구간으로, 숫자형 행렬로 반환됩니다. rint는 nx2 행렬이며, 여기서 n은 X에 포함된 관측값 개수 또는 행 개수입니다. 관측값 i에 대한 구간 rint(i,:)이 0을 포함하지 않을 경우 대응되는 잔차가 새 관측값의 100*(1-alpha)%에서 예상되는 값보다 크며 이는 이상값을 나타냅니다. 자세한 내용은 알고리즘 항목을 참조하십시오.

데이터형: single | double

모델 통계량으로, R2 통계량, F-통계량과 관련 p-값, 오차 분산의 추정값을 포함하는 숫자형 벡터로 반환됩니다.

  • X는 모델이 상수항을 포함하도록 1로 구성된 열을 포함해야 합니다. F-통계량과 관련 p-값은 이 가정 하에 계산되므로 상수가 없는 모델에 대해서는 올바르지 않습니다.

  • F-통계량은 회귀 모델의 F-검정에 대한 검정 통계량입니다. F-검정은 응답 변수와 예측 변수 간의 유의미한 선형 회귀 관계를 찾습니다.

  • R2 통계량은 상수가 없는 모델에 대해서는 음수일 수 있으며, 이는 모델이 데이터에 적합하지 않음을 나타냅니다.

데이터형: single | double

  • regressX 또는 y에 있는 NaN 값을 결측값으로 처리합니다. regress는 회귀 피팅을 할 때 결측값이 있는 관측값은 제외합니다.

알고리즘

모두 축소

잔차 구간

선형 모델에서 y의 관측 값과 그 잔차는 확률 변수입니다. 잔차는 평균이 0이지만 예측 변수의 여러 값에서 다른 분산을 갖는 정규분포를 가집니다. 잔차를 비교 가능한 스케일에 배치하기 위해 regress는 잔차를 “스튜던트화”합니다. 즉, regress는 잔차 값과는 독립적인 표준편차 추정값으로 잔차를 나눕니다. 스튜던트화 잔차는 알려진 자유도를 갖는 t-분포를 가집니다. rint로 반환된 구간은 이러한 t-분포의 100*(1-alpha)% 신뢰구간에 대한 이동 값이며, 잔차에서 중심화됩니다.

대체 기능

regress는 단순히 함수의 출력 인수가 필요하고 루프에서 모델을 여러 차례 반복 피팅하려는 경우에 유용합니다. 피팅된 회귀 모델을 추가로 조사하려면 fitlm 또는 stepwiselm을 사용하여 선형 회귀 모델 객체 LinearModel을 생성하십시오. LinearModel 객체는 regress보다 더 많은 기능을 제공합니다.

  • LinearModel의 속성을 사용하여 피팅된 선형 회귀 모델을 조사하십시오. 객체 속성에는 계수 추정값, 요약 통계량, 피팅 방법 및 입력 데이터에 대한 정보가 포함됩니다.

  • LinearModel의 객체 함수를 사용하여 응답 변수를 예측하고 선형 회귀 모델을 수정, 평가 및 시각화하십시오.

  • regress와 달리 fitlm 함수에는 입력 데이터에 1로 구성된 열이 필요하지 않습니다. fitlm을 사용하여 만든 모델은 'Intercept' 이름-값 쌍의 인수를 사용하여 절편 항을 포함하지 않도록 지정하지 않은 한 항상 절편 항을 포함합니다.

  • LinearModel의 속성 및 객체 함수를 사용하여 regress의 출력값에 있는 정보를 확인할 수 있습니다.

    regress의 출력값LinearModel의 상응하는 값
    bCoefficients 속성의 Estimate 열을 참조하십시오.
    bintcoefCI 함수를 사용하십시오.
    rResiduals 속성의 Raw 열을 참조하십시오.
    rint지원되지 않습니다. 대신 스튜던트화 잔차(Residuals 속성) 및 관측값 진단(Diagnostics 속성)을 사용하여 이상값을 확인하십시오.
    stats명령 창에서 모델 표시 화면을 참조하십시오. 모델 속성(MSERsquared)에서, 그리고 anova 함수를 사용하여 통계량을 확인할 수 있습니다.

참고 문헌

[1] Chatterjee, S., and A. S. Hadi. “Influential Observations, High Leverage Points, and Outliers in Linear Regression.” Statistical Science. Vol. 1, 1986, pp. 379–416.

R2006a 이전에 개발됨