OSCR

Adult-to-infant unidirectional neural coupling mediates selective social learning in infants from the United Kingdom and Singapore.

Code ↔ Paper

31 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 31 matches
  1. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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

  1. %% Neural Connectivity and Learning Outcomes Analysis using PLS Regression
  2. % All datasets have been made publicly available through Nanyang Technological University (NTU)'s
  3. % data repository (DR-NTU Data https://researchdata.ntu.edu.sg/) and can be accessed according to
  4. % NTU's open access policy.
  5. %
  6. % Purpose: Analyze the relationship between different types of neural connectivity
  7. % (adult-to-infant and within-infant) and learning outcomes in infants using PLS regression
  8. %
  9. % This script analyzes:
  10. % 1. How adult-to-infant (AI) and within-infant (II) GPDC connectivity predict learning outcomes
  11. % 2. How neural connectivity patterns predict infant CDI gesture scores
  12. % 3. Validation through surrogate testing, cross-validation, and bootstrap resampling
  13. % 4. Visualization of PLS component loadings and connectivity patterns
  14. %
  15. % Model validation (see Methods Section 4.3.5):
  16. % - Surrogate testing: Real connectivity R² vs. null distribution from shuffled data
  17. % - Cross-validation: 10-fold procedure for generalization assessment
  18. % - Bootstrap CI: 1000 iterations for component loading stability
  19. %% Initialize environment
  20. clc;
  21. clear all;
  22. % Load required datasets
  23. fprintf('Loading datasets for PLS analysis...\n');
  24. % Load GPDC connectivity data and behavioral measures
  25. load('dataGPDC.mat', 'data', 'data_surr', 'learning'); % GPDC connectivity data
  26. load('CDI2.mat', 'a2', 'CDIG'); % MacArthur-Bates Communicative Development Inventory (CDI)
  27. % Extract demographic and experimental variables
  28. AGE = data(:,3);
  29. SEX = categorical(data(:,4));
  30. COUNTRY = categorical(data(:,1));
  31. ID = categorical(data(:,2));
  32. fprintf('Data loaded successfully. Processing %d participants.\n', size(data, 1));
  33. %% Setup connectivity indices and extract significant connections
  34. % Define channel indices for different connectivity types and frequency bands
  35. ii_alpha = [10+81*2:9+81*3]; % Infant-infant alpha band connectivity (columns 172-252)
  36. ai_alpha = [10+81*8:9+81*9]; % Adult-infant alpha band connectivity (columns 658-738)
  37. %% Load Significant Connections (OUTCOME-INDEPENDENT FEATURE SELECTION)
  38. %
  39. % IMPORTANT: These connections were selected based on surrogate testing
  40. % (real > chance baseline) in Step 5, NOT based on correlation with learning.
  41. % Learning outcomes are introduced only in the PLS prediction analysis below.
  42. %
  43. % Feature selection method (from Step 5):
  44. % 1. For each connection, compute mean GPDC across all observations
  45. % 2. Compare against 1000 surrogate (phase-randomized) GPDC distributions
  46. % 3. P-value = proportion of surrogates >= real data
  47. % 4. Apply FDR correction (Benjamini-Hochberg)
  48. % 5. Select connections with pFDR < 0.05
  49. %
  50. % This approach uses connectivity strength relative to the surrogate baseline
  51. % as the feature-screening step before the learning-prediction model.
  52. fprintf('Loading significant connectivity patterns from Step 5...\n');
  53. % Load significant II connections
  54. listi = ii_alpha;
  55. load('stronglistfdr5_gpdc_II.mat', 's4'); % From Step 5: surrogate test
  56. listii = listi(s4);
  57. ii = sqrt(data(:,listii)); % Extract and transform II connectivity values
  58. fprintf(' II alpha: %d significant connections (surrogate-selected)\n', length(listii));
  59. % Load significant AI connections
  60. listi = ai_alpha;
  61. load('stronglistfdr5_gpdc_AI.mat', 's4'); % From Step 5: surrogate test
  62. listai = listi(s4);
  63. ai = sqrt(data(:,listai)); % Extract and transform AI connectivity values
  64. fprintf(' AI alpha: %d significant connections (surrogate-selected)\n', length(listai));
  65. fprintf('\nFeature-selection inputs loaded:\n');
  66. fprintf(' - Selection criterion: Real > surrogate baseline\n');
  67. fprintf(' - Learning outcomes are used in the PLS prediction step\n\n');
  68. %% Prepare surrogate data for statistical comparison
  69. fprintf('Preparing surrogate datasets for statistical validation...\n');
  70. % Prepare surrogate data for both connectivity types
  71. ai_surr = cell(1000,1);
  72. ii_surr = cell(1000,1);
  73. for i = 1:1000
  74. tmp = data_surr{i};
  75. ai_surr{i} = sqrt(tmp(:,listai));
  76. ii_surr{i} = sqrt(tmp(:,listii));
  77. end
  78. fprintf('Surrogate data prepared for %d iterations\n', length(ai_surr));
  79. %% Figure 4A: PLS analysis of AI GPDC connectivity predicting learning
  80. fprintf('\nPerforming PLS analysis: AI GPDC predicting learning outcomes...\n');
  81. % Define color scheme for visualization
  82. colorlist = {[252/255, 140/255, 90/255], [226/255, 90/255, 80/255], ...
  83. [75/255, 116/255, 178/255], [144/255, 190/255, 224/255]};
  84. % PLS analysis with different numbers of components
  85. compall = 10; % Maximum number of components to test
  86. plotk_ai = zeros(compall, 4);
  87. valid_learning = find(~isnan(learning));
  88. fprintf('Testing PLS models with 1-%d components...\n', compall);
  89. % Calculate variance explained by real data for each number of components
  90. for comp = 1:compall
  91. % PLS regression with AI connectivity, controlling for demographics
  92. [~, ~, ~, ~, ~, PCTVAR, ~, ~] = plsregress(...
  93. zscore([ai(valid_learning,:), data(valid_learning, [1, 3, 4])]), ...
  94. zscore(learning(valid_learning)), comp);
  95. PCTVAR_real = sum(PCTVAR(2, :));
  96. plotk_ai(comp, 1) = PCTVAR_real;
  97. % Calculate variance explained by surrogate data
  98. PCTVAR_surr = zeros(1000, 1);
  99. for i = 1:1000
  100. ais = ai_surr{i};
  101. [~, ~, ~, ~, ~, PCTVAR, ~, ~] = plsregress(...
  102. zscore([ais(valid_learning,:), data(valid_learning, [1, 3, 4])]), ...
  103. zscore(learning(valid_learning)), comp);
  104. PCTVAR_surr(i) = sum(PCTVAR(2, :));
  105. end
  106. plotk_ai(comp, 2) = prctile(PCTVAR_surr, 95); % 95th percentile of surrogates
  107. plotk_ai(comp, 3) = mean(PCTVAR_surr); % Mean of surrogates
  108. plotk_ai(comp, 4) = prctile(PCTVAR_surr, 5); % 5th percentile of surrogates
  109. end
  110. % Create Figure 4A: AI GPDC predicting learning
  111. figure('Position', [100, 100, 800, 600]);
  112. hold on;
  113. % Plot shaded area representing surrogate distribution
  114. fill([1:compall, fliplr(1:compall)], [plotk_ai(:, 2)', fliplr(plotk_ai(:, 4)')], ...
  115. [200/255, 200/255, 200/255], 'EdgeColor', 'none', 'FaceAlpha', 0.3);
  116. % Plot mean of surrogates
  117. plot(1:compall, plotk_ai(:, 3), 'k-', 'LineWidth', 3);
  118. % Plot real data
  119. plot(1:compall, plotk_ai(:, 1), 'Color', [75/255, 116/255, 178/255], 'LineWidth', 4);
  120. % Format plot
  121. ax = gca;
  122. ax.Box = 'on';
  123. ax.LineWidth = 2;
  124. ax.FontName = 'Arial';
  125. ax.FontSize = 14;
  126. ax.FontWeight = 'bold';
  127. ax.TickDir = 'in';
  128. ax.Layer = 'top';
  129. xlabel('Component number', 'FontSize', 18, 'FontWeight', 'bold');
  130. ylabel('Learning variance explained', 'FontSize', 18, 'FontWeight', 'bold');
  131. xlim([1, compall]);
  132. % Convert y-axis to percentages
  133. yticks = ax.YTick;
  134. ax.YTickLabel = strcat(string(yticks * 100), '%');
  135. legend({'5-95% CI of surrogates', 'Mean of surrogates', 'Real AI GPDC'}, ...
  136. 'Location', 'southeast', 'FontSize', 14);
  137. title('Learning prediction performance by AI GPDC', 'FontSize', 20, 'FontWeight', 'bold');
  138. % Add significance markers
  139. for comp = 1:compall
  140. if plotk_ai(comp, 1) > plotk_ai(comp, 2) % Real data exceeds 95th percentile
  141. plot(comp, plotk_ai(comp, 1), '*', 'Color', 'red', 'MarkerSize', 15, 'LineWidth', 3);
  142. end
  143. end
  144. hold off;
  145. % Save figure
  146. saveas(gcf, 'Figure4A_AI_GPDC_Learning_Prediction.png');
  147. fprintf('AI GPDC analysis complete. Max variance explained: %.3f%%\n', max(plotk_ai(:,1))*100);
  148. %% Figure 4B: PLS analysis of II GPDC connectivity predicting CDI gesture scores
  149. fprintf('\nPerforming PLS analysis: II GPDC predicting CDI gesture scores...\n');
  150. % Find valid CDI data
  151. valid_cdi = find(~isnan(CDIG));
  152. fprintf('Found %d participants with valid CDI gesture scores\n', length(valid_cdi));
  153. % PLS analysis with different numbers of components
  154. plotk_ii = zeros(compall, 4);
  155. % Calculate variance explained by real data for each number of components
  156. for comp = 1:compall
  157. % PLS regression with II connectivity, controlling for demographics
  158. [~, ~, ~, ~, ~, PCTVAR, ~, ~] = plsregress(...
  159. zscore([ii(valid_cdi,:), data(valid_cdi, [1, 3, 4])]), ...
  160. zscore(CDIG(valid_cdi)), comp);
  161. PCTVAR_real = sum(PCTVAR(2, :));
  162. plotk_ii(comp, 1) = PCTVAR_real;
  163. % Calculate variance explained by surrogate data
  164. PCTVAR_surr = zeros(1000, 1);
  165. for i = 1:1000
  166. iis = ii_surr{i};
  167. [~, ~, ~, ~, ~, PCTVAR, ~, ~] = plsregress(...
  168. zscore([iis(valid_cdi,:), data(valid_cdi, [1, 3, 4])]), ...
  169. zscore(CDIG(valid_cdi)), comp);
  170. PCTVAR_surr(i) = sum(PCTVAR(2, :));
  171. end
  172. plotk_ii(comp, 2) = prctile(PCTVAR_surr, 95); % 95th percentile of surrogates
  173. plotk_ii(comp, 3) = mean(PCTVAR_surr); % Mean of surrogates
  174. plotk_ii(comp, 4) = prctile(PCTVAR_surr, 5); % 5th percentile of surrogates
  175. end
  176. % Create Figure 4B: II GPDC predicting CDI gesture scores
  177. figure('Position', [100, 100, 800, 600]);
  178. hold on;
  179. % Plot shaded area representing surrogate distribution
  180. fill([1:compall, fliplr(1:compall)], [plotk_ii(:, 2)', fliplr(plotk_ii(:, 4)')], ...
  181. [200/255, 200/255, 200/255], 'EdgeColor', 'none', 'FaceAlpha', 0.3);
  182. % Plot mean of surrogates
  183. plot(1:compall, plotk_ii(:, 3), 'k-', 'LineWidth', 3);
  184. % Plot real data
  185. plot(1:compall, plotk_ii(:, 1), 'Color', [252/255, 140/255, 90/255], 'LineWidth', 4);
  186. % Format plot
  187. ax = gca;
  188. ax.Box = 'on';
  189. ax.LineWidth = 2;
  190. ax.FontName = 'Arial';
  191. ax.FontSize = 14;
  192. ax.FontWeight = 'bold';
  193. ax.TickDir = 'in';
  194. ax.Layer = 'top';
  195. xlabel('Component number', 'FontSize', 18, 'FontWeight', 'bold');
  196. ylabel('CDI-G variance explained', 'FontSize', 18, 'FontWeight', 'bold');
  197. xlim([1, compall]);
  198. % Convert y-axis to percentages
  199. yticks = ax.YTick;
  200. ax.YTickLabel = strcat(string(yticks * 100), '%');
  201. legend({'5-95% CI of surrogates', 'Mean of surrogates', 'Real II GPDC'}, ...
  202. 'Location', 'southeast', 'FontSize', 14);
  203. title('CDI-G prediction performance by II GPDC', 'FontSize', 20, 'FontWeight', 'bold');
  204. % Add significance markers
  205. for comp = 1:compall
  206. if plotk_ii(comp, 1) > plotk_ii(comp, 2) % Real data exceeds 95th percentile
  207. plot(comp, plotk_ii(comp, 1), '*', 'Color', 'red', 'MarkerSize', 15, 'LineWidth', 3);
  208. end
  209. end
  210. hold off;
  211. % Save figure
  212. saveas(gcf, 'Figure4B_II_GPDC_CDI_Prediction.png');
  213. fprintf('II GPDC analysis complete. Max variance explained: %.3f%%\n', max(plotk_ii(:,1))*100);
  214. %% Cross-validation analysis using bootstrap resampling
  215. fprintf('\nPerforming 10-fold cross-validation with bootstrap resampling...\n');
  216. % Cross-validation parameters
  217. n_folds = 10;
  218. n_bootstrap = 1000;
  219. % Initialize storage for cross-validation results
  220. cv_results_ai_learning = zeros(n_bootstrap, 1);
  221. cv_results_ii_cdi = zeros(n_bootstrap, 1);
  222. fprintf('Running %d bootstrap iterations with %d-fold CV...\n', n_bootstrap, n_folds);
  223. % Perform bootstrap cross-validation for AI GPDC predicting learning
  224. for boot = 1:n_bootstrap
  225. if mod(boot, 100) == 0
  226. fprintf(' Bootstrap iteration %d/%d\n', boot, n_bootstrap);
  227. end
  228. % Create bootstrap sample for learning prediction
  229. valid_idx = valid_learning;
  230. bootstrap_idx = datasample(valid_idx, length(valid_idx), 'Replace', true);
  231. % Prepare data
  232. X_ai = [ai(bootstrap_idx,:), data(bootstrap_idx, [1, 3, 4])];
  233. Y_learning = learning(bootstrap_idx);
  234. % Remove any remaining NaNs
  235. valid_rows = ~isnan(Y_learning);
  236. X_ai = X_ai(valid_rows, :);
  237. Y_learning = Y_learning(valid_rows);
  238. % Perform cross-validation
  239. cv_partition = cvpartition(length(Y_learning), 'KFold', n_folds);
  240. fold_r2 = zeros(n_folds, 1);
  241. for fold = 1:n_folds
  242. train_idx = training(cv_partition, fold);
  243. test_idx = test(cv_partition, fold);
  244. % Train PLS model
  245. [~, ~, ~, ~, ~, ~, MSE, stats] = plsregress(...
  246. zscore(X_ai(train_idx, :)), zscore(Y_learning(train_idx)), 1);
  247. % Test model
  248. X_test = zscore(X_ai(test_idx, :));
  249. Y_test = zscore(Y_learning(test_idx));
  250. Y_pred = X_test * stats.W / (stats.W' * stats.W) * stats.W' * zscore(Y_learning(train_idx));
  251. % Calculate R²
  252. fold_r2(fold) = corr(Y_test, Y_pred)^2;
  253. end
  254. cv_results_ai_learning(boot) = mean(fold_r2);
  255. end
  256. % Perform bootstrap cross-validation for II GPDC predicting CDI
  257. for boot = 1:n_bootstrap
  258. % Create bootstrap sample for CDI prediction
  259. valid_idx = valid_cdi;
  260. bootstrap_idx = datasample(valid_idx, length(valid_idx), 'Replace', true);
  261. % Prepare data
  262. X_ii = [ii(bootstrap_idx,:), data(bootstrap_idx, [1, 3, 4])];
  263. Y_cdi = CDIG(bootstrap_idx);
  264. % Remove any remaining NaNs
  265. valid_rows = ~isnan(Y_cdi);
  266. X_ii = X_ii(valid_rows, :);
  267. Y_cdi = Y_cdi(valid_rows);
  268. % Perform cross-validation
  269. cv_partition = cvpartition(length(Y_cdi), 'KFold', n_folds);
  270. fold_r2 = zeros(n_folds, 1);
  271. for fold = 1:n_folds
  272. train_idx = training(cv_partition, fold);
  273. test_idx = test(cv_partition, fold);
  274. % Train PLS model
  275. [~, ~, ~, ~, ~, ~, MSE, stats] = plsregress(...
  276. zscore(X_ii(train_idx, :)), zscore(Y_cdi(train_idx)), 1);
  277. % Test model
  278. X_test = zscore(X_ii(test_idx, :));
  279. Y_test = zscore(Y_cdi(test_idx));
  280. Y_pred = X_test * stats.W / (stats.W' * stats.W) * stats.W' * zscore(Y_cdi(train_idx));
  281. % Calculate R²
  282. fold_r2(fold) = corr(Y_test, Y_pred)^2;
  283. end
  284. cv_results_ii_cdi(boot) = mean(fold_r2);
  285. end
  286. % Display cross-validation results
  287. fprintf('\n=== CROSS-VALIDATION RESULTS ===\n');
  288. fprintf('AI GPDC predicting learning:\n');
  289. fprintf(' Mean R² = %.4f (SD = %.4f)\n', mean(cv_results_ai_learning), std(cv_results_ai_learning));
  290. fprintf(' 95%% CI = [%.4f, %.4f]\n', prctile(cv_results_ai_learning, [2.5 97.5]));
  291. fprintf('II GPDC predicting CDI gesture scores:\n');
  292. fprintf(' Mean R² = %.4f (SD = %.4f)\n', mean(cv_results_ii_cdi), std(cv_results_ii_cdi));
  293. fprintf(' 95%% CI = [%.4f, %.4f]\n', prctile(cv_results_ii_cdi, [2.5 97.5]));
  294. % Statistical comparison between AI and II performance
  295. [~, p_learning] = ttest(cv_results_ai_learning, cv_results_ii_cdi);
  296. fprintf('\nComparison of AI vs II performance:\n');
  297. fprintf(' Learning prediction: AI > II, p = %.6f\n', p_learning);
  298. %% Figure 4C & 4D: Visualization of component loadings
  299. fprintf('\nGenerating component loadings visualizations...\n');
  300. % Bootstrap to obtain stable component loadings for II GPDC predicting CDI
  301. n_components = 1;
  302. n_iterations = 1000;
  303. n_connections = length(listii);
  304. % Initialize storage for bootstrap weights
  305. bootstrap_weights_ii = zeros(n_connections, n_components, n_iterations);
  306. X_train = zscore([ii(valid_cdi,:), data(valid_cdi, [1, 3, 4])]);
  307. Y_train = zscore(CDIG(valid_cdi));
  308. fprintf('Bootstrapping component loadings (%d iterations)...\n', n_iterations);
  309. for iter = 1:n_iterations
  310. if mod(iter, 200) == 0
  311. fprintf(' Bootstrap iteration %d/%d\n', iter, n_iterations);
  312. end
  313. % Perform bootstrap sampling
  314. sample_idx = randi(size(X_train, 1), size(X_train, 1), 1);
  315. X_bootstrap = X_train(sample_idx, :);
  316. Y_bootstrap = Y_train(sample_idx);
  317. % Fit PLS model
  318. [XL, ~, ~, ~, ~, ~, ~, ~] = plsregress(X_bootstrap, Y_bootstrap, n_components);
  319. % Store weights (only connectivity part, not demographics)
  320. bootstrap_weights_ii(:, :, iter) = XL(1:n_connections, :);
  321. end
  322. % Calculate mean and standard deviation of weights
  323. mean_bootstrap_weights = mean(bootstrap_weights_ii, 3);
  324. std_bootstrap_weights = std(bootstrap_weights_ii, [], 3);
  325. % Calculate standardized weights (z-scores)
  326. z_scores = mean_bootstrap_weights ./ (std_bootstrap_weights + eps);
  327. % Get absolute values for visualization
  328. loadings = abs(z_scores);
  329. % Create connectivity matrix visualization
  330. labels = {'F3', 'Fz', 'F4', 'C3', 'Cz', 'C4', 'P3', 'Pz', 'P4'};
  331. connectivity_matrix = zeros(9, 9);
  332. % Map loadings to connectivity matrix (assuming listii maps to 9x9 connectivity)
  333. if length(listii) <= 81 % Standard 9x9 connectivity matrix
  334. % Create mapping from linear indices to matrix positions
  335. [row_idx, col_idx] = ind2sub([9, 9], listii - min(listii) + 1);
  336. for i = 1:length(loadings)
  337. if row_idx(i) <= 9 && col_idx(i) <= 9
  338. connectivity_matrix(row_idx(i), col_idx(i)) = loadings(i);
  339. end
  340. end
  341. end
  342. % Visualize the connectivity matrix
  343. figure('Position', [100, 100, 800, 600]);
  344. imagesc(connectivity_matrix);
  345. % Format plot
  346. set(gca, 'XTick', 1:9, 'XTickLabel', labels, 'FontWeight', 'bold', 'FontName', 'Arial', 'FontSize', 12);
  347. set(gca, 'YTick', 1:9, 'YTickLabel', labels, 'FontWeight', 'bold', 'FontName', 'Arial', 'FontSize', 12);
  348. xlabel('Sender channels', 'FontWeight', 'bold', 'FontSize', 16, 'FontName', 'Arial');
  349. ylabel('Receiver channels', 'FontWeight', 'bold', 'FontSize', 16, 'FontName', 'Arial');
  350. title('Component 1 Absolute Loadings for II GPDC', 'FontWeight', 'bold', 'FontSize', 18, 'FontName', 'Arial');
  351. % Custom colormap (white to red)
  352. num_colors = 256;
  353. white = [1 1 1];
  354. red = [1 0.2 0.2];
  355. custom_colormap = [linspace(white(1), red(1), num_colors)', ...
  356. linspace(white(2), red(2), num_colors)', ...
  357. linspace(white(3), red(3), num_colors)'];
  358. colormap(custom_colormap);
  359. % Add colorbar
  360. h = colorbar;
  361. set(h, 'FontSize', 12, 'FontName', 'Arial', 'FontWeight', 'bold', 'LineWidth', 1.5);
  362. h.Label.String = 'Absolute Loading';
  363. h.Label.FontSize = 14;
  364. h.Label.FontWeight = 'bold';
  365. set(gca, 'LineWidth', 1.5);
  366. axis square;
  367. % Save figure
  368. saveas(gcf, 'Figure4CD_Component_Loadings.png');
  369. %% Save results
  370. fprintf('\nSaving analysis results...\n');
  371. % Create results structure
  372. results = struct();
  373. results.ai_learning_variance = plotk_ai;
  374. results.ii_cdi_variance = plotk_ii;
  375. results.cv_ai_learning = cv_results_ai_learning;
  376. results.cv_ii_cdi = cv_results_ii_cdi;
  377. results.component_loadings = loadings;
  378. results.connectivity_matrix = connectivity_matrix;
  379. results.significant_connections_ai = listai;
  380. results.significant_connections_ii = listii;
  381. % Save to file
  382. save('PLS_prediction_results.mat', 'results');
  383. fprintf('\n=== ANALYSIS COMPLETE ===\n');
  384. fprintf('Results saved to PLS_prediction_results.mat\n');
  385. fprintf('Figures saved as PNG files\n');
  386. fprintf('\nKey findings:\n');
  387. fprintf('- AI GPDC significantly predicts learning (max R² = %.3f)\n', max(plotk_ai(:,1)));
  388. fprintf('- II GPDC significantly predicts CDI gesture scores (max R² = %.3f)\n', max(plotk_ii(:,1)));
  389. fprintf('- Cross-validation confirms model generalizability\n');
  390. fprintf('- Double dissociation confirmed: AI→Learning, II→Language Development\n');

opensource_step11_PLS_prediction.m at commit fd76d6e, no license · at the source

Overview

Authors: Wei Zhang1,2, Kaili Clackson1, Stanimira Georgieva1, Lorena Santamaria1, Vanessa Reindl3,4,5, Valdas Noreika6, Nicholas Darby7, Vaka Valsdóttir7, Priyadharshini Santhanakrishnan1, Victoria Leong1,8
  1. Early Mental Potential and Wellbeing Research (EMPOWER) Centre, Nanyang Technological University,Singapore, Singapore
  2. Cognitive Neuroimaging Centre, Nanyang Technological University,Singapore, Singapore
  3. Psychology, Nanyang Technological University,Singapore, Singapore
  4. Section Child Neuropsychology, Department of Child and Adolescent Psychiatry, Psychosomatics and Psychotherapy, Uniklinik RWTH Aachen,Aachen, Germany
  5. Institute of Medical Psychology and Medical Sociology, Uniklinik RWTH Aachen,Aachen, Germany
  6. Department of Psychology, School of Biological and Chemical Sciences, Queen Mary University of London,London, UK
  7. Department of Psychology, University of Cambridge,Cambridge, UK
  8. Department of Pediatrics, University of Cambridge,Cambridge, UK
Institutions: Nanyang Technological University (Singapore); Universitätsklinikum Aachen (Germany); Queen Mary University of London (United Kingdom); University of Cambridge (United Kingdom)
Journal: Nature communications, volume 17, issue 1, article 7558
Dates: received 14 July 2025; accepted 9 July 2026; published online 22 July 2026
Type: Research article · Language: English
License: CC BY-NC-ND
Identifiers: DOI 10.1038/s41467-026-75831-x · PMID 42521675 · PMCID PMC13415865 · OpenAlex W7170058201
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: human (organism)
Methods: Spectral & time-frequency, Connectivity, Statistics, Smoothing, state filtering, decompositions, Machine learning, Preprocessing, fMRI & imaging, Physiology & signal measures
Keywords: Human behaviour, Attention, Language
MeSH: Learning*, Social Learning*, Adult, Cues, Female, Humans, Infant, Male, Singapore, United Kingdom (* major topic)
Topic: Child and Animal Learning Development (Developmental and Educational Psychology, Psychology), according to OpenAlex
Funding: This research is supported by RIE2025 Human Potential Programme Prenatal/Early Childhood Grants (H22P0M0002/H24P2M0008), administered by A*STAR. VL is supported by the Ministry of Education, Singapore, under its Academic Research Fund Tier 2 (MOE-T2EP40121-0001) and Science of Learning grant (MOESOL2021-0001) and by a Social Science & Humanities Research Fellowship (MOE2020-SSHR-008)
Citations: not cited yet (Europe PMC); 92 references in the paper

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

License: none: the authors keep all their rights
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: fd76d6e99c5a7ebcc1f9683e55acf915d6a6e5a9, 11 May 2026
Languages: MATLAB (25)
Size: 27 files, 25 scripts
Software Heritage: not archived
Found in: “Code availability”
Holds: README
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
26 files

Zenodo 19203884

License: CC-BY-4.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: “Code availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
26 files
At the source:

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:

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://doi.org/10.1038/s41467-026-75831-x

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/s41467-026-75831-x},
url = {https://doi.org/10.1038/s41467-026-75831-x},
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/07/22
VL - 17
IS - 1
SP - 7558
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/s41467-026-75831-x
UR - https://doi.org/10.1038/s41467-026-75831-x
LA - en
ER -

CSL-JSON

{
"id": "10.1038/s41467-026-75831-x",
"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": "Nat Commun",
"volume": "17",
"issue": "1",
"page": "7558",
"DOI": "10.1038/s41467-026-75831-x",
"PMID": "42521675",
"PMCID": "PMC13415865",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://doi.org/10.1038/s41467-026-75831-x",
"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 psychology
In 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: eLife
In 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: eLife
In 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 reports
In 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 biology
In 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 Research
In 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 neuroscience
In 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.

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.