Load data

Load the csv data located at ../data/processed/R_mos_dataframe.csv, and display the head of the data.

# Read and prepare data
data <- read.csv("../data/processed/R_mos_dataframe.csv")
# set is_calibration and has_counterpart as boolean
data$is_calibration <- as.logical(data$is_calibration)
data$has_counterpart <- as.logical(data$has_counterpart)

# Remove calibration tasks
data_filtered <- data[!data$is_calibration, ]

# Only keep rows that have counterparts
data_analysis <- data_filtered[data_filtered$has_counterpart, ]

# Rename columns to match model specifications
names(data_analysis)[names(data_analysis) == "task_type"] <- "Condition"
names(data_analysis)[names(data_analysis) == "score"] <- "Rating"
names(data_analysis)[names(data_analysis) == "pov_id"] <- "POV"
names(data_analysis)[names(data_analysis) == "panoid"] <- "Panorama"

head(data_analysis)
##                           POV Condition               Panorama heading Rating
## 1 1Lg37smPwqvAXl4bdDqhlw__162       img 1Lg37smPwqvAXl4bdDqhlw     162    4.5
## 2 1Lg37smPwqvAXl4bdDqhlw__162       img 1Lg37smPwqvAXl4bdDqhlw     162    3.7
## 3 1Lg37smPwqvAXl4bdDqhlw__162       img 1Lg37smPwqvAXl4bdDqhlw     162    4.3
## 4 1Lg37smPwqvAXl4bdDqhlw__162       img 1Lg37smPwqvAXl4bdDqhlw     162    3.0
## 5 1Lg37smPwqvAXl4bdDqhlw__162       img 1Lg37smPwqvAXl4bdDqhlw     162    1.8
## 6 1Lg37smPwqvAXl4bdDqhlw__162       img 1Lg37smPwqvAXl4bdDqhlw     162    4.5
##   unbiased_score zrec_weight score_idx is_calibration has_counterpart
## 1       4.526985   1.6559975         0          FALSE            TRUE
## 2       2.275518   2.6094937         1          FALSE            TRUE
## 3       3.338297   3.1341152         2          FALSE            TRUE
## 4       3.429386   2.3681205         3          FALSE            TRUE
## 5       2.581924   0.8220169         4          FALSE            TRUE
## 6       3.973958   6.2963303         5          FALSE            TRUE

data description: Each pov was viewed under two conditions by different participants. We want to compare the scores given to the same pov under the different conditions. columns: - user_id - POV (string with format {panoid}_{heading}) - heading (int) - Condition (“pano” or “img”) - has_counterpart (boolean). True if this task has a counterpart image or pano task, with the same pov_id. - is_calibration : is a calibration image, should not be used in the models. - score (int) : user rating of the task - unbiased_score: score corrected - zrec_weight: a weight for the score

Analysis

Perform weighted t-test on the unbiased scores, for each POV, by splitting the population according to Condition Use weighted.t.test from the weights package

library(weights)
## Loading required package: Hmisc
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
## 
##     format.pval, units
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:Hmisc':
## 
##     src, summarize
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Initialize a list to store results
results_list <- list()

# Get unique POVs
unique_povs <- unique(data_analysis$POV)

# Loop through each POV and perform weighted t-test
for (pov in unique_povs) {
    # Filter data for the current POV
    pov_data <- data_analysis[data_analysis$POV == pov, ]
    
    # Split data into pano and image groups
    pano_data <- pov_data[pov_data$Condition == "pano", ]
    image_data <- pov_data[pov_data$Condition == "img", ]

    # Perform weighted t-test if both groups have data
    if (nrow(pano_data) > 0 & nrow(image_data) > 0) {
        result <- wtd.t.test(
            x = pano_data$unbiased_score,
            y = image_data$unbiased_score,
            weight = pano_data$zrec_weight,
            weighty = image_data$zrec_weight,
            samedata = FALSE,
            alternative = "two.tailed",
            mean1 = FALSE  # https://stackoverflow.com/questions/60384681/different-results-with-weighted-t-test-between-r-and-python
        )
        
        # Store results in the list
        results_list[[pov]] <- list(
            pov = pov,
            Panorama = pov_data$Panorama[1],
            Heading = pov_data$heading[1],
            t_statistic = result$coefficients["t.value"],
            p_value = result$coefficients["p.value"],
            mean_diff = result$additional["Difference"],
            pano_mean = result$additional["Mean.x"],
            image_mean = result$additional["Mean.y"]
        )
    }
}

