인덱스 배열 초과 관련해서 코드 질문입니다. 왜 이런 문제가 생기나요(데이터 첨부)

126 views (last 30 days)
형현
형현 on 1 Feb 2024
Edited: Angelo Yeo on 2 Feb 2024
% 엑셀 파일 경로 및 시트 이름 설정
file_path = 'KOFR_보완.xlsx';
sheet_name = 'Sheet1';
% 엑셀 파일에서 데이터 가져오기
excel_data = xlsread(file_path, sheet_name);
% 날짜와 KOFR 열 선택
dates = excel_data(:, 1);
kofr_column = excel_data(:, 2);
% ADF 단위근 검정 수행
[h, pValue, stat, cValue, reg] = adftest(kofr_column, 'lags', 0);
% 결과 출력
fprintf('ADF 단위근 검정 결과:\n');
fprintf('검정 통계량 (ADF 통계량): %.4f\n', stat);
fprintf('P-값: %.4f\n', pValue);
fprintf('임계값 (1%%, 5%%, 10%%): %.4f, %.4f, %.4f\n', cValue(1), cValue(2), cValue(3));
% 검정 결과 해석
if h == 0
fprintf('결론: 귀무가설을 기각할 수 없으므로 시계열에는 단위근이 존재합니다.\n');
else
fprintf('결론: 귀무가설을 기각하므로 시계열에는 단위근이 존재하지 않습니다.\n');
end
위치 2의 인덱스가 배열 경계를 초과합니다. 인덱스는 1() 초과해서는 안 됩니다.
1개의 열로 되어있는 변수 KOFR데이터를 가져와서 코드를 돌리는데 자꾸 아래와 같은 오류가 뜹니다...
  1 Comment
형현
형현 on 1 Feb 2024
% 엑셀 파일 경로 및 시트 이름 설정
file_path = 'KOFR_보완.xlsx';
sheet_name = 'Sheet1';
% 엑셀 파일에서 데이터 가져오기
excel_data = xlsread(file_path, sheet_name);
% 시계열 데이터 선택 (가정: 2번째 열)
time_series = excel_data(:, 2);
% 1차 차분 수행
diff_series = diff(time_series, 1);
% 차분된 데이터 출력 또는 저장
disp('1차 차분된 데이터:');
disp(diff_series);
% 차분된 데이터를 엑셀 파일로 저장 (선택 사항)
% writematrix(diff_series, 'KOFR차분.xlsx');
유사하게 동일한 데이터를 가지고 해당 코딩을 돌려도 같은 오류가 계속 나옵니다...

Sign in to comment.

Accepted Answer

Angelo Yeo
Angelo Yeo on 1 Feb 2024
xlsread를 이용해 데이터를 불러올 때 출력값 하나만 사용하게 되면 현재 엑셀 파일에 들어있는 내용 중 숫자만 불러오게 되며 첫 번째 열은 무시됩니다. readtable이 더 좋은 선택으로 보입니다. 아래의 코드를 확인하여 주십시오.
% 엑셀 파일 경로 및 시트 이름 설정
file_path = 'KOFR_보완.xlsx';
sheet_name = 'Sheet1';
% 엑셀 파일에서 데이터 가져오기
excel_data = readtable(file_path)
excel_data = 305×2 table
Date KOFR ___________ _____ 27-Mar-2023 3.387 28-Mar-2023 3.341 29-Mar-2023 3.353 30-Mar-2023 3.356 31-Mar-2023 3.599 01-Apr-2023 3.561 02-Apr-2023 3.523 03-Apr-2023 3.485 04-Apr-2023 3.42 05-Apr-2023 3.419 06-Apr-2023 3.344 07-Apr-2023 3.303 08-Apr-2023 3.306 09-Apr-2023 3.309 10-Apr-2023 3.312 11-Apr-2023 3.313
% 날짜와 KOFR 열 선택
dates = excel_data(:, 1);
kofr_column = table2array(excel_data(:, 2))
kofr_column = 305×1
3.3870 3.3410 3.3530 3.3560 3.5990 3.5610 3.5230 3.4850 3.4200 3.4190
% ADF 단위근 검정 수행
[h, pValue, stat, cValue, reg] = adftest(kofr_column, 'lags', 0);
% 결과 출력
fprintf('ADF 단위근 검정 결과:\n');
ADF 단위근 검정 결과:
fprintf('검정 통계량 (ADF 통계량): %.4f\n', stat);
검정 통계량 (ADF 통계량): -0.0588
fprintf('P-값: %.4f\n', pValue);
P-값: 0.6297
% fprintf('임계값 (1%%, 5%%, 10%%): %.4f, %.4f, %.4f\n', cValue(1), cValue(2), cValue(3));
% 검정 결과 해석
if h == 0
fprintf('결론: 귀무가설을 기각할 수 없으므로 시계열에는 단위근이 존재합니다.\n');
else
fprintf('결론: 귀무가설을 기각하므로 시계열에는 단위근이 존재하지 않습니다.\n');
end
결론: 귀무가설을 기각할 수 없으므로 시계열에는 단위근이 존재합니다.
  2 Comments
형현
형현 on 1 Feb 2024
감사합니다. 추가적으로 첨부한 파일의 양식과 같이 여러개의 열로 구성되어있는 시계열 데이터를
한 번에 adf 검정 하려면 어떻게 해야하는 지도 알 수 있을까요?
비슷한 오류가 지속적으로 나와서 그렇습니다/
Angelo Yeo
Angelo Yeo on 2 Feb 2024
Edited: Angelo Yeo on 2 Feb 2024
@형현: for 문을 이용해서 2번 열부터 마지막 열 까지 각각 검정을 적용할 수 있습니다. 코멘트로 답변이 충분히 되지 못했다고 생각하신다면 질문을 새롭게 만들어주시면 더 좋을 것 같습니다.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!