Cross-correlation and Auto-correlation for panel dataset

4 ビュー (過去 30 日間)
Simone Lenzu
Simone Lenzu 2011 年 2 月 12 日
回答済み: UDAYA PEDDIRAJU 2025 年 1 月 3 日
Hi all, I would like to computer the cross correlation and autocorrelation function in a panel dataset.
Say I have dataset of time=10 in which 150 persons are monitored. For each person I have two variables x and y, id (telling me the person id) and time (telling the the time shot of the observation). I would like to computer the autocorrelation of x and the cross correlation between x and y. Using the commands autocorr(x) and crosscorr(x,y) would clearly produce a wrong result because matlab does not recognize the panel nature of the dataset, and it would consider the whole vectors x and y as a time series ignoring that it is indeed a time series but for different individuals . Anyone can help me? Thank you
Simone
  1 件のコメント
Florian Floh
Florian Floh 2020 年 4 月 4 日
Please show us your dataset, or your code that you have so far ;)

サインインしてコメントする。

回答 (1 件)

UDAYA PEDDIRAJU
UDAYA PEDDIRAJU 2025 年 1 月 3 日
To compute the autocorrelation and cross-correlation for a panel dataset in MATLAB, you can loop through each individual and calculate the correlations separately. Here's an example of how you can do this:
% Sample data generation
numPersons = 150;
timePoints = 10;
id = repmat((1:numPersons)', timePoints, 1);
time = repmat((1:timePoints)', numPersons, 1);
x = rand(numPersons * timePoints, 1); % Random variable x
y = rand(numPersons * timePoints, 1); % Random variable y
% Initialize arrays to store results
autoCorrResults = zeros(numPersons, 1);
crossCorrResults = zeros(numPersons, 1);
% Loop through each individual
for personId = 1:numPersons
% Extract data for the current individual
x_person = x(id == personId);
y_person = y(id == personId);
% Compute autocorrelation for x
[autoCorr, lags] = autocorr(x_person);
autoCorrResults(personId) = autoCorr(2); % Store lag 1 autocorrelation
% Compute cross-correlation between x and y
[crossCorr, lags] = crosscorr(x_person, y_person);
crossCorrResults(personId) = crossCorr(2); % Store lag 1 cross-correlation
end
% Display results
disp('Autocorrelation results:');
disp(autoCorrResults);
disp('Cross-correlation results:');
disp(crossCorrResults);

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by