# Display results
# for (pov in names(results_list)) {
#     cat("POV:", pov, "\n")
#     cat("t-statistic:", round(results_list[[pov]]$t_statistic, 4), "\n")
#     cat("p-value:", round(results_list[[pov]]$p_value, 4), "\n")
#     cat("Mean difference:", round(results_list[[pov]]$mean_diff, 4), "\n")
#     cat("Weighted mean for pano condition:", round(results_list[[pov]]$pano_mean, 4), "\n")
#     cat("Weighted mean for image condition:", round(results_list[[pov]]$image_mean, 4), "\n")
#     cat("\n")
# }
# Calculate the percentage of significant p-values
significant_results <- sapply(results_list, function(x) x$p_value < 0.05)
percent_significant <- sum(significant_results) / length(significant_results) * 100


# Make the results_list a data frame
results <- do.call(rbind, lapply(results_list, as.data.frame))
results <- as.data.frame(results)


cat("Percentage of significant p-values:", round(percent_significant, 2), "%\n")
## Percentage of significant p-values: 54.17 %

Correction

# Apply corrections for multiple comparisons
p_adjusted_holm <- p.adjust(results$p_value, method = "holm")
results$p_adjusted_holm = p_adjusted_holm

# Show results
# Calculate the number of significant results after correction
significant_results_holm <- p_adjusted_holm < 0.05

percent_significant_holm <- sum(significant_results_holm) / length(significant_results_holm) * 100

