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

21 vues (au cours des 30 derniers jours)
형현
형현 le 1 Fév 2024
Modifié(e) : Angelo Yeo le 2 Fév 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 commentaire
형현
형현 le 1 Fév 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');
유사하게 동일한 데이터를 가지고 해당 코딩을 돌려도 같은 오류가 계속 나옵니다...

Connectez-vous pour commenter.

Réponse acceptée

Angelo Yeo
Angelo Yeo le 1 Fév 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 commentaires
형현
형현 le 1 Fév 2024
감사합니다. 추가적으로 첨부한 파일의 양식과 같이 여러개의 열로 구성되어있는 시계열 데이터를
한 번에 adf 검정 하려면 어떻게 해야하는 지도 알 수 있을까요?
비슷한 오류가 지속적으로 나와서 그렇습니다/
Angelo Yeo
Angelo Yeo le 2 Fév 2024
Modifié(e) : Angelo Yeo le 2 Fév 2024
@형현: for 문을 이용해서 2번 열부터 마지막 열 까지 각각 검정을 적용할 수 있습니다. 코멘트로 답변이 충분히 되지 못했다고 생각하신다면 질문을 새롭게 만들어주시면 더 좋을 것 같습니다.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 데이터 가져오기와 분석 dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!