2017-10-29 13 views
1

데이터에 선형 회귀 분석을 적용하기 위해 MATLB의 fitlm 함수를 사용하고 있습니다. 이것은 아주 쉽게 이루어집니다. 아직 확실하지 않은 곳에서는 내 데이터를 줄이는 방법이 있습니다. 예를 들어 회귀 테이블에서 아래 코드를 실행하면 회귀선이 절편 = 0.023851 및 기울기 = 0.56421을 가질 것이라고 생각합니다. 그러나 절편과 기울기를 결정하기 위해 MATLAB의 지시 사항을 따르면 (아래 코드 참조) 다른 값을 얻을 수 있습니다. 어느 것이 옳고 그 이유는 무엇입니까?선형 회귀를 플로팅하면 MATLAB이됩니다.

x = [0.0001;0.066578214;0.09611659;0.075839223;0.125;0.037889785;0.070220426;0.070648;0.082886425;0.095050538;0.058966667;0.0456;0.070994624;0.048540228;0.06561828;0.053916667;0.035954301;0.037634409;0.044335551;0.061270917;0.163333333;0.079986559;0.070616667] 

y = [0.082;0.0452;0.072340;0.0543;0.0932;0.0321;0.078;0.06021;0.0734;0.103;0.0436;0.0482;0.08732;0.05421;0.0589;0.04321;0.043215;0.054321;0.05467;0.0432;0.109;0.0723;0.09821] 

mdl = fitlm(x,y,'linear','RobustOpts','on') 

%% plot raw data 
hold on 

plot(x,y,'*') % plot datapoints 

%% as suggested by matlab on https://ch.mathworks.com/help/matlab/data_analysis/linear-regression.html 
X = [ones(length(x),1) x]; 
b = X\y % this is however another intercept as seen in the table! 

yCalc2 = X*b; 
plot(x,yCalc2,'-') 
legend('Data','Slope','Slope & Intercept','Location','best'); 

답변

2

당신은 on로 설정 RobustOpts 값 쌍으로 mdl을 요구하고있다. 이렇게하면 함수가 강력한 피팅 함수를 사용하게됩니다. 따라서 결과는 일반적으로 최소 자승법과 다릅니다. mdl = fitlm(x,y,'linear','RobustOpts','off')을 실행하여 결과가 \ 연산자 (최소 제곱)와 동일한 지 확인하십시오. 어느 값이 "정확하다"고 말할 수 없다면, 그들은 다른 방법, 즉 상이한 피팅 함수를 최적화함으로써 얻어진다.

+0

많은 감사, 나는 그 차이를 이해하고 정말로 열심이었다!! – TestGuest