Hilfe bei Faktorenanalyse benötigt!

Varianzanalyse, Diskriminanzanalyse, Kontingenzanalyse, Faktorenanalyse, Clusteranalyse, MDS, ....

Moderator: EDi

Antworten
blue_thunder

Hilfe bei Faktorenanalyse benötigt!

Beitrag von blue_thunder »

Hallo zusammen,

ich soll für meine Abschlussarbeit ein Regressionsmodell erstellen. Da für das Regressionsmodel a), es eine sehr hohe Anzahl an unabhängigen Vriablen gibt und/ aber b), diese zum Teil sich sehr ähneln, macht es laut Betreuer Sinn, eine Faktorenanalyse durchzuführen. So weit, so gut,

Nun fangen die Probleme aber bereits bei den für eine Faktorenanalyse vorab zu erstellenden Untersuchungen an.

1) KMO-Kriterium: Ich habe zwei verschiedene Funktionen ausprobiert, um das KMO zu berechnen. Einmal mit dem package psych (Funktion: KMO(x)), einmal mit einer externen Funktion (kmo(x))

als Argument x übergebe ich entweder die Datei "Training", das ist eine CSV, deren Spalten die Zeitreihen meiner unabhängigen Variablen enthalten oder, alternativ, die Korrelatinsmatrix aus dieser. Und sowohl Training als auch die Korrelationsmatrix jeweils einmal als originale, und einmal als z-nomierte Version.

NIX davon hilft, es kommt nur quatsch bei rum. (entweder NaNs, 0, oder alles 0.5 mit einer Fehlermekdung. Bzw eine Fehlermeldung kommt auch bei den anderen Fällen), und zwar:

Error in solve.default(r)
system is computationally singular: reciprocal condition number=1.16711e-18
matrix is not invertible, image not found

2)Bartlett Test
Mit der funktion barlett.test(x), x analog zu Problem 1), kommt lediclgich bei x=Training ein Ergebnis, und keine Fehlermeldung raus. Und zwar:
Bartletts K-squared=44956000, df=50, p-Value<2.2e-16

Wie darf ich das jetzt intepretieren? und ist es überhaut richtig, meine csv mit den Trainigsdaten als Arguent zu übergeben?


3) Wie führe ich denn nun wirklich eine Faktorenanlye mit R durch? im Parallelfred ist ja ein Link zu www.faes.de, dieser enthält ebenfalls eien Link zu eienr Funktion "Faktorenanalyse" von Günther Faeß, die geschreben wurde dafür, aber diese produziert bei mir ebenfalls einen Fehler wenn ich sie ausführen will:

faktorenanalyse(Training)
Error in optim(start, FAfn, FAgr, method = "L-BFGS-B", lower = lower, :
L-BFGS-B needs finite values of 'fn'
In addition: Warning message:
In log(e) : NaNs produced
Called from: optim(start, FAfn, FAgr, method = "L-BFGS-B", lower = lower,
upper = 1, control = c(list(fnscale = 1, parscale = rep(0.01,
length(start))), control), q = factors, S = cmat)
Browse[1]> Q NaNs produc


Sorry für die vielen, und eventuell auch dummen Fragen, aber ich bin am verzweiflen. Ich habe bis vor kurzem noch nie etwas von einer Faktorenanalyse gehört, und in einem Monat ist Abgabe... :(:(:(

LG
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Hilfe bei Faktorenanalyse benötigt!

Beitrag von student »

Wenn ich die Fehler-Meldungen und Hinweise lese, stellt sich für mich die Frage, wie Deine Datendatei bzw Matrix aussieht. In der Faktorenanalyse werden Matrizen hin und her geschoben und Deine Matrix scheint nicht invertierbar zu sein, es scheinen NA's vorzuliegen...
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
blue_thunder

Re: Hilfe bei Faktorenanalyse benötigt!

Beitrag von blue_thunder »

Englisch kann ich wohl auch ;)

Ich will ja nur ausschließen, dass ich die Anwendung richtig vollzogen habe, bzw. die -theoretisch- richtigen Argumente übergebe.
NAs sind nämtlich in den Trainigsdaten definitiv nicht vorhanden, jede Zelle hat Werte. Daran kann es schon einmal nicht liegen.

Ich habe jetzt das Package "rela" entdeckt, mit der Funktion "paf" die mir KMO, Bartlett etc ausspukt. Also eigentlich genau das was ich brauche. Aber auch hier die Fehlermeldung*:

Error in solve.default(x) :
system is computationally singular: reciprocal condition number = 3.22081e-18
In addition: Warning message:
In log(det(x)) : NaNs produced

*Wenn ich paf() als Argument die z-standardisierten** Trainigsdaten übergebe. Bei den originalen Trainingsdaten meckert er, dass das Argument kein numeric ist

**via TrainingZ=scale(Training)
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Hilfe bei Faktorenanalyse benötigt!

Beitrag von EDi »

Error in solve.default(x) :
system is computationally singular: reciprocal condition number = 3.22081e-18
deutet darauf hin, dass die (Kovarianz?*) Matrix nicht invertierbar ist.
Auch ich vermute es ist irgendwas mit deinen Daten (100% kollininearität oder sowas in die Richtung).
Ohne ein reproduzierbares Beispiel werden wir hier aber nicht viel weiter kommen...


*Ich kenne mich mir der Faktorenanalyse nicht aus (dafür mit der verwandten Hauptkomponenten analyse).
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Hilfe bei Faktorenanalyse benötigt!

Beitrag von student »

Hallo blue_thunder,

da Du mit diesem User-Namen aktiv bist, glaube ich Dir gerne, dass Du der englischen Sprache mächtig bist. Es ging aber nicht um die Sprache, sondern um die Aussage! ;)

Bezüglich des Beispiels schließe ich mich EDi an. Aber bevor Du nun Deine Aufgabe komplett hoch lädst, möchte ich Dir eine meiner Vorgehensweisen vorschlagen: Fange mit einem kleineren Modell an und baue das Modell dann nach und nach aus. Aber auch diese Vorgehensweise kommt immer erst nach ein wenig beschreibende Statistik, damit abgeschätzt werden kann, was sinnvoll ist.
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
blue_thunder

Re: Hilfe bei Faktorenanalyse benötigt!

Beitrag von blue_thunder »

ich kann/ darf die Daten ja nicht rausgeben. Ich habe aber soeben mit einem "Minimal"-Beispiel (6 Variablen, wovon 3 untereinander sehr ähnlich sind und hohe Korrelation aufweisen) paf() und kmo() etc. probiert, das hat funktioniert (mit der scale()-Version davon). Irgendwo scheinen Daten- wie auch immer- fehlerhaft zu sein.

Ich werde wohl nicht herum kommen, immer wieder eine weitere Variable dem "Minimal"-Datensatz hinzuzufügen und zu testen, wo der Fehler ist:/

Wenn ich etwas herais gefunden habe, melde ich mich.

Danke für eure Unterstzützung=)

Edit: @student; was meinst du mit "wenig beschreibende Statistik, damit abgeschätzt werden kann, was sinnvoll ist"? Ich will ja mittels kmo/msa und bartlett-Test etc. herusfinden, ob eine Faktorenanalyse sinvoll ist
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Hilfe bei Faktorenanalyse benötigt!

Beitrag von student »

Ist richtig, dazu ist die Faktorenanalyse ja auch da! Jetzt kommt das UND ;) : Wenn ich beschreibende Daten sehe, kann ich abschätzen, was ich zu erwarten habe (ich weiß wie sich das anhört, Intuition wollte ich nicht schreiben....). Ich habe dann eine Erwartung, wie z. B. Variable xyz auf Faktor ABC im Vergleich zur Variable klm lädt.

