Как рассчитать значения корреляции и статистические p-значения в R

#r #dplyr #correlation #p-value #r-corrplot

Вопрос:

У меня есть вопрос о получении значений корреляции и p-значений в R с использованием library(corrplot) . У меня есть матрица с образцами в виде строк и признаками (генами) в виде столбцов. Сначала я хотел бы вычислить медиану каждой функции (по столбцам) и сохранить их, затем связать их с помощью rbind() функции с исходной матрицей. После этого;

  1. Вычислите корреляцию Пирсона для каждого признака (гена) во всех выборках с соответствующими медианными значениями во всех выборках и сохраните ее как корреляцию.
  2. Рассчитайте значение p для каждого признака (гена) во всех образцах с соответствующими медианными значениями во всех образцах и сохраните его как значение p или T-критерий.

Вот входные данные и ожидаемые результаты результаты:

Ввод

 library(corrplot) dput(df) structure(list(Sample_1 = c(16.26875, 16.26875, 30.8274, 111.2367,  111.2367, 111.2367, 35.3882, 41.27, 31.7941, 31.7941), Sample_2 = c(21.374,  21.374, 112.1106, 252.9354, 252.9354, 252.9354, 53.4914, 24.0781,  51.24006667, 51.24006667), Sample_3 = c(35.7917, 35.7917, 126.3887,  215.32245, 215.32245, 215.32245, 88.0871, 86.3814, 40.5937, 40.5937 ), Sample_4 = c(21.01615, 21.01615, 104.7907, 112.6046, 112.6046,  112.6046, 56.443, 41.8651, 27.23903333, 27.23903333), Sample_5 = c(22.5471,  22.5471, 122.3795, 203.8146, 203.8146, 203.8146, 63.7323, 65.2544,  33.96723333, 33.96723333), Sample_6 = c(53.78655, 53.78655, 90.0362,  283.54685, 283.54685, 283.54685, 49.4972, 145.7944, 63.5719,  63.5719), Sample_7 = c(8.2572, 8.2572, 50.6777, 153.041325, 153.041325,  153.041325, 37.0928, 77.7312, 31.3466, 31.3466), Sample_8 = c(11.24755,  11.24755, 100.9305, 176.373225, 176.373225, 176.373225, 53.0731,  36.7819, 49.88686667, 49.88686667)), class = "data.frame", row.names = c("Gene_A",  "Gene_B", "Gene_C", "Gene_D", "Gene_E", "Gene_F", "Gene_G", "Gene_H",  "Gene_I", "Gene_J"))  ###Calculate the median for each column in the dataframe###  df_median lt;- apply(df,2,median)  ###Rename the rowname in dataframe### df_median lt;- as.data.frame(df_median) df_median lt;- t(df_median) rownames(df_median)[rownames(df_median) == "1"] lt;- "Median_value" df_median lt;- as.matrix(df_median)  dput(df_median) structure(c(33.59115, 52.365733335, 87.23425, 49.15405, 64.49335,  76.80405, 43.88525, 51.479983335), .Dim = c(1L, 8L), .Dimnames = list(  "df_median", c("Sample_1", "Sample_2", "Sample_3", "Sample_4",   "Sample_5", "Sample_6", "Sample_7", "Sample_8")))  ###Check if the columns of the data are the same order### all(colnames(df)==colnames(df_median))  ###Row bind### df_v1 lt;- rbind(df, df_median) ###Transpose### df_v1 lt;- t(df_v1)  dput(df_v1) structure(c(16.26875, 21.374, 35.7917, 21.01615, 22.5471, 53.78655,  8.2572, 11.24755, 16.26875, 21.374, 35.7917, 21.01615, 22.5471,  53.78655, 8.2572, 11.24755, 30.8274, 112.1106, 126.3887, 104.7907,  122.3795, 90.0362, 50.6777, 100.9305, 111.2367, 252.9354, 215.32245,  112.6046, 203.8146, 283.54685, 153.041325, 176.373225, 111.2367,  252.9354, 215.32245, 112.6046, 203.8146, 283.54685, 153.041325,  176.373225, 111.2367, 252.9354, 215.32245, 112.6046, 203.8146,  283.54685, 153.041325, 176.373225, 35.3882, 53.4914, 88.0871,  56.443, 63.7323, 49.4972, 37.0928, 53.0731, 41.27, 24.0781, 86.3814,  41.8651, 65.2544, 145.7944, 77.7312, 36.7819, 31.7941, 51.24006667,  40.5937, 27.23903333, 33.96723333, 63.5719, 31.3466, 49.88686667,  31.7941, 51.24006667, 40.5937, 27.23903333, 33.96723333, 63.5719,  31.3466, 49.88686667, 33.59115, 52.365733335, 87.23425, 49.15405,  64.49335, 76.80405, 43.88525, 51.479983335), .Dim = c(8L, 11L ), .Dimnames = list(c("Sample_1", "Sample_2", "Sample_3", "Sample_4",  "Sample_5", "Sample_6", "Sample_7", "Sample_8"), c("Gene_A",  "Gene_B", "Gene_C", "Gene_D", "Gene_E", "Gene_F", "Gene_G", "Gene_H",  "Gene_I", "Gene_J", "df_median")))  

Ожидаемый результат (значения корреляции и p-значения); выполняется в excel

 dput(df_v1) structure(list(Correlation = c(0.784222027, 0.784222027, 0.697165536,  0.703786264, 0.703786264, 0.703786264, 0.809199894, 0.652444083,  0.470900098, 0.470900098), `pvalue_[Ttest (tail = 2; equal var = 2) from MS Excel]` = c(0.001025688,  0.001025688, 0.022663236, 5.29e-05, 5.29e-05, 5.29e-05, 0.750705502,  0.628163911, 0.053826725, 0.053826725), `pvalue-[Ttest (tail = 2; unequal var = 3) from MS Excel]` = c(0.001095952,  0.001095952, 0.027396657, 0.000420109, 0.000420109, 0.000420109,  0.750727728, 0.631449141, 0.055895385, 0.055895385)), class = "data.frame", row.names = c("Gene_A",  "Gene_B", "Gene_C", "Gene_D", "Gene_E", "Gene_F", "Gene_G", "Gene_H",  "Gene_I", "Gene_J"))  

Спасибо,

Toufiq