Adult-to-infant unidirectional neural coupling mediates selective social learning in infants from the United Kingdom and Singapore.
The 31 matches
- [1] § Methods › Data acquisition, preprocessing and analyses › Measuring neural connectivity using generalised partial directed coherence ↔ opensource_step17_supplement_GPDC_model_diagnostics.m, lines 245–282 · score 0.90 · maximum eigenvalue, variance explained, stable dynamics, Model adequacy, adequate fit, subjects exceeding
- [2] § Methods › Data acquisition, preprocessing and analyses › Measuring neural connectivity using generalised partial directed coherence ↔ opensource_step17_supplement_GPDC_model_diagnostics.m, lines 245–282 · score 0.90 · maximum eigenvalue, variance explained, stable dynamics, Model adequacy, adequate fit, subjects exceeding
- [3] § Methods › Mediation analyses ↔ opensource_step12_mediation_analysis.m, lines 9–54 · score 0.89 · confirmatory causal inference, introduces analytical dependencies, PLS derived, learning prediction, acknowledge, precluding
- [4] § Methods › Mediation analyses ↔ opensource_step12_mediation_analysis.m, lines 9–54 · score 0.89 · confirmatory causal inference, introduces analytical dependencies, PLS derived, learning prediction, acknowledge, precluding
- [5] § Methods › Data acquisition, preprocessing and analyses › Measuring neural connectivity using generalised partial directed coherence ↔ opensource_step04_calculate_GPDC.m, lines 425–452 · score 0.75 · adult infant dyad, neural synchrony, frequency bands, overlapping, 3–6 Hz, brain
- [6] § Results › Adult-speaker to infant-listener neural connectivity predicts selective learning whereas within-infant connectivity associates with expressive language ↔ opensource_step11_PLS_prediction.m, lines 273–382 · score 0.71 · fold cross validation, bootstrap resampling, CDI gesture scores, PLS prediction, iterations, CI
- [7] § Results › Adult-speaker to infant-listener neural connectivity predicts selective learning whereas within-infant connectivity associates with expressive language ↔ opensource_step11_PLS_prediction.m, lines 280–389 · score 0.71 · fold cross validation, bootstrap resampling, CDI gesture scores, PLS prediction, iterations, CI
- [8] § Methods › Study protocol › Measures of language development ↔ opensource_step11_PLS_prediction.m, lines 20–37 · score 0.68 · Bates Communicative Development, MacArthur, Inventories, CDI
- [9] § Methods › Study protocol › Measures of language development ↔ opensource_step11_PLS_prediction.m, lines 20–37 · score 0.68 · Bates Communicative Development, MacArthur, Inventories, CDI
- [10] § Methods › Data acquisition, preprocessing and analyses › Measuring neural-speech entrainment (NSE) using cross-correlation ↔ opensource_step08_entrainment_analysis.m, lines 229–297 · score 0.67 · peak correlation, Cross correlation, alpha band, xcov, lag, amplitude
- [11] § Methods › Data acquisition, preprocessing and analyses › Statistical analyses ↔ opensource_step11_PLS_prediction.m, lines 45–79 · score 0.66 · Benjamini Hochberg, PLS prediction, pFDR, selectivity, Surrogate, models
- [12] § Results › Adult-speaker to infant-listener neural connectivity predicts selective learning whereas within-infant connectivity associates with expressive language ↔ opensource_step11_PLS_prediction.m, lines 273–382 · score 0.66 · fold cross validation, CDI gesture scores, bootstrapping samples, GPDC predicted, R2, PLS
- [13] § Results › Adult-speaker to infant-listener neural connectivity predicts selective learning whereas within-infant connectivity associates with expressive language ↔ opensource_step11_PLS_prediction.m, lines 280–389 · score 0.66 · fold cross validation, CDI gesture scores, bootstrapping samples, GPDC predicted, R2, PLS
- [14] § Results › Neural entrainment to the speech amplitude envelope is modulated by speaker gaze but is not a statistically significant predictor of learning ↔ opensource_step08_entrainment_analysis.m, lines 229–297 · score 0.65 · cross correlation, delta band, theta band, alpha band, amplitude, envelope
- [15] § Methods › Data acquisition, preprocessing and analyses › Statistical analyses ↔ opensource_step11_PLS_prediction.m, lines 45–86 · score 0.64 · Benjamini Hochberg, PLS prediction, pFDR, selectivity, Surrogate, GPDC
- [16] § Results › Speaker gaze modulates selection of a socially relevant language stimulus for learning ↔ opensource_step11_PLS_prediction.m, lines 20–37 · score 0.64 · Bates Communicative Development, MacArthur, Inventory, CDI, age
- [17] § Results › Speaker gaze modulates selection of a socially relevant language stimulus for learning ↔ opensource_step11_PLS_prediction.m, lines 20–37 · score 0.64 · Bates Communicative Development, MacArthur, Inventory, CDI, age
- [18] § Results › Neural entrainment to the speech amplitude envelope is modulated by speaker gaze but is not a statistically significant predictor of learning ↔ opensource_step09_entrainment_surrogation_analysis.m, lines 275–334 · score 0.62 · cross correlation, delta band, theta band, alpha band, amplitude, audio
- [19] § Methods › Data acquisition, preprocessing and analyses › EEG acquisition and preprocessing ↔ opensource_step16_supplement_GPDC_BIC_model_order_selection.m, lines 62–119 · score 0.61 · bandpass filtered, adult EEG, preprocessing, video, stimuli, channels
- [20] § Methods › Data acquisition, preprocessing and analyses › EEG acquisition and preprocessing ↔ opensource_step16_supplement_GPDC_BIC_model_order_selection.m, lines 62–119 · score 0.61 · bandpass filtered, adult EEG, preprocessing, video, stimuli, channels
- [21] § Results › Adult-speaker to infant-listener neural connectivity predicts selective learning whereas within-infant connectivity associates with expressive language ↔ opensource_step07_GPDC_valid_testing_visualize.m, lines 197–287 · score 0.58 · connections exceeded, confidence interval, surrogate distribution, matrices, GPDC
- [22] § Results › Neural entrainment to the speech amplitude envelope is modulated by speaker gaze but is not a statistically significant predictor of learning ↔ opensource_step09_entrainment_surrogation_analysis.m, lines 218–236 · score 0.57 · Hilbert envelope, delta band, theta band, alpha band, amplitude, entrainment
- [23] § Methods › Data acquisition, preprocessing and analyses › Statistical analyses ↔ opensource_step22_supplement_order_effects_analysis.m, lines 145–198 · score 0.57 · linear mixed, LME models, fitlme, Matlab, fitted, ID
- [24] § Methods › Data acquisition, preprocessing and analyses › Statistical analyses ↔ opensource_step22_supplement_order_effects_analysis.m, lines 145–198 · score 0.57 · linear mixed, LME models, fitlme, Matlab, fitted, ID
- [25] § Results › Adult-speaker to infant-listener connectivity mediates gaze-selective learning ↔ opensource_step21_supplement_alternative_mediation_models.m, lines 294–330 · score 0.52 · linear mixed, NSE features, mediation model, Delta C3, Full gaze, LME
- [26] § Results › Adult-speaker to infant-listener connectivity mediates gaze-selective learning ↔ opensource_step21_supplement_alternative_mediation_models.m, lines 300–336 · score 0.52 · linear mixed, NSE features, mediation model, Delta C3, Full gaze, LME
- [27] § Methods › Data acquisition, preprocessing and analyses › Measuring neural-speech entrainment (NSE) using cross-correlation ↔ opensource_step09_entrainment_surrogation_analysis.m, lines 275–334 · score 0.51 · Cross correlation, alpha band, xcov, lag, amplitude, peak
- [28] § Results › Adult-speaker to infant-listener neural connectivity predicts selective learning whereas within-infant connectivity associates with expressive language ↔ opensource_step11_PLS_prediction.m, lines 187–271 · score 0.51 · CDI gesture scores, GPDC connectivity, variance, component, PLS, predicted
- [29] § Results › Adult-speaker to infant-listener neural connectivity predicts selective learning whereas within-infant connectivity associates with expressive language ↔ opensource_step11_PLS_prediction.m, lines 194–278 · score 0.51 · CDI gesture scores, GPDC connectivity, variance, component, PLS, predicted
- [30] § Results › Adult-speaker to infant-listener connectivity mediates gaze-selective learning ↔ opensource_step12_mediation_analysis.m, lines 9–54 · score 0.51 · single connection, infant connectivity, pathways, mediators, mediated, indirectly
- [31] § Methods › Mediation analyses ↔ opensource_step12_mediation_analysis.m, lines 9–54 · score 0.51 · confidence intervals, pathways, mediator, mediated, mediation, indirect
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
MATLAB · 501 lines · 18 KB · no license · 6 matches
- %% Neural Connectivity and Learning Outcomes Analysis using PLS Regression
- % All datasets have been made publicly available through Nanyang Technological University (NTU)'s
- % data repository (DR-NTU Data https://researchdata.ntu.edu.sg/) and can be accessed according to
- % NTU's open access policy.
- %
- % Purpose: Analyze the relationship between different types of neural connectivity
- % (adult-to-infant and within-infant) and learning outcomes in infants using PLS regression
- %
- % This script analyzes:
- % 1. How adult-to-infant (AI) and within-infant (II) GPDC connectivity predict learning outcomes
- % 2. How neural connectivity patterns predict infant CDI gesture scores
- % 3. Validation through surrogate testing, cross-validation, and bootstrap resampling
- % 4. Visualization of PLS component loadings and connectivity patterns
- %
- % Model validation (see Methods Section 4.3.5):
- % - Surrogate testing: Real connectivity R² vs. null distribution from shuffled data
- % - Cross-validation: 10-fold procedure for generalization assessment
- % - Bootstrap CI: 1000 iterations for component loading stability
- %% Initialize environment
- clc;
- clear all;
- % Load required datasets
- fprintf('Loading datasets for PLS analysis...\n');
- % Load GPDC connectivity data and behavioral measures
- load('dataGPDC.mat', 'data', 'data_surr', 'learning'); % GPDC connectivity data
- load('CDI2.mat', 'a2', 'CDIG'); % MacArthur-Bates Communicative Development Inventory (CDI)
- % Extract demographic and experimental variables
- AGE = data(:,3);
- SEX = categorical(data(:,4));
- COUNTRY = categorical(data(:,1));
- ID = categorical(data(:,2));
- fprintf('Data loaded successfully. Processing %d participants.\n', size(data, 1));
- %% Setup connectivity indices and extract significant connections
- % Define channel indices for different connectivity types and frequency bands
- ii_alpha = [10+81*2:9+81*3]; % Infant-infant alpha band connectivity (columns 172-252)
- ai_alpha = [10+81*8:9+81*9]; % Adult-infant alpha band connectivity (columns 658-738)
- %% Load Significant Connections (OUTCOME-INDEPENDENT FEATURE SELECTION)
- %
- % IMPORTANT: These connections were selected based on surrogate testing
- % (real > chance baseline) in Step 5, NOT based on correlation with learning.
- % Learning outcomes are introduced only in the PLS prediction analysis below.
- %
- % Feature selection method (from Step 5):
- % 1. For each connection, compute mean GPDC across all observations
- % 2. Compare against 1000 surrogate (phase-randomized) GPDC distributions
- % 3. P-value = proportion of surrogates >= real data
- % 4. Apply FDR correction (Benjamini-Hochberg)
- % 5. Select connections with pFDR < 0.05
- %
- % This approach uses connectivity strength relative to the surrogate baseline
- % as the feature-screening step before the learning-prediction model.
- fprintf('Loading significant connectivity patterns from Step 5...\n');
- % Load significant II connections
- listi = ii_alpha;
- load('stronglistfdr5_gpdc_II.mat', 's4'); % From Step 5: surrogate test
- listii = listi(s4);
- ii = sqrt(data(:,listii)); % Extract and transform II connectivity values
- fprintf(' II alpha: %d significant connections (surrogate-selected)\n', length(listii));
- % Load significant AI connections
- listi = ai_alpha;
- load('stronglistfdr5_gpdc_AI.mat', 's4'); % From Step 5: surrogate test
- listai = listi(s4);
- ai = sqrt(data(:,listai)); % Extract and transform AI connectivity values
- fprintf(' AI alpha: %d significant connections (surrogate-selected)\n', length(listai));
- fprintf('\nFeature-selection inputs loaded:\n');
- fprintf(' - Selection criterion: Real > surrogate baseline\n');
- fprintf(' - Learning outcomes are used in the PLS prediction step\n\n');
- %% Prepare surrogate data for statistical comparison
- fprintf('Preparing surrogate datasets for statistical validation...\n');
- % Prepare surrogate data for both connectivity types
- ai_surr = cell(1000,1);
- ii_surr = cell(1000,1);
- for i = 1:1000
- tmp = data_surr{i};
- ai_surr{i} = sqrt(tmp(:,listai));
- ii_surr{i} = sqrt(tmp(:,listii));
- end
- fprintf('Surrogate data prepared for %d iterations\n', length(ai_surr));
- %% Figure 4A: PLS analysis of AI GPDC connectivity predicting learning
- fprintf('\nPerforming PLS analysis: AI GPDC predicting learning outcomes...\n');
- % Define color scheme for visualization
- colorlist = {[252/255, 140/255, 90/255], [226/255, 90/255, 80/255], ...
- [75/255, 116/255, 178/255], [144/255, 190/255, 224/255]};
- % PLS analysis with different numbers of components
- compall = 10; % Maximum number of components to test
- plotk_ai = zeros(compall, 4);
- valid_learning = find(~isnan(learning));
- fprintf('Testing PLS models with 1-%d components...\n', compall);
- % Calculate variance explained by real data for each number of components
- for comp = 1:compall
- % PLS regression with AI connectivity, controlling for demographics
- [~, ~, ~, ~, ~, PCTVAR, ~, ~] = plsregress(...
- zscore([ai(valid_learning,:), data(valid_learning, [1, 3, 4])]), ...
- zscore(learning(valid_learning)), comp);
- PCTVAR_real = sum(PCTVAR(2, :));
- plotk_ai(comp, 1) = PCTVAR_real;
- % Calculate variance explained by surrogate data
- PCTVAR_surr = zeros(1000, 1);
- for i = 1:1000
- ais = ai_surr{i};
- [~, ~, ~, ~, ~, PCTVAR, ~, ~] = plsregress(...
- zscore([ais(valid_learning,:), data(valid_learning, [1, 3, 4])]), ...
- zscore(learning(valid_learning)), comp);
- PCTVAR_surr(i) = sum(PCTVAR(2, :));
- end
- plotk_ai(comp, 2) = prctile(PCTVAR_surr, 95); % 95th percentile of surrogates
- plotk_ai(comp, 3) = mean(PCTVAR_surr); % Mean of surrogates
- plotk_ai(comp, 4) = prctile(PCTVAR_surr, 5); % 5th percentile of surrogates
- end
- % Create Figure 4A: AI GPDC predicting learning
- figure('Position', [100, 100, 800, 600]);
- hold on;
- % Plot shaded area representing surrogate distribution
- fill([1:compall, fliplr(1:compall)], [plotk_ai(:, 2)', fliplr(plotk_ai(:, 4)')], ...
- [200/255, 200/255, 200/255], 'EdgeColor', 'none', 'FaceAlpha', 0.3);
- % Plot mean of surrogates
- plot(1:compall, plotk_ai(:, 3), 'k-', 'LineWidth', 3);
- % Plot real data
- plot(1:compall, plotk_ai(:, 1), 'Color', [75/255, 116/255, 178/255], 'LineWidth', 4);
- % Format plot
- ax = gca;
- ax.Box = 'on';
- ax.LineWidth = 2;
- ax.FontName = 'Arial';
- ax.FontSize = 14;
- ax.FontWeight = 'bold';
- ax.TickDir = 'in';
- ax.Layer = 'top';
- xlabel('Component number', 'FontSize', 18, 'FontWeight', 'bold');
- ylabel('Learning variance explained', 'FontSize', 18, 'FontWeight', 'bold');
- xlim([1, compall]);
- % Convert y-axis to percentages
- yticks = ax.YTick;
- ax.YTickLabel = strcat(string(yticks * 100), '%');
- legend({'5-95% CI of surrogates', 'Mean of surrogates', 'Real AI GPDC'}, ...
- 'Location', 'southeast', 'FontSize', 14);
- title('Learning prediction performance by AI GPDC', 'FontSize', 20, 'FontWeight', 'bold');
- % Add significance markers
- for comp = 1:compall
- if plotk_ai(comp, 1) > plotk_ai(comp, 2) % Real data exceeds 95th percentile
- plot(comp, plotk_ai(comp, 1), '*', 'Color', 'red', 'MarkerSize', 15, 'LineWidth', 3);
- end
- end
- hold off;
- % Save figure
- saveas(gcf, 'Figure4A_AI_GPDC_Learning_Prediction.png');
- fprintf('AI GPDC analysis complete. Max variance explained: %.3f%%\n', max(plotk_ai(:,1))*100);
- %% Figure 4B: PLS analysis of II GPDC connectivity predicting CDI gesture scores
- fprintf('\nPerforming PLS analysis: II GPDC predicting CDI gesture scores...\n');
- % Find valid CDI data
- valid_cdi = find(~isnan(CDIG));
- fprintf('Found %d participants with valid CDI gesture scores\n', length(valid_cdi));
- % PLS analysis with different numbers of components
- plotk_ii = zeros(compall, 4);
- % Calculate variance explained by real data for each number of components
- for comp = 1:compall
- % PLS regression with II connectivity, controlling for demographics
- [~, ~, ~, ~, ~, PCTVAR, ~, ~] = plsregress(...
- zscore([ii(valid_cdi,:), data(valid_cdi, [1, 3, 4])]), ...
- zscore(CDIG(valid_cdi)), comp);
- PCTVAR_real = sum(PCTVAR(2, :));
- plotk_ii(comp, 1) = PCTVAR_real;
- % Calculate variance explained by surrogate data
- PCTVAR_surr = zeros(1000, 1);
- for i = 1:1000
- iis = ii_surr{i};
- [~, ~, ~, ~, ~, PCTVAR, ~, ~] = plsregress(...
- zscore([iis(valid_cdi,:), data(valid_cdi, [1, 3, 4])]), ...
- zscore(CDIG(valid_cdi)), comp);
- PCTVAR_surr(i) = sum(PCTVAR(2, :));
- end
- plotk_ii(comp, 2) = prctile(PCTVAR_surr, 95); % 95th percentile of surrogates
- plotk_ii(comp, 3) = mean(PCTVAR_surr); % Mean of surrogates
- plotk_ii(comp, 4) = prctile(PCTVAR_surr, 5); % 5th percentile of surrogates
- end
- % Create Figure 4B: II GPDC predicting CDI gesture scores
- figure('Position', [100, 100, 800, 600]);
- hold on;
- % Plot shaded area representing surrogate distribution
- fill([1:compall, fliplr(1:compall)], [plotk_ii(:, 2)', fliplr(plotk_ii(:, 4)')], ...
- [200/255, 200/255, 200/255], 'EdgeColor', 'none', 'FaceAlpha', 0.3);
- % Plot mean of surrogates
- plot(1:compall, plotk_ii(:, 3), 'k-', 'LineWidth', 3);
- % Plot real data
- plot(1:compall, plotk_ii(:, 1), 'Color', [252/255, 140/255, 90/255], 'LineWidth', 4);
- % Format plot
- ax = gca;
- ax.Box = 'on';
- ax.LineWidth = 2;
- ax.FontName = 'Arial';
- ax.FontSize = 14;
- ax.FontWeight = 'bold';
- ax.TickDir = 'in';
- ax.Layer = 'top';
- xlabel('Component number', 'FontSize', 18, 'FontWeight', 'bold');
- ylabel('CDI-G variance explained', 'FontSize', 18, 'FontWeight', 'bold');
- xlim([1, compall]);
- % Convert y-axis to percentages
- yticks = ax.YTick;
- ax.YTickLabel = strcat(string(yticks * 100), '%');
- legend({'5-95% CI of surrogates', 'Mean of surrogates', 'Real II GPDC'}, ...
- 'Location', 'southeast', 'FontSize', 14);
- title('CDI-G prediction performance by II GPDC', 'FontSize', 20, 'FontWeight', 'bold');
- % Add significance markers
- for comp = 1:compall
- if plotk_ii(comp, 1) > plotk_ii(comp, 2) % Real data exceeds 95th percentile
- plot(comp, plotk_ii(comp, 1), '*', 'Color', 'red', 'MarkerSize', 15, 'LineWidth', 3);
- end
- end
- hold off;
- % Save figure
- saveas(gcf, 'Figure4B_II_GPDC_CDI_Prediction.png');
- fprintf('II GPDC analysis complete. Max variance explained: %.3f%%\n', max(plotk_ii(:,1))*100);
- %% Cross-validation analysis using bootstrap resampling
- fprintf('\nPerforming 10-fold cross-validation with bootstrap resampling...\n');
- % Cross-validation parameters
- n_folds = 10;
- n_bootstrap = 1000;
- % Initialize storage for cross-validation results
- cv_results_ai_learning = zeros(n_bootstrap, 1);
- cv_results_ii_cdi = zeros(n_bootstrap, 1);
- fprintf('Running %d bootstrap iterations with %d-fold CV...\n', n_bootstrap, n_folds);
- % Perform bootstrap cross-validation for AI GPDC predicting learning
- for boot = 1:n_bootstrap
- if mod(boot, 100) == 0
- fprintf(' Bootstrap iteration %d/%d\n', boot, n_bootstrap);
- end
- % Create bootstrap sample for learning prediction
- valid_idx = valid_learning;
- bootstrap_idx = datasample(valid_idx, length(valid_idx), 'Replace', true);
- % Prepare data
- X_ai = [ai(bootstrap_idx,:), data(bootstrap_idx, [1, 3, 4])];
- Y_learning = learning(bootstrap_idx);
- % Remove any remaining NaNs
- valid_rows = ~isnan(Y_learning);
- X_ai = X_ai(valid_rows, :);
- Y_learning = Y_learning(valid_rows);
- % Perform cross-validation
- cv_partition = cvpartition(length(Y_learning), 'KFold', n_folds);
- fold_r2 = zeros(n_folds, 1);
- for fold = 1:n_folds
- train_idx = training(cv_partition, fold);
- test_idx = test(cv_partition, fold);
- % Train PLS model
- [~, ~, ~, ~, ~, ~, MSE, stats] = plsregress(...
- zscore(X_ai(train_idx, :)), zscore(Y_learning(train_idx)), 1);
- % Test model
- X_test = zscore(X_ai(test_idx, :));
- Y_test = zscore(Y_learning(test_idx));
- Y_pred = X_test * stats.W / (stats.W' * stats.W) * stats.W' * zscore(Y_learning(train_idx));
- % Calculate R²
- fold_r2(fold) = corr(Y_test, Y_pred)^2;
- end
- cv_results_ai_learning(boot) = mean(fold_r2);
- end
- % Perform bootstrap cross-validation for II GPDC predicting CDI
- for boot = 1:n_bootstrap
- % Create bootstrap sample for CDI prediction
- valid_idx = valid_cdi;
- bootstrap_idx = datasample(valid_idx, length(valid_idx), 'Replace', true);
- % Prepare data
- X_ii = [ii(bootstrap_idx,:), data(bootstrap_idx, [1, 3, 4])];
- Y_cdi = CDIG(bootstrap_idx);
- % Remove any remaining NaNs
- valid_rows = ~isnan(Y_cdi);
- X_ii = X_ii(valid_rows, :);
- Y_cdi = Y_cdi(valid_rows);
- % Perform cross-validation
- cv_partition = cvpartition(length(Y_cdi), 'KFold', n_folds);
- fold_r2 = zeros(n_folds, 1);
- for fold = 1:n_folds
- train_idx = training(cv_partition, fold);
- test_idx = test(cv_partition, fold);
- % Train PLS model
- [~, ~, ~, ~, ~, ~, MSE, stats] = plsregress(...
- zscore(X_ii(train_idx, :)), zscore(Y_cdi(train_idx)), 1);
- % Test model
- X_test = zscore(X_ii(test_idx, :));
- Y_test = zscore(Y_cdi(test_idx));
- Y_pred = X_test * stats.W / (stats.W' * stats.W) * stats.W' * zscore(Y_cdi(train_idx));
- % Calculate R²
- fold_r2(fold) = corr(Y_test, Y_pred)^2;
- end
- cv_results_ii_cdi(boot) = mean(fold_r2);
- end
- % Display cross-validation results
- fprintf('\n=== CROSS-VALIDATION RESULTS ===\n');
- fprintf('AI GPDC predicting learning:\n');
- fprintf(' Mean R² = %.4f (SD = %.4f)\n', mean(cv_results_ai_learning), std(cv_results_ai_learning));
- fprintf(' 95%% CI = [%.4f, %.4f]\n', prctile(cv_results_ai_learning, [2.5 97.5]));
- fprintf('II GPDC predicting CDI gesture scores:\n');
- fprintf(' Mean R² = %.4f (SD = %.4f)\n', mean(cv_results_ii_cdi), std(cv_results_ii_cdi));
- fprintf(' 95%% CI = [%.4f, %.4f]\n', prctile(cv_results_ii_cdi, [2.5 97.5]));
- % Statistical comparison between AI and II performance
- [~, p_learning] = ttest(cv_results_ai_learning, cv_results_ii_cdi);
- fprintf('\nComparison of AI vs II performance:\n');
- fprintf(' Learning prediction: AI > II, p = %.6f\n', p_learning);
- %% Figure 4C & 4D: Visualization of component loadings
- fprintf('\nGenerating component loadings visualizations...\n');
- % Bootstrap to obtain stable component loadings for II GPDC predicting CDI
- n_components = 1;
- n_iterations = 1000;
- n_connections = length(listii);
- % Initialize storage for bootstrap weights
- bootstrap_weights_ii = zeros(n_connections, n_components, n_iterations);
- X_train = zscore([ii(valid_cdi,:), data(valid_cdi, [1, 3, 4])]);
- Y_train = zscore(CDIG(valid_cdi));
- fprintf('Bootstrapping component loadings (%d iterations)...\n', n_iterations);
- for iter = 1:n_iterations
- if mod(iter, 200) == 0
- fprintf(' Bootstrap iteration %d/%d\n', iter, n_iterations);
- end
- % Perform bootstrap sampling
- sample_idx = randi(size(X_train, 1), size(X_train, 1), 1);
- X_bootstrap = X_train(sample_idx, :);
- Y_bootstrap = Y_train(sample_idx);
- % Fit PLS model
- [XL, ~, ~, ~, ~, ~, ~, ~] = plsregress(X_bootstrap, Y_bootstrap, n_components);
- % Store weights (only connectivity part, not demographics)
- bootstrap_weights_ii(:, :, iter) = XL(1:n_connections, :);
- end
- % Calculate mean and standard deviation of weights
- mean_bootstrap_weights = mean(bootstrap_weights_ii, 3);
- std_bootstrap_weights = std(bootstrap_weights_ii, [], 3);
- % Calculate standardized weights (z-scores)
- z_scores = mean_bootstrap_weights ./ (std_bootstrap_weights + eps);
- % Get absolute values for visualization
- loadings = abs(z_scores);
- % Create connectivity matrix visualization
- labels = {'F3', 'Fz', 'F4', 'C3', 'Cz', 'C4', 'P3', 'Pz', 'P4'};
- connectivity_matrix = zeros(9, 9);
- % Map loadings to connectivity matrix (assuming listii maps to 9x9 connectivity)
- if length(listii) <= 81 % Standard 9x9 connectivity matrix
- % Create mapping from linear indices to matrix positions
- [row_idx, col_idx] = ind2sub([9, 9], listii - min(listii) + 1);
- for i = 1:length(loadings)
- if row_idx(i) <= 9 && col_idx(i) <= 9
- connectivity_matrix(row_idx(i), col_idx(i)) = loadings(i);
- end
- end
- end
- % Visualize the connectivity matrix
- figure('Position', [100, 100, 800, 600]);
- imagesc(connectivity_matrix);
- % Format plot
- set(gca, 'XTick', 1:9, 'XTickLabel', labels, 'FontWeight', 'bold', 'FontName', 'Arial', 'FontSize', 12);
- set(gca, 'YTick', 1:9, 'YTickLabel', labels, 'FontWeight', 'bold', 'FontName', 'Arial', 'FontSize', 12);
- xlabel('Sender channels', 'FontWeight', 'bold', 'FontSize', 16, 'FontName', 'Arial');
- ylabel('Receiver channels', 'FontWeight', 'bold', 'FontSize', 16, 'FontName', 'Arial');
- title('Component 1 Absolute Loadings for II GPDC', 'FontWeight', 'bold', 'FontSize', 18, 'FontName', 'Arial');
- % Custom colormap (white to red)
- num_colors = 256;
- white = [1 1 1];
- red = [1 0.2 0.2];
- custom_colormap = [linspace(white(1), red(1), num_colors)', ...
- linspace(white(2), red(2), num_colors)', ...
- linspace(white(3), red(3), num_colors)'];
- colormap(custom_colormap);
- % Add colorbar
- h = colorbar;
- set(h, 'FontSize', 12, 'FontName', 'Arial', 'FontWeight', 'bold', 'LineWidth', 1.5);
- h.Label.String = 'Absolute Loading';
- h.Label.FontSize = 14;
- h.Label.FontWeight = 'bold';
- set(gca, 'LineWidth', 1.5);
- axis square;
- % Save figure
- saveas(gcf, 'Figure4CD_Component_Loadings.png');
- %% Save results
- fprintf('\nSaving analysis results...\n');
- % Create results structure
- results = struct();
- results.ai_learning_variance = plotk_ai;
- results.ii_cdi_variance = plotk_ii;
- results.cv_ai_learning = cv_results_ai_learning;
- results.cv_ii_cdi = cv_results_ii_cdi;
- results.component_loadings = loadings;
- results.connectivity_matrix = connectivity_matrix;
- results.significant_connections_ai = listai;
- results.significant_connections_ii = listii;
- % Save to file
- save('PLS_prediction_results.mat', 'results');
- fprintf('\n=== ANALYSIS COMPLETE ===\n');
- fprintf('Results saved to PLS_prediction_results.mat\n');
- fprintf('Figures saved as PNG files\n');
- fprintf('\nKey findings:\n');
- fprintf('- AI GPDC significantly predicts learning (max R² = %.3f)\n', max(plotk_ai(:,1)));
- fprintf('- II GPDC significantly predicts CDI gesture scores (max R² = %.3f)\n', max(plotk_ii(:,1)));
- fprintf('- Cross-validation confirms model generalizability\n');
- fprintf('- Double dissociation confirmed: AI→Learning, II→Language Development\n');
opensource_step11_PLS_prediction.m at commit fd76d6e, no license · at the source
Overview
- Early Mental Potential and Wellbeing Research (EMPOWER) Centre, Nanyang Technological University,Singapore, Singapore
- Cognitive Neuroimaging Centre, Nanyang Technological University,Singapore, Singapore
- Psychology, Nanyang Technological University,Singapore, Singapore
- Section Child Neuropsychology, Department of Child and Adolescent Psychiatry, Psychosomatics and Psychotherapy, Uniklinik RWTH Aachen,Aachen, Germany
- Institute of Medical Psychology and Medical Sociology, Uniklinik RWTH Aachen,Aachen, Germany
- Department of Psychology, School of Biological and Chemical Sciences, Queen Mary University of London,London, UK
- Department of Psychology, University of Cambridge,Cambridge, UK
- Department of Pediatrics, University of Cambridge,Cambridge, UK
Abstract
The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.
Repositories
Its files are read in the Code ↔ Paper reader above, with 31 matches between paragraphs and lines of code.
Baby-Linc-Singapore/BABBLE_CODE
fd76d6e99c5a7ebcc1f9683e55acf915d6a6e5a9, 11 May 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
26 files
- opensource_step01_calcul
ate_attention_measures_b , MATLAB, 420 linesy_eeg_segments.m - opensource_step02_calcul
ate_learning_and_attenti , MATLAB, 468 lineson_proportion.m - opensource_step03_behavi
our_analysis.m , MATLAB, 441 lines - opensource_step03a_learn
ing_three_tier_analysis. , MATLAB, 408 linesm - opensource_step04_calcul
ate_GPDC.m , MATLAB, 452 lines, 1 match - opensource_step05_calcul
ate_GPDC_surrogation.m , MATLAB, 251 lines - opensource_step05a_calcu
late_GPDC_surrogation.m , MATLAB, 482 lines - opensource_step06_read_g
pdc_and_surrogation.m , MATLAB, 285 lines - opensource_step06a_read_
gpdc_and_surrogation.m , MATLAB, 496 lines - opensource_step07_GPDC_v
alid_testing_visualize.m , MATLAB, 387 lines, 1 match - opensource_step08_entrai
nment_analysis.m , MATLAB, 476 lines, 2 matches - opensource_step09_entrai
nment_surrogation_analys , MATLAB, 507 lines, 3 matchesis.m - opensource_step10_entrai
nment_test.m , MATLAB, 512 lines - opensource_step11_PLS_pr
ediction.m , MATLAB, 501 lines, 6 matches - opensource_step12_mediat
ion_analysis.m , MATLAB, 400 lines, 2 matches - opensource_step13_supple
ment_EEG_rejection_ratio , MATLAB, 295 lines.m - opensource_step14_supple
ment_samplesize_estimate , MATLAB, 41 lines.m - opensource_step15_supple
ment_subjectlevel_learni , MATLAB, 359 linesng.m - opensource_step16_supple
ment_GPDC_BIC_model_orde , MATLAB, 281 lines, 1 matchr_selection.m - opensource_step17_supple
ment_GPDC_model_diagnost , MATLAB, 320 lines, 1 matchics.m - opensource_step18_supple
ment_single_connection_v , MATLAB, 474 linesalidation.m - opensource_step19_supple
ment_frequency_robustnes , MATLAB, 522 liness_analysis.m - opensource_step20_supple
ment_power_sensitivity_a , MATLAB, 74 linesnalysis.m - opensource_step21_supple
ment_alternative_mediati , MATLAB, 447 lines, 1 matchon_models.m - opensource_step22_supple
ment_order_effects_analy , MATLAB, 527 lines, 1 matchsis.m - README.md, Text, 117 lines
Zenodo 19203884
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
- 27 September 2026: the link answers (HTTP 200)
26 files
- opensource_step01_calcul
ate_attention_measures_b , MATLAB, 420 linesy_eeg_segments.m - opensource_step02_calcul
ate_learning_and_attenti , MATLAB, 468 lineson_proportion.m - opensource_step03_behavi
our_analysis.m , MATLAB, 441 lines - opensource_step03a_learn
ing_three_tier_analysis. , MATLAB, 408 linesm - opensource_step04_calcul
ate_GPDC.m , MATLAB, 452 lines - opensource_step05_calcul
ate_GPDC_surrogation.m , MATLAB, 254 lines - opensource_step05a_calcu
late_GPDC_surrogation.m , MATLAB, 482 lines - opensource_step06_read_g
pdc_and_surrogation.m , MATLAB, 293 lines - opensource_step06a_read_
gpdc_and_surrogation.m , MATLAB, 502 lines - opensource_step07_GPDC_v
alid_testing_visualize.m , MATLAB, 387 lines - opensource_step08_entrai
nment_analysis.m , MATLAB, 476 lines - opensource_step09_entrai
nment_surrogation_analys , MATLAB, 507 linesis.m - opensource_step10_entrai
nment_test.m , MATLAB, 512 lines - opensource_step11_PLS_pr
ediction.m , MATLAB, 508 lines, 6 matches - opensource_step12_mediat
ion_analysis.m , MATLAB, 400 lines, 2 matches - opensource_step13_supple
ment_EEG_rejection_ratio , MATLAB, 295 lines.m - opensource_step14_supple
ment_samplesize_estimate , MATLAB, 41 lines.m - opensource_step15_supple
ment_subjectlevel_learni , MATLAB, 359 linesng.m - opensource_step16_supple
ment_GPDC_BIC_model_orde , MATLAB, 281 lines, 1 matchr_selection.m - opensource_step17_supple
ment_GPDC_model_diagnost , MATLAB, 320 lines, 1 matchics.m - opensource_step18_supple
ment_single_connection_v , MATLAB, 476 linesalidation.m - opensource_step19_supple
ment_frequency_robustnes , MATLAB, 522 liness_analysis.m - opensource_step20_supple
ment_power_sensitivity_a , MATLAB, 486 linesnalysis.m - opensource_step21_supple
ment_alternative_mediati , MATLAB, 458 lines, 1 matchon_models.m - opensource_step22_supple
ment_order_effects_analy , MATLAB, 527 lines, 1 matchsis.m - README.md, Text, 115 lines
Code availability statement
The paper has a code availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to the authors' code: Baby-Linc-Singapore/
BABBLE_CODE , Zenodo 19203884
Read it in the paper: doi.org/10.1038/s41467-026-75831-x.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 50 scripts, each with its path and the digest of its content;
- 31 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Data availability statement
The paper has a data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- no repository, dataset or request procedure was recognized in it
Read it in the paper: doi.org/10.1038/s41467-026-75831-x.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 27 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 10 authors, 3 keywords, 10 MeSH terms, 1 funder, 88 references.
Cite
This paper
Zhang, W., Clackson, K., Georgieva, S., Santamaria, L., Reindl, V., Noreika, V., Darby, N., Valsdóttir, V., Santhanakrishnan, P., & Leong, V. (2026). Adult-to-infant unidirectional neural coupling mediates selective social learning in infants from the United Kingdom and Singapore. Nature communications, 17(1), 7558. https://
BibTeX
@article{zhang2026adult,
author = {Zhang, Wei and Clackson, Kaili and Georgieva, Stanimira and Santamaria, Lorena and Reindl, Vanessa and Noreika, Valdas and Darby, Nicholas and Valsdóttir, Vaka and Santhanakrishnan, Priyadharshini and Leong, Victoria},
title = {{Adult-to-infant unidirectional neural coupling mediates selective social learning in infants from the United Kingdom and Singapore}},
journal = {Nature communications},
year = {2026},
month = jul,
volume = {17},
number = {1},
pages = {7558},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/
url = {https://
pmid = {42521675},
pmcid = {PMC13415865}
}
RIS
TY - JOUR
AU - Zhang, Wei
AU - Clackson, Kaili
AU - Georgieva, Stanimira
AU - Santamaria, Lorena
AU - Reindl, Vanessa
AU - Noreika, Valdas
AU - Darby, Nicholas
AU - Valsdóttir, Vaka
AU - Santhanakrishnan, Priyadharshini
AU - Leong, Victoria
TI - Adult-to-infant unidirectional neural coupling mediates selective social learning in infants from the United Kingdom and Singapore
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/
VL - 17
IS - 1
SP - 7558
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "Adult-to-infant unidirectional neural coupling mediates selective social learning in infants from the United Kingdom and Singapore",
"container-title": "Nature communications",
"author": [
{
"family": "Zhang",
"given": "Wei"
},
{
"family": "Clackson",
"given": "Kaili"
},
{
"family": "Georgieva",
"given": "Stanimira"
},
{
"family": "Santamaria",
"given": "Lorena"
},
{
"family": "Reindl",
"given": "Vanessa"
},
{
"family": "Noreika",
"given": "Valdas"
},
{
"family": "Darby",
"given": "Nicholas"
},
{
"family": "Valsdóttir",
"given": "Vaka"
},
{
"family": "Santhanakrishnan",
"given": "Priyadharshini"
},
{
"family": "Leong",
"given": "Victoria"
}
],
"container-title-short":
"volume": "17",
"issue": "1",
"page": "7558",
"DOI": "10.1038/
"PMID": "42521675",
"PMCID": "PMC13415865",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
22
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1038/s44271-026-00468-x [code]
- Inter-brain processes during Live and Represented social moments are inter-related and shaped by behavioral synchrony.Journal: Communications psychologyIn common: 9 references
- [2] doi:10.7554/elife.107088 [code]
- Development of auditory and spontaneous movement responses to music over the first postnatal year.Journal: eLifeIn common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 5 references
- [3] doi:10.7554/elife.109901
- Infants at high and low likelihood for autism show different EEG developmental trajectories in speech tracking and statistical learning.Journal: eLifeIn common: 5 references
- [4] doi:10.1162/imag.a.1161
- The infant brain rapidly entrains to visual statistical regularities during stimulus exposure.Journal: Imaging neuroscience (Cambridge, Mass.)In common: 4 references
- [5] doi:10.1038/s41598-026-57256-0 [code]
- Pupil- and gaze dynamics track emotion content in naturalistic speech.Journal: Scientific reportsIn common: Statistics and Machine Learning Toolbox, 4 references
- [6] doi:10.1371/journal.pbio.3003899 [code]
- Social interactions between people of same and different generations shape longitudinal changes in interpersonal neural synchrony, loneliness, and social connection.Journal: PLoS biologyIn common: Statistics and Machine Learning Toolbox, 3 references
- [7] doi:10.1162/imag.a.1201 [code]
- All spectral frequencies of neural activity reveal semantic representation in the human anterior ventral temporal cortex.Journal: Imaging neuroscience (Cambridge, Mass.)In common: Image Processing Toolbox, Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 2 references
- [8] doi:10.1002/aur.70312 [code]
- Aberrant Neural Entrainment to Word-Level Speech Patterns in Fragile X Syndrome: Evidence for a Statistical Learning Deficit.Journal: Autism research : official journal of the International Society for Autism ResearchIn common: Statistics and Machine Learning Toolbox, 3 references
- [9] doi:10.1162/imag.a.1229 [code]
- 40 Hz audiovisual stimulation improves sustained attention and related brain oscillations.Journal: Imaging neuroscience (Cambridge, Mass.)In common: Image Processing Toolbox, Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 1 reference
- [10] doi:10.3389/fnhum.2026.1692628 [code]
- The effects of vocal emotions and emotional context on the neural tracking of speech envelopes and listeners' vigilance states.Journal: Frontiers in human neuroscienceIn common: 4 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 50 scripts, and 31 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:ef5e7e154083ead7…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
