hierarchischePartit/loop/na.omit löscht in Df ganze Zeile

Faktorenanalyse, Clusteranalyse, Diskriminanzanalyse und weitere multivariate Verfahren mit R.

hierarchischePartit/loop/na.omit löscht in Df ganze Zeile

Beitragvon Fablo » Mi 27. Jan 2016, 16:53

Hallo Leute,
ich schreibe gerade an meiner Masterarbeit im Bereich Biogeographie. Im Analyseteil möchte ich u.a. mit Hilfe einer hierarchischen Partitionierung herausfinden, wie wichtig verschiedene Umweltvariablen für verschiedene Pflanzenarten sind.
ich habe einen Dataframe, der aus den Werten für 10 Umweltvariablen und 207 Pflanzenarten besteht.

Für jede dieser Pflanzenarten einzeln möchte ich eine hierarchische Partitionierung gegenüber allen 10 Umweltvariablen durchführen, sprich ich möchte hierfür einen Loop erstellen. Für die hierarchische Partitionierung dürfen keine NAs mehr im Dataframe vorhanden sein. Allerdings habe ich im Dataframe bei den Pflanzenarten einige NAs drin. Deswegen habe ich die Funktion na.omit angewendet. Allerdings löscht na.omit ja immer ganze Zeilen. Dadurch, dass die NAs bei den verschiedenen Pflanzenarten natürlich nicht in der gleichen Zeilen sind, werden mir für eine beliebige Pflanzenart x nicht nur die Zeilen gelöscht, für die bei dieser Pflanzenart x NA Werte eingetragen sind, sondern auch die Zeilen, bei denen andere Pflanzenarten NA Einträge haben.
(Wenn ich einen Dataframe mit nur einer Pflanzenart erstelle, funktioniert der na.omit Befehl und auch die hierarchische Partitionierung. Der Loop bei der hierarchischen Partitionierung funktioniert zwar, allerdings gibt es eben das Problem mit den fehlenden Zeilen wie oben beschrieben.)

Weiß jemand, wie man einen Code eingeben kann, der na.omit nur für jede Spalte einzeln anwendet (oder gibt es dann das Problem, dass der selbe Dataframe unteschiedlich lange Spalten hat?)? Oder weiß jemand, wie man die hierarchische Partitionierung so laufen lassen kann, dass einfach die NA-Werte nicht gezählt werden (na.rm=TRUE als Argument bei hier.part funktioniert nicht...)?

Außerdem habe ich noch ein weiteres Problem: Wenn ich bei family statt "gaussian" "binomial" auswähle (was ja Sinn macht, weil ich nur presence/absence data habe bzw. 1 und 0), kam folgende Fehlermeldung, als ich für den großen Dataframe das ganze laufen lassen habe: "glm.fit: fitted probabilities numerically 0 or 1 occurred". Die Fehlermeldung kam allerdings nicht mehr, als ich hier.part mit dem verkleinerten Datensatz, den ich hier hochgeladen habe, laufen gelassen habe. Was bedeutet die Fehlermeldung?

Freue mich über jede Antwort:)

Mein Code:

install.packages("hier.part")
library("hier.part")
yx<-read.csv2(file="Forum_verändert.csv")

df_yx<-as.data.frame(yx)
df_yxna<-na.omit(df_yx)

str(df_yxna)
###bei str sehe ich, dass es nur noch weniger obs. gibt als in der Ursprungstabelle "Forum_verändert.csv"

plants<-list(df_yxna$A1, df_yxna$A2, df_yxna$A3, df_yxna$A4, df_yxna$A5, df_yxna$A6, df_yxna$A7, df_yxna$A8)


for (i in plants) {
hier<-hier.part(i, df_yxna[,1:10], family="binomial", gof="RMSPE",barplot=TRUE)
print(hier)
}
Dateianhänge
Forum_verändert.xlsx
Wollte eine csv Datei hochladen, ist aber wohl nicht erlaubt. Also deswegen bitte in csv umwandeln.
Insgesamt ist die Tabelle ein kleiner Auszug aus der Ursprungstabelle, in der 199 Pflanzenarten mehr drin sind.
"Env1" bis "Env10" steht für die Umweltvariablen. "A1" bis "A8" für die Pflanzenarten.
(244.77 KiB) 171-mal heruntergeladen
Fablo
 
Beiträge: 1
Registriert: Mo 11. Jan 2016, 11:50
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Zurück zu Multivariate Verfahren

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron