Come testare l'uniformità in diverse dimensioni?


13

Testare l'uniformità è qualcosa di comune, tuttavia mi chiedo quali siano i metodi per farlo per una nuvola di punti multidimensionale.


Domanda interessante. Stai considerando voci indipendenti?

1
@Procrastinator Sto pensando a questo punto in questo momento. Cercare di capire se è possibile avere uniformità senza indipendenza. Qualsiasi suggerimento è il benvenuto.
gui11aume,

4
Sì, è possibile avere uniformità senza indipendenza. Ad esempio, campionare dall'unità -cube generando una griglia uniforme di ϵ -cubes che copre R n e compensando la sua origine secondo una distribuzione uniforme sul ϵ cubo. Conserva i centri di quei cubi ϵ che rientrano nel cubo dell'unità. Se lo desideri, esegui il campionamento casuale da essi. Tutti i punti hanno pari possibilità di essere selezionati: la distribuzione è uniforme. Anche il risultato sembra uniforme, ma poiché non ci sono due punti a distanza ϵ l' uno dall'altro, ovviamente i punti non sono indipendenti. nϵRnϵϵϵ
whuber

Risposte:


14

Il metodo standard utilizza la funzione K di Ripley o qualcosa derivato da essa come una funzione L. Questo è un diagramma che riassume il numero medio di vicini dei punti in funzione della distanza massima tra loro ( ). Per una distribuzione uniforme in n dimensioni, quella media dovrebbe comportarsi come ρ n : e lo farà sempre per piccoli ρ . Si discosta da tale comportamento a causa del raggruppamento, di altre forme di non indipendenza spaziale e degli effetti collaterali (da cui è fondamentale specificare la regione campionata dai punti). A causa di questa complicazione - che peggiora come nρnρnρnaumenta: nella maggior parte delle applicazioni viene eretta una banda di confidenza per la funzione K nulla tramite simulazione e la funzione K osservata viene sovrastampata per rilevare le escursioni. Con un po 'di pensiero ed esperienza, le escursioni possono essere interpretate in termini di tendenze a raggrupparsi o meno a determinate distanze.

Figura 1

Esempi di una funzione K e della sua funzione L associata da Dixon (2001), ibid. La funzione L è costruita in modo tale che per una distribuzione uniforme sia la linea orizzontale a zero: un buon riferimento visivo. Le linee tratteggiate sono bande di confidenza per questa particolare area di studio, calcolate tramite simulazione. La traccia grigia solida è la funzione L per i dati. L'escursione positiva a distanze 0-20 m indica un certo raggruppamento a queste distanze.L(ρ)ρ

Ho pubblicato un esempio funzionante in risposta a una domanda correlata su /stats//a/7984 , in cui un grafico derivato dalla funzione K per una distribuzione uniforme su una varietà bidimensionale incorporata in è stimato dalla simulazione.R3

In R, lo spazio spaziale funziona keste k3estcalcola la funzione K rispettivamente per e n = 3 . In più di 3 dimensioni probabilmente sei da solo, ma gli algoritmi sarebbero esattamente gli stessi. È possibile eseguire i calcoli da una matrice di distanza calcolata (con moderata efficienza) da .n=2n=3stats::dist


hai mai capito la relazione tra il ponte browniano e le trame che mostri nella risposta a cui ti colleghi?
gui11aume,

13

Si scopre che la domanda è più difficile di quanto pensassi. Tuttavia, ho fatto i compiti e, dopo essermi guardato intorno, ho trovato due metodi oltre alle funzioni di Ripley per testare l'uniformità in diverse dimensioni.

Ho creato un pacchetto R chiamato unfche implementa entrambi i test. Puoi scaricarlo da github all'indirizzo https://github.com/gui11aume/unf . Gran parte di esso è in C, quindi dovrai compilarlo sul tuo computer con R CMD INSTALL unf. Gli articoli su cui si basa l'implementazione sono in formato pdf nel pacchetto.

Il primo metodo deriva da un riferimento menzionato da @Procrastinator ( Test di uniformità multivariata e sue applicazioni, Liang et al., 2000 ) e consente di testare l'uniformità solo sull'ipercubo dell'unità. L'idea è di progettare statistiche di discrepanza asintoticamente gaussiane dal teorema del limite centrale. Ciò consente di calcolare una statistica , che è la base del test.χ2

library(unf)
set.seed(123)
# Put 20 points uniformally in the 5D hypercube.
x <- matrix(runif(100), ncol=20)
liang(x) # Outputs the p-value of the test.
[1] 0.9470392

Il secondo approccio è meno convenzionale e utilizza alberi di spanning minimi . Il lavoro iniziale fu eseguito da Friedman & Rafsky nel 1979 (riferimento nel pacchetto) per verificare se due campioni multivariati provenissero dalla stessa distribuzione. L'immagine seguente illustra il principio.

uniformità

I punti di due campioni bivariati sono tracciati in rosso o blu, a seconda del loro campione originale (pannello di sinistra). Viene calcolato l'albero di spanning minimo del campione raggruppato in due dimensioni (pannello centrale). Questo è l'albero con la somma minima delle lunghezze dei bordi. L'albero è scomposto in sottotitoli in cui tutti i punti hanno le stesse etichette (pannello di destra).

Nella figura seguente, mostro un caso in cui i punti blu sono aggregati, il che riduce il numero di alberi alla fine del processo, come puoi vedere nel pannello di destra. Friedman e Rafsky hanno calcolato la distribuzione asintotica del numero di alberi che si ottengono nel processo, il che consente di eseguire un test.

non uniformità

L'idea di creare un test generale per l'uniformità di un campione multivariato è stata sviluppata da Smith e Jain nel 1984 e implementata da Ben Pfaff in C (riferimento nel pacchetto). Il secondo campione viene generato uniformemente nello scafo convesso approssimativo del primo campione e il test di Friedman e Rafsky viene eseguito sul pool di due campioni.

Il vantaggio del metodo è che verifica l'uniformità su ogni forma convessa multivariata e non solo sull'ipercubo. Il forte svantaggio è che il test ha una componente casuale perché il secondo campione viene generato a caso. Naturalmente, si può ripetere il test e fare una media dei risultati per ottenere una risposta riproducibile, ma questo non è utile.

Continuando la precedente sessione R, ecco come va.

pfaff(x) # Outputs the p-value of the test.
pfaff(x) # Most likely another p-value.

Sentiti libero di copiare / fork il codice da github.


1
Ottima panoramica, grazie! Per le generazioni future, ho anche trovato questo articolo un utile sommario "pratico" (non affiliato agli autori in alcun modo).
Martedì

3

(U,Z)UUniform(0,1)Z=U0<p<1W1pWUniform(0,1)U

nnχ2


1
2n

@whuber non credo che abbiamo optato per il numero minimo di celle necessario e diverse dimensioni non significano necessariamente grandi dimensioni qui. Potremmo avere a che fare solo con 3 o 4.
Michael R. Chernick il

5
La tua risposta diventa più utile a tutti i lettori quando ne definisci lo scopo e la potenziale applicabilità. (Una strategia alternativa, nello spirito di una buona consulenza statistica, è quella di utilizzare i commenti per chiedere al PO il possibile numero di dimensioni e quindi adattare la risposta a tale.) (+1 per il miglioramento.)
whuber

"Quindi fai un test \ Chi ^ 2 per uniformità." - Potresti per favore ampliarlo? In Wikipedia en.wikipedia.org/wiki/Pearson%27s_chi-squared_test ci sono solo test Chi2 di bontà di adattamento, omogeneità e indipendenza.
Yaroslav Nikitenko,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.