R: Trovare il Punto di Massimo in un set di dati

0

Domanda

Sto utilizzando il linguaggio di programmazione R. Supponiamo di avere i seguenti dati:

set.seed(123)

a = rnorm(100000,10,10)
b = rnorm(100000,10,10)

my_data = data.frame(a,b)

plot(my_data$a, my_data$b)

enter image description here

Quando si guarda a questi dati:

 head(my_data)
          a         b
1  4.395244 12.649934
2  7.698225 28.307475
3 25.587083  9.406217
4 10.705084  9.467906
5 11.292877 14.379042
6 27.150650 23.374490

La mia Domanda: c'È un modo per scoprire se questo set di dati contiene un punto tale che

  • tutti i valori di "a" sono più piccoli di una coordinata di questo punto E
  • tutti i valori di "b" sono più piccoli rispetto alla b-coordinate di questo punto

C'è un modo per scoprire se questo set di dati contiene un "punto di massimo globale"?

enter image description here

Per esempio, come punto rosso sopra. So che nella maggior parte dei casi, è improbabile trovare un punto, visto che il punto con il più grande di una coordinata non necessariamente la più grande b-coordinare e viceversa:

#row with max value of "a"
which(my_data == max(my_data$a), arr.ind=TRUE)

       row col
[1,] 23102   1

#row with max value of "b"
 which(my_data == max(my_data$b), arr.ind=TRUE)
      row col
[1,] 2071   2

#display row with max value of "a"
> my_data[23102,]
             a        b
23102 53.22815 4.500006

#display row with max value of "b"
> my_data[2071,]
            a       b
2071 15.85992 52.0609

Come possiamo vedere, la riga con il massimo valore di "a" non contiene il massimo valore di "b".

Grazie!

Nota: Nel mondo reale, spesso è impossibile trovare "globale il massimo dei punti", come big data i punti di "sovrapposizione" (righe diverse contenere un massimo di colonne diverse). Nel contesto di problemi di ottimizzazione, diversi punti spesso rispondono a questo criterio e sono tutti da considerarsi idonei - questi punti sono chiamati "non dominante" e ha detto di essere situato sulla "Frontiera di Pareto" (linea verde):

enter image description here

data-manipulation data-visualization r
2021-11-23 03:50:41
1

Migliore risposta

1

Qui è un modo. Dal momento che il numero di riga è 0, non c'è nessun punto con entrambi a e b sono il massimo.

library(dplyr)

my_data %>%
  filter(if_all(.fns = ~.x == max(.x)))
# [1] a b
# <0 rows> (or 0-length row.names)
2021-11-23 04:00:22

@ www: grazie per la tua risposta! Ho provato a fare un esempio in cui ho volutamente aggiungere un punto di massimo e ha funzionato!
stats555

biblioteca(dplyr) a = rnorm(100000,10,10) b = rnorm(100000,10,10) my_data = dati.telaio(a,b) = rnorm(1,100,1) b = rnorm(1,100,1) my_data_1 = dati.telaio(a,b) final_data = rbind(my_data, my_data_1) final_data %>% filtro(if_all(.fns = ~.x == max(.x)))
stats555

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................