cat("Percentage of significant p-values after Holm correction:", round(percent_significant_holm, 2), "%\n")
## Percentage of significant p-values after Holm correction: 18.75 %
results
##                                                     pov               Panorama
## 1Lg37smPwqvAXl4bdDqhlw__162 1Lg37smPwqvAXl4bdDqhlw__162 1Lg37smPwqvAXl4bdDqhlw
## 1Lg37smPwqvAXl4bdDqhlw__342 1Lg37smPwqvAXl4bdDqhlw__342 1Lg37smPwqvAXl4bdDqhlw
## GnReLERfph4NUc7ZCnYYIA__30   GnReLERfph4NUc7ZCnYYIA__30 GnReLERfph4NUc7ZCnYYIA
## GnReLERfph4NUc7ZCnYYIA__210 GnReLERfph4NUc7ZCnYYIA__210 GnReLERfph4NUc7ZCnYYIA
## J6b4uNaJXJePwh3i4g-J9g__63   J6b4uNaJXJePwh3i4g-J9g__63 J6b4uNaJXJePwh3i4g-J9g
## J6b4uNaJXJePwh3i4g-J9g__243 J6b4uNaJXJePwh3i4g-J9g__243 J6b4uNaJXJePwh3i4g-J9g
## OES3M70uJAKNvDX2lKkMPQ__145 OES3M70uJAKNvDX2lKkMPQ__145 OES3M70uJAKNvDX2lKkMPQ
## OES3M70uJAKNvDX2lKkMPQ__325 OES3M70uJAKNvDX2lKkMPQ__325 OES3M70uJAKNvDX2lKkMPQ
## P4F4QKFaTE5d-QNz_Jx0kg__158 P4F4QKFaTE5d-QNz_Jx0kg__158 P4F4QKFaTE5d-QNz_Jx0kg
## P4F4QKFaTE5d-QNz_Jx0kg__248 P4F4QKFaTE5d-QNz_Jx0kg__248 P4F4QKFaTE5d-QNz_Jx0kg
## PGxyIaP90yNpqgAOQylGog__170 PGxyIaP90yNpqgAOQylGog__170 PGxyIaP90yNpqgAOQylGog
## PGxyIaP90yNpqgAOQylGog__350 PGxyIaP90yNpqgAOQylGog__350 PGxyIaP90yNpqgAOQylGog
## SQRLJrD2KYe1d2VA6txyig__11   SQRLJrD2KYe1d2VA6txyig__11 SQRLJrD2KYe1d2VA6txyig
## SQRLJrD2KYe1d2VA6txyig__191 SQRLJrD2KYe1d2VA6txyig__191 SQRLJrD2KYe1d2VA6txyig
## ToX0MGNWH-VsUEqq5wSCzQ__167 ToX0MGNWH-VsUEqq5wSCzQ__167 ToX0MGNWH-VsUEqq5wSCzQ
## ToX0MGNWH-VsUEqq5wSCzQ__347 ToX0MGNWH-VsUEqq5wSCzQ__347 ToX0MGNWH-VsUEqq5wSCzQ
## UHt0RLnWk1TJnhkBTp6DeA__103 UHt0RLnWk1TJnhkBTp6DeA__103 UHt0RLnWk1TJnhkBTp6DeA
## UHt0RLnWk1TJnhkBTp6DeA__283 UHt0RLnWk1TJnhkBTp6DeA__283 UHt0RLnWk1TJnhkBTp6DeA
## Wv_rNo6f8bMLVKkHdZotfg__142 Wv_rNo6f8bMLVKkHdZotfg__142 Wv_rNo6f8bMLVKkHdZotfg
## Wv_rNo6f8bMLVKkHdZotfg__322 Wv_rNo6f8bMLVKkHdZotfg__322 Wv_rNo6f8bMLVKkHdZotfg
## _zI03ND3kqbk0lyGr6va_A__43   _zI03ND3kqbk0lyGr6va_A__43 _zI03ND3kqbk0lyGr6va_A
## _zI03ND3kqbk0lyGr6va_A__223 _zI03ND3kqbk0lyGr6va_A__223 _zI03ND3kqbk0lyGr6va_A
## aOT4Hl_n33HvBXyWpvYb4Q__152 aOT4Hl_n33HvBXyWpvYb4Q__152 aOT4Hl_n33HvBXyWpvYb4Q
## aOT4Hl_n33HvBXyWpvYb4Q__332 aOT4Hl_n33HvBXyWpvYb4Q__332 aOT4Hl_n33HvBXyWpvYb4Q
## dTb77iHE5hYvcqD26Y99TA__98   dTb77iHE5hYvcqD26Y99TA__98 dTb77iHE5hYvcqD26Y99TA
## dTb77iHE5hYvcqD26Y99TA__278 dTb77iHE5hYvcqD26Y99TA__278 dTb77iHE5hYvcqD26Y99TA
## iDUxUuJHoy4jOx-Yt8laNA__58   iDUxUuJHoy4jOx-Yt8laNA__58 iDUxUuJHoy4jOx-Yt8laNA
## iDUxUuJHoy4jOx-Yt8laNA__238 iDUxUuJHoy4jOx-Yt8laNA__238 iDUxUuJHoy4jOx-Yt8laNA
## iZ2ARYVKACAF8KFRIHr15w__75   iZ2ARYVKACAF8KFRIHr15w__75 iZ2ARYVKACAF8KFRIHr15w
## iZ2ARYVKACAF8KFRIHr15w__165 iZ2ARYVKACAF8KFRIHr15w__165 iZ2ARYVKACAF8KFRIHr15w
## jI40EDTDeCsmBibs1jbXzQ__35   jI40EDTDeCsmBibs1jbXzQ__35 jI40EDTDeCsmBibs1jbXzQ
## jI40EDTDeCsmBibs1jbXzQ__215 jI40EDTDeCsmBibs1jbXzQ__215 jI40EDTDeCsmBibs1jbXzQ
## m4kX2Djw5DmJbL40tel9Yw__125 m4kX2Djw5DmJbL40tel9Yw__125 m4kX2Djw5DmJbL40tel9Yw
## m4kX2Djw5DmJbL40tel9Yw__305 m4kX2Djw5DmJbL40tel9Yw__305 m4kX2Djw5DmJbL40tel9Yw
## pKtV8k7abhxUSE9JAkZLsA__8     pKtV8k7abhxUSE9JAkZLsA__8 pKtV8k7abhxUSE9JAkZLsA
## pKtV8k7abhxUSE9JAkZLsA__188 pKtV8k7abhxUSE9JAkZLsA__188 pKtV8k7abhxUSE9JAkZLsA
## qgpfKJzOZ5OBo5JdvCAp8Q__152 qgpfKJzOZ5OBo5JdvCAp8Q__152 qgpfKJzOZ5OBo5JdvCAp8Q
## qgpfKJzOZ5OBo5JdvCAp8Q__332 qgpfKJzOZ5OBo5JdvCAp8Q__332 qgpfKJzOZ5OBo5JdvCAp8Q
## tlPLzx1D7MRgcvFowbmWGw__128 tlPLzx1D7MRgcvFowbmWGw__128 tlPLzx1D7MRgcvFowbmWGw
## tlPLzx1D7MRgcvFowbmWGw__308 tlPLzx1D7MRgcvFowbmWGw__308 tlPLzx1D7MRgcvFowbmWGw
## v9YEYuKKwMPo3RZWKewZEQ__0     v9YEYuKKwMPo3RZWKewZEQ__0 v9YEYuKKwMPo3RZWKewZEQ
## v9YEYuKKwMPo3RZWKewZEQ__90   v9YEYuKKwMPo3RZWKewZEQ__90 v9YEYuKKwMPo3RZWKewZEQ
## vTjGNS9tAM-xTV0j85XRtA__172 vTjGNS9tAM-xTV0j85XRtA__172 vTjGNS9tAM-xTV0j85XRtA
## vTjGNS9tAM-xTV0j85XRtA__352 vTjGNS9tAM-xTV0j85XRtA__352 vTjGNS9tAM-xTV0j85XRtA
## x_gO8pWHTNMwQxHg9Xv5Sg__86   x_gO8pWHTNMwQxHg9Xv5Sg__86 x_gO8pWHTNMwQxHg9Xv5Sg
## x_gO8pWHTNMwQxHg9Xv5Sg__266 x_gO8pWHTNMwQxHg9Xv5Sg__266 x_gO8pWHTNMwQxHg9Xv5Sg
## ySFr8WwsE0Y1vkN1nZ19Rw__164 ySFr8WwsE0Y1vkN1nZ19Rw__164 ySFr8WwsE0Y1vkN1nZ19Rw
## ySFr8WwsE0Y1vkN1nZ19Rw__344 ySFr8WwsE0Y1vkN1nZ19Rw__344 ySFr8WwsE0Y1vkN1nZ19Rw
##                             Heading t_statistic      p_value    mean_diff
## 1Lg37smPwqvAXl4bdDqhlw__162     162  0.51678735 6.075905e-01  0.095126631
## 1Lg37smPwqvAXl4bdDqhlw__342     342 -0.07398424 9.411515e-01 -0.007523302
## GnReLERfph4NUc7ZCnYYIA__30       30  2.12897033 3.586276e-02  0.298607160
## GnReLERfph4NUc7ZCnYYIA__210     210 -2.25287710 2.677753e-02 -0.315094604
## J6b4uNaJXJePwh3i4g-J9g__63       63  1.89292370 6.019275e-02  0.147668404
## J6b4uNaJXJePwh3i4g-J9g__243     243  2.69495245 7.817848e-03  0.333411336
## OES3M70uJAKNvDX2lKkMPQ__145     145 -1.29062258 2.011150e-01 -0.150616151
## OES3M70uJAKNvDX2lKkMPQ__325     325 -0.37280491 7.103391e-01 -0.061816432
## P4F4QKFaTE5d-QNz_Jx0kg__158     158 -0.53395317 5.942374e-01 -0.038211495
## P4F4QKFaTE5d-QNz_Jx0kg__248     248  2.34250862 2.063378e-02  0.274292579
## PGxyIaP90yNpqgAOQylGog__170     170  3.06570085 2.645863e-03  0.256126286
## PGxyIaP90yNpqgAOQylGog__350     350  2.60347033 1.002055e-02  0.155171108
## SQRLJrD2KYe1d2VA6txyig__11       11 -2.75227032 7.234292e-03 -0.365407720
## SQRLJrD2KYe1d2VA6txyig__191     191  1.58665590 1.166285e-01  0.155689704
## ToX0MGNWH-VsUEqq5wSCzQ__167     167  2.45960308 1.583334e-02  0.423522050
## ToX0MGNWH-VsUEqq5wSCzQ__347     347  3.70848719 3.967050e-04  0.524238357
## UHt0RLnWk1TJnhkBTp6DeA__103     103  1.10466704 2.721294e-01  0.116404642
## UHt0RLnWk1TJnhkBTp6DeA__283     283  2.56692101 1.213358e-02  0.292369891
## Wv_rNo6f8bMLVKkHdZotfg__142     142 -4.51686455 1.963253e-05 -0.402175248
## Wv_rNo6f8bMLVKkHdZotfg__322     322  0.02118792 9.831303e-01  0.002066643
## _zI03ND3kqbk0lyGr6va_A__43       43  1.31246324 1.932107e-01  0.181103317
## _zI03ND3kqbk0lyGr6va_A__223     223  2.83056553 5.968584e-03  0.360746992
## aOT4Hl_n33HvBXyWpvYb4Q__152     152 -1.41955206 1.608161e-01 -0.185614569
## aOT4Hl_n33HvBXyWpvYb4Q__332     332  0.41272327 6.806098e-01  0.056770756
## dTb77iHE5hYvcqD26Y99TA__98       98 -2.24321840 2.726585e-02 -0.257535600
## dTb77iHE5hYvcqD26Y99TA__278     278 -1.34550300 1.815255e-01 -0.127203015
## iDUxUuJHoy4jOx-Yt8laNA__58       58  2.61190084 1.049452e-02  0.256215399
## iDUxUuJHoy4jOx-Yt8laNA__238     238  3.56407949 6.208583e-04  0.425648387
## iZ2ARYVKACAF8KFRIHr15w__75       75  2.27832240 2.392607e-02  0.237076616
## iZ2ARYVKACAF8KFRIHr15w__165     165  1.12274513 2.633747e-01  0.084243675
## jI40EDTDeCsmBibs1jbXzQ__35       35  1.60765148 1.112485e-01  0.193377600
## jI40EDTDeCsmBibs1jbXzQ__215     215 -1.68192027 9.620590e-02 -0.192027050
## m4kX2Djw5DmJbL40tel9Yw__125     125  2.67775481 8.852240e-03  0.286583709
## m4kX2Djw5DmJbL40tel9Yw__305     305  0.30452195 7.614780e-01  0.031007346
## pKtV8k7abhxUSE9JAkZLsA__8         8  1.32586980 1.879186e-01  0.130866895
## pKtV8k7abhxUSE9JAkZLsA__188     188  3.86782203 2.052078e-04  0.481967009
## qgpfKJzOZ5OBo5JdvCAp8Q__152     152  2.53879585 1.309847e-02  0.233650415
## qgpfKJzOZ5OBo5JdvCAp8Q__332     332  1.52264307 1.314249e-01  0.162734864
## tlPLzx1D7MRgcvFowbmWGw__128     128 -4.24305409 5.263999e-05 -0.535633658
## tlPLzx1D7MRgcvFowbmWGw__308     308 -4.37600990 3.026744e-05 -0.623507896
## v9YEYuKKwMPo3RZWKewZEQ__0         0  3.02117077 2.984263e-03  0.272798753
## v9YEYuKKwMPo3RZWKewZEQ__90       90  1.80104541 7.359854e-02  0.155359237
## vTjGNS9tAM-xTV0j85XRtA__172     172  0.51507617 6.072425e-01  0.043414593
## vTjGNS9tAM-xTV0j85XRtA__352     352  3.60334416 4.339736e-04  0.250197524
## x_gO8pWHTNMwQxHg9Xv5Sg__86       86  2.23950560 2.719999e-02  0.200017651
## x_gO8pWHTNMwQxHg9Xv5Sg__266     266 -1.66234731 1.000472e-01 -0.250908959
## ySFr8WwsE0Y1vkN1nZ19Rw__164     164  4.43734324 3.165192e-05  0.609107299
## ySFr8WwsE0Y1vkN1nZ19Rw__344     344  3.63775657 5.100709e-04  0.578933172
##                             pano_mean image_mean p_adjusted_holm
## 1Lg37smPwqvAXl4bdDqhlw__162  3.734631   3.639504    1.0000000000
## 1Lg37smPwqvAXl4bdDqhlw__342  3.206558   3.214081    1.0000000000
## GnReLERfph4NUc7ZCnYYIA__30   3.286174   2.987567    0.8248434205
## GnReLERfph4NUc7ZCnYYIA__210  3.117008   3.432103    0.6962158574
## J6b4uNaJXJePwh3i4g-J9g__63   3.785655   3.637987    1.0000000000
## J6b4uNaJXJePwh3i4g-J9g__243  3.313977   2.980566    0.2736246971
## OES3M70uJAKNvDX2lKkMPQ__145  2.768731   2.919347    1.0000000000
## OES3M70uJAKNvDX2lKkMPQ__325  2.699490   2.761306    1.0000000000
## P4F4QKFaTE5d-QNz_Jx0kg__158  3.487025   3.525237    1.0000000000
## P4F4QKFaTE5d-QNz_Jx0kg__248  2.933251   2.658959    0.5777458893
## PGxyIaP90yNpqgAOQylGog__170  4.234656   3.978529    0.1031886674
## PGxyIaP90yNpqgAOQylGog__350  4.301175   4.146004    0.3306780627
## SQRLJrD2KYe1d2VA6txyig__11   2.816046   3.181454    0.2604345178
## SQRLJrD2KYe1d2VA6txyig__191  3.310400   3.154710    1.0000000000
## ToX0MGNWH-VsUEqq5wSCzQ__167  3.008051   2.584529    0.4591667895
## ToX0MGNWH-VsUEqq5wSCzQ__347  3.293625   2.769386    0.0170583131
## UHt0RLnWk1TJnhkBTp6DeA__103  3.575518   3.459114    1.0000000000
## UHt0RLnWk1TJnhkBTp6DeA__283  3.703046   3.410676    0.3761409047
## Wv_rNo6f8bMLVKkHdZotfg__142  3.940157   4.342333    0.0009423612
## Wv_rNo6f8bMLVKkHdZotfg__322  3.972128   3.970061    1.0000000000
## _zI03ND3kqbk0lyGr6va_A__43   3.019371   2.838268    1.0000000000
## _zI03ND3kqbk0lyGr6va_A__223  3.101524   2.740777    0.2208375951
## aOT4Hl_n33HvBXyWpvYb4Q__152  3.136069   3.321684    1.0000000000
## aOT4Hl_n33HvBXyWpvYb4Q__332  3.035021   2.978250    1.0000000000
## dTb77iHE5hYvcqD26Y99TA__98   3.681815   3.939350    0.6962158574
## dTb77iHE5hYvcqD26Y99TA__278  3.742023   3.869226    1.0000000000
## iDUxUuJHoy4jOx-Yt8laNA__58   3.697124   3.440909    0.3358247064
## iDUxUuJHoy4jOx-Yt8laNA__238  3.588513   3.162865    0.0248343323
## iZ2ARYVKACAF8KFRIHr15w__75   3.467974   3.230897    0.6460039986
## iZ2ARYVKACAF8KFRIHr15w__165  4.009842   3.925598    1.0000000000
## jI40EDTDeCsmBibs1jbXzQ__35   3.351554   3.158177    1.0000000000
## jI40EDTDeCsmBibs1jbXzQ__215  3.444781   3.636808    1.0000000000
## m4kX2Djw5DmJbL40tel9Yw__125  3.422043   3.135460    0.3009761462
## m4kX2Djw5DmJbL40tel9Yw__305  3.508293   3.477286    1.0000000000
## pKtV8k7abhxUSE9JAkZLsA__8    2.172603   2.041736    1.0000000000
## pKtV8k7abhxUSE9JAkZLsA__188  2.598901   2.116934    0.0090291433
## qgpfKJzOZ5OBo5JdvCAp8Q__152  3.911869   3.678218    0.3929540857
## qgpfKJzOZ5OBo5JdvCAp8Q__332  3.819446   3.656711    1.0000000000
## tlPLzx1D7MRgcvFowbmWGw__128  2.921210   3.456843    0.0023687997
## tlPLzx1D7MRgcvFowbmWGw__308  3.014709   3.638217    0.0014225696
## v9YEYuKKwMPo3RZWKewZEQ__0    3.341951   3.069152    0.1134019840
## v9YEYuKKwMPo3RZWKewZEQ__90   3.550542   3.395182    1.0000000000
## vTjGNS9tAM-xTV0j85XRtA__172  3.713040   3.669626    1.0000000000
## vTjGNS9tAM-xTV0j85XRtA__352  3.687282   3.437084    0.0182268914
## x_gO8pWHTNMwQxHg9Xv5Sg__86   2.533585   2.333568    0.6962158574
## x_gO8pWHTNMwQxHg9Xv5Sg__266  2.729894   2.980803    1.0000000000
## ySFr8WwsE0Y1vkN1nZ19Rw__164  2.780776   2.171668    0.0014559885
## ySFr8WwsE0Y1vkN1nZ19Rw__344  3.325033   2.746100    0.0209129064

Save results:

write.csv(results, "../data/processed/statistics.csv", row.names=FALSE)