Обработка MASS: ошибка rlm при многократной подгонке робастной регрессии с использованием MM-оценки - PullRequest
0 голосов
/ 08 июля 2019

У меня есть фрейм данных со структурой, приведенной ниже:

W01           0.750000     0.916667     0.642857      1.000000      0.619565   
W02           0.880000     0.944444     0.500000      0.991228      0.675439   
W03           0.729167     0.900000     0.444444      1.000000      0.611111   
W04           0.809524     0.869565     0.500000      1.000000      0.709091   
W05           0.625000     0.925926     0.653846      1.000000      0.589286   

Variation  1_941119_A/G  1_942335_C/G  1_942451_T/C  1_942934_G/C  \
W01            0.967391      0.965909             1      0.130435   
W02            0.929825      0.937500             1      0.184211   
W03            0.925926      0.880000             1      0.138889   
W04            0.918182      0.907407             1      0.200000   
W05            0.901786      0.858491             1      0.178571   

Variation  1_944296_G/A    ...     X_155545046_C/T  X_155774775_G/T  \
W01            0.978261    ...            0.652174         0.641304   
W02            0.938596    ...            0.728070         0.736842   
W03            0.944444    ...            0.675926         0.685185   
W04            0.927273    ...            0.800000         0.690909   
W05            0.901786    ...            0.794643         0.705357   

Variation  Y_5100327_G/T  Y_5100614_T/G  Y_12786160_G/A  Y_12914512_C/A  \
W01             0.807692       0.800000        0.730769        0.807692   
W02             0.655172       0.653846        0.551724        0.666667   
W03             0.880000       0.909091        0.833333        0.916667   
W04             0.666667       0.642857        0.580645        0.678571   
W05             0.730769       0.720000        0.692308        0.720000   

Variation  Y_13470103_G/A  Y_19705901_A/G  Y_20587967_A/C  mean_age  
W01              0.807692        0.666667        0.333333      56.3  
W02              0.678571        0.520000        0.250000      66.3  
W03              0.916667        0.764706        0.291667      69.7  
W04              0.666667        0.560000        0.322581      71.6  
W05              0.703704        0.600000        0.346154      72.5  

[5 rows x 67000 columns]

Я пытаюсь подстроить устойчивую регрессию, используя оценщик MM, и собрать сводную статистику подбора (значение p и наклон), используяфрагмент ниже:

> df %>%   gather(snp, value, -mean_age) %>% 
+     nest(-snp) %>% 
+     mutate(model = map(data, ~rlm(mean_age ~ value, data = ., method="MM", psi=psi.bisquare, maxit=50)), 
+            summary = map(model, glance)) %>% 
+     dplyr::select(-data, -model) %>% 
+     unnest(summary) -> linear_regression_results

Это, однако, вызывает известную единственную ошибку rlm:

Error in rlm.default(x, y, weights, method = method, wt.method = wt.method,  : 
  'x' is singular: singular fits are not implemented in 'rlm' 

Мне было интересно, есть ли какие-либо предложения относительно того, как решить эту ошибку?

1 Ответ

0 голосов
/ 10 июля 2019

Эта проблема иногда возникает из-за дублирования измерений в переменных. Как видно из приведенного выше фрейма данных для столбца 1_942451_T/C имеются дублированные значения. Простое и ad hoc решение этой проблемы заключается в дрожании значений:

jittered_DF <- data.frame(lapply(df, jitter))

или

r_DF <- data.frame(lapply(df, rnorm))

Возможно, было бы точнее, если бы метод jitter() мог быть применен только к тем столбцам с дублирующимися значениями, а не ко всему фрейму данных.

...