eigentlich eine scheinbar simple Aufgabe, für die ich aber keine rechte Lösung finde. Ich habe folgende density Funktion erstellt:
Code: Alles auswählen
dmode <- function(x) {
dxapprox <- approxfun(density(x, adjust=1, kernel = c("gaussian"), na.rm = TRUE))
dx <- density(x, adjust=1, kernel = c("gaussian"), na.rm = TRUE)
plot(dx)
points(x, dxapprox(x),col=2)
dx$x[which.max(dx$y)]
}
Code: Alles auswählen
selected_data$a <- apply(selected_data[,2:ncol(selected_data)],1,dmode)
Nun möchte ich aber pro Zeile zusätzlich zum Dichteschwerpunkt auch noch die Bandwidth der Berechnung in den Datensatz als zusätzliche Variable schreiben.
Dazu ändere ich meien Funktion wie folgt:
Code: Alles auswählen
dmode <- function(x) {
dxapprox <- approxfun(density(x, adjust=1, kernel = c("gaussian"), na.rm = TRUE))
dx <- density(x, adjust=1, kernel = c("gaussian"), na.rm = TRUE)
plot(dx)
points(x, dxapprox(x),col=2)
dx$x[which.max(dx$y)]
dx.list <- list(dx$x[which.max(dx$y)], dx$bw)
return(dx.list)
}
Herzlichen Dank für einen Tip
Philipp