Der Grund dafür ist, dass winsorize
in robustHD
solve
verwendet. Wenn Sie sich den Code genauer ansehen, ruft winsorize
in einem Datenrahmen die Methode winsorize.data.frame
auf, bei der es sich einfach um ein Skript handelt, das as.matrix
ausführt und dann die Methode winsorize.matrix
verwendet. Dies macht eine Reihe von Dingen, aber das Problem ist hier, dass es die solve
Funktion verwendet.
Der Fehler, den Sie erhalten, ist von solve
. Der Fehler tritt wahrscheinlich auf, weil Sie einige Variablen/Spalten enthalten, die sehr stark korreliert sind, oder vielmehr lineare Kombinationen von einander sind. Sie sollten überprüfen, ob Sie doppelte Variablen oder Variablen haben, die sich gegenseitig transformieren.
Es gibt mehrere Dinge, die Sie tun können:
- Entfernen Sie eine der stark korrelierten Variablen und versuchen Sie es erneut.
- Überprüfen Sie ein anderes Paket zu verwenden
winsorize
von.
- Schreiben Sie Ihre eigene Winsorize-Funktion.
Der schnellste Weg, um den zweiten Schritt zu tun:
require(sos)
findFn("winsorize")
Dies wird eine Übersicht über alle Funktionen erzeugt, die das Wort „winsorize“ in ihrer Beschreibung. Suchen Sie einfach nach Funktionen, die für die Winsorisierung beschrieben werden.
Hallo, willkommen zu StackOverflow. Es wäre sehr hilfreich, wenn das Beispiel reproduzierbar wäre. Können Sie einen minimalen Datensatz bereitstellen, der diesen Fehler repliziert? Kannst du auch notieren, von welchem Paket du die 'winsorize' Funktion bekommen hast? Mehrere Pakete bieten eins. – Laterow
@Laterow Danke! Ich habe das Paket 'robustHD' benutzt. Leider kann ich die Daten nicht hochladen, da sie mit der Arbeit zu tun hat ... –