Ich habe schon Analysen gemacht, da war es leicht anhand der deskriptiven Statistik zu sehen, welchen Einfluss die Variablen möglicherweise haben.
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
blue_thunder

Re: Hilfe bei Faktorenanalyse benötigt!

Beitrag von blue_thunder »

Hallo,

ich habe nun herausgefunden welche Variablen zur Fehlermeldung:

system is cumputationally singular: reciproced condtion number =1.6711e-18
In addition: Warning message:
In log(det(x)) : NaNs produced

bei paf() führen. Und zwar all diejenigen Variablen, die eine "Zusammenfassung" anderer Variablen darstellen.
Beispiel1: Ich habe Heating Degree Days und Cooling Degree Days und diese einmal zusammen gesasst als Degree Days. Letzteres sorgt für die Fehlermeldung.

So. Kann mir einer hier erklören WARUM dis zu Fehlern führt?
Das Ding ist, ich möchte ja u.a. untersuchen, ob es sinnvoller ist , die Variablen einzeln in das Modell rein zu nehmen oder eben als zusammengefasste Variable...

LG
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Hilfe bei Faktorenanalyse benötigt!

Beitrag von jogo »

Das nennt man Multikollinearität;
Ich habe Heating Degree Days und Cooling Degree Days und diese einmal zusammen gefasst als Degree Days.
in Deinem Fall, wenn z.B. HeatingDay mit 0 und 1 codiert ist und CoolingDay auch mit 0 und 1
dann ist DegreeDay = HeatingDay + CoolingDay
Solcherlei Abhängigkeiten sorgen für eine singuläre Systemmatrix (d.h. die Systemmatrix hat nicht mehr Vollrang)
(wie auch z.B. bei der Linearen Regression https://de.wikipedia.org/wiki/Multikollinearit%C3%A4t)

Hier ist ein kleines Beispiel für diese Situation:

Code: Alles auswählen

a <- rnorm(4)  
b <- rnorm(4)  
X <- cbind(a, b, a+b)  
solve(t(X)%*%X)
Gruß, Jörg
blue_thunder

Re: Hilfe bei Faktorenanalyse benötigt!

Beitrag von blue_thunder »

Ja dass das Mulitkollinearität ist, ist mir klar. Dennoch möchte ich ja untersuchen, ob es zu besseren Ergebnissen führt, wenn ich zwei einzelne (HDD und CDD) oder eine einzige (DD) Zeitreihe im Modell implementiere.

Für die Faktorenanlyse habe ich ja nun DD (und die anderen Zeitreihen mit Multikollinearitäten respektive die, in denen R gemeckert hat) entfernt. Nur muss ich ja irgendwie begründen, warum ich DD und nciht CDD+HDD entferne...

Ich persönlich würde am liebsten "manuell clustern" und dann schlicht anhand von t-Value und/ oder adj. R^2 entscheiden, warum ich weche Variable reinnehme. Der betreuuende Prof sieht das natürlich nicht so^^
Antworten