Dit is een site voor studenten van de Open Universiteit. Voordat je een vraag kunt stellen moet je even een account aanmaken (dit systeem is niet gekoppeld aan je OU studentnummer en wachtwoord).

Welkom bij het vraag- en antwoord systeem van de onderzoeks-practica van de studie psychologie bij de Open Universiteit.

Houd er, als je een vraag stelt, rekening mee dat je de richtlijnen volgt!

0 leuk 0 niet-leuks

Wanneer ik in R een factoranalyse doe met de functie scaleDiagnosis uit het package userfriendlyscience, dan krijg ik hogere eigenwaardes en factorladingen dan wanneer ik de functie fa uit het package psych gebruik. 

Dit zijn de resultaten door fa:

                   MR1  MR2   h2   u2 com

Norms1_R  -0.01  0.77  0.59 0.41   1

Norms2       0.42  0.04  0.18 0.82   1

Norms3       0.90  0.00  0.81 0.19   1

Norms4_R   0.04  0.52  0.27 0.73   1

                       MR1  MR2

SS loadings   1.00    0.87

Deze zijn de resultaten door scaleDiagnosis:

Eigen values: 1.475, 1.309, 0.625, 0.59

Loadings:

                    TC1      TC2  

Norms1_R   0.839      

Norms2                    0.830

Norms3                    0.833

Norms4_R   0.834      

Wanneer ik deze gegevens vergelijk met SPSS, valt het op dat de loadings van fa meer overeenkomen met 'Communalities' in SPSS en de loadings van scaleDiagnosis, meer overeenkomen met 'Component Matrix' of 'Pattern Matrix' van SPSS.

Nu is mijn vraag wat het verschil juist is tussen deze twee soorten loadings en welke van de twee ik het best weergeef in mijn verslag? (Aangezien de Communalities geen echte factorladingen zijn, zou ik kiezen voor deze van scaleDiagnosis)

Een tweede vraag die ik heb betreffende de factoranalyse van scaleDiagnosis, is de extractie- en rotatiemethode die gebruikt wordtIk wil dit graag weten voor mijn verslag. Van de functie fa heb ik deze informatie gevonden, maar bij de info van scaleDiagnosis vind ik geen verdere info over de factoranalyse die gebruikt wordt.  

in Univariate (descriptieve) statistiek door (240 punten)
bewerkt door

1 Antwoord

0 leuk 0 niet-leuks

scaleDiagnosis voert zowel een PCA (principale componenten analyse) als een factoranalyse uit, beiden met Oblimin rotatie. Echter, hij laat standaard alleen de factorladingen uit de PCA zien. De factoranalyse wordt met Maximum Likelihood algoritmen uitgevoerd.

De functie fa voert juist een factoranalyse uit, by default ook met de Oblimin rotatie. Hier is de default om de "minimum residuals" aanpak te gebruiken in plaats van de maximum likelihood algoritmen (fm="minres" of fm="ml")

Dat die twee verschillende uitkomsten geven is dus logisch.

De reden dat scaleDiagnosis ongeveer dezelfde uitkomsten geeft als SPSS is omdat SPSS standaard geen factoranalyse doet, maar een componentenanalyse. De reden dat de uitkomsten nog iets verschillend zijn is omdat SPSS waarschijnlijk standaard de methode van de minimale residuen gebruikt in plaats van maximum likelihood.

Overigens is een belangrijke les dat je nooit cut-offs moet gebruiken om de resultaten van factoranalyse of componentenanalyse (of uberhaupt, welke analyse dan ook) te interpreteren. Er zijn veel verschillende methoden die je kunt gebruiken, die allemaal goed te verdedigen zijn, en allemaal net andere uitkomsten geven. Verder zijn je uitkomsten altijd verschillende van steekproef tot steekproef. Een eigenwaarde kan in de ene steekproef 1.4 zijn, en in de andere 0.7, bij steekproeven uit dezelfde populatie. Kijk dus altijd naar verschillende informatiebronnen tegelijk.

PS: ik heb nagekeken welke rotatiemethode scaleDiagnosis gebruikt door in R gewoon de naam van de functie in te geven:

> scaleDiagnosis

Dan laat R de broncode zien, waaronder:

    if (ncol(res$cor) > 2) {
        res$pca <- principal(r = res$cor, n.obs = res$n, rotate = "oblimin", 
            nfactors = res$factors)
        res$fa <- fa(r = res$cor, n.obs = res$n, rotate = "oblimin", 
            fm = "ml", nfactors = res$factors)
    }

Hij 'dwingt' dus Oblimin rotatie af. En hij slaat zowel een PCA als een FA op. Maar hij laat er maar eentje zien, dus daarna heb ik gekeken naar de broncode van de functie om de resultaten van class scaleDiagnosis te printen:

> print.scaleDiagnosis
function (x, ...) 
{
    print(x$scaleReliability, ...)
    cat(paste0("\nEigen values: ", paste(round(x$eigen$values, 
        3), collapse = ", ")))
    print(x$pca$loadings, ...)
    cat("\n")
    print(x$describe, ...)
    print(x$scatterMatrix$output$scatterMatrix, ...)
    invisible()
}
<environment: namespace:userfriendlyscience>

Hij laat dus alleen de PCA zien.

door (77.8k punten)
...