(Prefazione: non sono né uno statistico né un programmatore, lavoro nelle discipline umanistiche, abbi pietà della mia anima).I calcoli della distanza euclidea in R non hanno senso
Ho bisogno di calcolare la distanza euclidea tra una serie di punti a R. ho usato dist(), come segue:
> x <- c(0,0)
> y <- c(0,10)
> dist(rbind(x,y))
x
y 10
Fin qui, tutto bene. Ma quando guardavo i miei risultati (con numeri reali), erano orribilmente off. Tanto che ho capito che il mio script R stava acquisendo dati dalle colonne sbagliate. Ma ho controllato, e non lo è.
Così ho iniziato a giocare con numeri di giocattoli, e mi ha sorpreso. L'esempio precedente (una linea verticale) funziona correttamente, come fa la seguente (una linea orizzontale):
> x <- c(0,10)
> y <- c(0,0)
> dist(rbind(x,y))
x
y 10
Ma quando la linea forma due punti è diagonale, singolarità ne consegue:
> x <- c(0,10)
> y <- c(0,10)
> dist(rbind(x,y))
x
y 0
A distanza di 0? Eh? Non può essere giusto.
E quando i punti sono identici (che è del tutto possibile nei miei dati), si va nella tana del coniglio:
> x <- c(0,0)
> y <- c(10,10)
> dist(rbind(x,y))
x
y 14.14214
Se ciò non fosse 0? I punti sono identici, dopotutto, quindi non ci può essere distanza tra loro.
Nel caso ci fosse qualcosa di sbagliato in dist(), ho provato ad implementare la formula manualmente, passando da Wikipedia. Stessi risultati:
> sqrt(sum((x - y)^2))
[1] 14.14214
come ho detto sopra, la mia matematica sfondo è minimo, quindi mi aspetto che l'errore qui è mio. Se è così, per favore spiega di cosa si tratta e come correggerlo. Ma da dove mi trovo in questo momento, sembra che qualcosa sia molto sbagliato.
E, peggio di tutto, non posso analizzare i miei dati.
+1 per un primo post chiaro che ha seguito le linee guida della documentazione. –