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

Is er een manier om een non-parametrische multivariate analyse te doen in SPSS? Ik heb 4 onafhankelijke groepen (nominaal) en meerdere afhankelijke variabelen (scale). De afhankelijke variabelen zijn niet normaal verdeeld en ik heb kleine groepen ( n= 3 tot 6). Ik kom uit op de ANOSIM, maar die kan ik niet in SPSS-26 doen. Het schijnt wel in R te kunnen, maar ik heb nooit met R gewerkt. En R schijnt erg lastig te zijn.  Mijn vraag is : Is er manier om de analyse toch in SPSS te doen? Bijvoorbeeld: een kruskal-Wallis test met correctie voor de alpha, dus een kleinere alpha gebruiken a/k? of een andere (gratis/goedkoop) software die gebruiksvriendelijker is dan R, waarin deze analyse gedaan kan worden?

in SPSS door (120 punten)
Is het zoeken naar syntax en addins voor SPSS zoveel makkelijker dan de anosim() functie in R gebruiken? https://www.rdocumentation.org/packages/vegan/versions/2.3-5/topics/anosim
Dag Ron,

Dank je wel voor je antwoord. In SPSS hoef ik niet met syntax te werken. Ik gebruik de functies. Ik heb geprobeerd met R te werken maar ik kom er niet uit. Ik ben zo ver dat ik nu weet dat ik de programma Rstudio moet hebben en hoe ik mijn data vanuit SPSS naar Rstudio kan importeren. Maar ik begrijp de R formule niet. Ik herken alleen 'anosim' daarin. Ik heb op youtube gekeken, maar ik kom er ook niet uit. Kan je mij misschien meer uitleg geven hierover? Waar moet ik de afhankelijke en onafhankelijke variabelen noteren in de formule. Ik moet deze analyse doen om al mijn resultaten te hebben voor mijn mastherthese zodat ik kan afstuderen.

Hoewel het niet makkelijk is om snel R uit te leggen, helpt het om R, de programmeertaal, te onderscheiden van software die werken met R vergemakkelijken, zoals RStudio, Rcommander, JAMOVI of Visual Studio Code. RStudio is voor de gemiddelde wetenschapper denk ik het gebruiksvriendelijkst. Maar Rstudio draait R, en hangt daar wat menu-opties boven.

Als je met R wilt werken kan het handig zijn om even een paar dagen niets anders te doen dan met R leren spelen, bijvoorbeeld via http://www.cookbook-r.com/

Als je een goed gevoel hebt van R dan wordt het makkelijker om te begrijpen hoe het afwijkt van programma's als SPSS. Dat R een programmeertaal is en geen analyseprogramma is een gigantisch verschil in hoe je het moet benaderen. Bijvoorbeeld, in SPSS, excel, etc. zit alles wat het programma standaard hoort te kunnen al ingebakken. Je hoeft enkel SPSS te openen, en je kunt beginnen met werken. R als taal heeft vanuit zichzelf slechts wat basisfunctionaliteit, maar als je aan de slag wilt moet je op zoek naar 'libraries', in R packages genaamd, die je op weg helpen met complexere handelingen. Die packages zijn voorgeprogrammeerde functies, zodat je niet het wiel zelf opnieuw hoeft uit te vinden, zoals een anova van de grond af aan te programmeren. 

R heeft daarom wel een eenvoudige basistaal waarmee je met ieder package communiceert. Eenmaal geinstalleerd (install.packages('') ) en ingeladen (libary() ) in het geheugen, is het eigenlijk altijd een kwestie van opzoeken in de handleiding van de package hoe de functie aangeroepen moet worden en welke opties er zijn (dus altijd de vorm functienaam(optie1, optie2, etc).

Dus zonder de anosimfunctie verder te kennen weet ik met kennis van R dat ik de documentatie in R kan opvragen door een vraagteken voor de functienaam te typen, bijvoorbeeld ?anosim

R geeft dan bijvoorbeeld als terugkoppeling vaak als eerste het globale gebruik van de functie en de standaardwaarden). Bijvoorbeeld voor anosim:
anosim(dat, grouping, permutations = 999, distance = "bray", strata = NULL,
    parallel = getOption("mc.cores"))

 Dus als we anosim() invoeren dan gebeurd er nog niets, want dat en grouping moeten nog opgegeven worden. permutaties worden standaard op 999 gezet etc. Wat deze waarden betekenen staat in de documentatie.

Hoe je dan precies de functie in R uitschrijft hangt af van hoe je de dataset genoemd hebt, en hoe de variabelen heten. Stel dat mijn responsvariabelen Y heten, en mijn onafhankelijke variabele X, dan zou het iets zijn als:

anosim(Y, X)

of voor leesbaarheid kun je toevoegen:

anosim(dat = Y, grouping = X)

In theorie zou er dan output moeten komen. Mijn gok is dat als je detailoutput wilt krijgen je dit op moet volgen met iets als summary(...), dus dat je iets moet doen als:

result <- anosim(Y,X)
summary(result)

Dank je wel Ron voor de uitgebreide en heldere antwoord! Ik ga me erin verdiepen deze week.

groet, Sabrine
Dag Ron,

Ik probeer anosim packages te installeren met:

>install.packages("anosim")

 maar ik krijg dat dit niet kan. zie bericht hieronder.

Op de website waarnaar er verwezen wordt, staat niks over anosim en ik kan niks uit die website begrijpen. Zijn er verschillende versies van R? In dit geval: hoe kan ik weten welke versie ik nodig heb voor anosim?

Warning in install.packages :
  package ‘anosim’ is not available for this version of R

A version of this package for your version of R might be available elsewhere,
see the ideas at
https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages

als ik >?anosim  in type, krijg ik het volgende:

No documentation for ‘anosim’ in specified packages and libraries:
you could try ‘??anosim’

dan type ik:

>??anosim

dan krijg ik rechtsonder: No results found

Het lijkt dat met de R die ik heb nu, geen anosim kan doen. klopt dit?

met tools>global options, in Rstudio, zie ik dat ik de volgende versie heb:

[Default] [64-bit] C:\Program Files\R\R-4.0.3

_vraag: hoe kan ik de juiste versie krijgen voor anosim?

alvast veel dank voor je hulp Ron.

met vriendelijke groet,

Sabrine

Het komt omdat de package niet anosim heet (maar de functie in een package). Volgens de documentatie is het een functie in het package 'vegandevs/vegan'. Een beetje een vreemde naam naar R-conventies eerlijk gezegd, maar blijkbaar is het een package dat nog in development is, dus misschien schonen ze de naam nog op.

Volgens de documentie (https://rdrr.io/github/vegandevs/vegan/) bij 'installation' moet de volgende code worden gebruikt om de package uit een 'remote repository' te halen, dus een bibliotheek die niet standaard door R gezocht wordt bij installatie.

install.packages("remotes")
remotes::install_github("vegandevs/vegan")
Installeren kan nog even gedoe zijn; voor dit soort 'remote' installaties zijn meestal nog extra R-packages nodig, zoals R-tools, devtools, etc. Kijk daarom niet op van extra foutmeldingen bij pogingen te installeren. Meestal werkt het om te wachten tot noodzakelijke 'dependencies' geinstalleerd zijn en het dan weer te proberen. Dit zijn de nadelen van werken met open source software (en R in het bijzonder) waar weinig over gesproken wordt door de fanclub helaas.

Dag Ron, nogmaals bedankt. Zonder jou zou ik niet weten hoe ik verder kan met mijn masterthesis.

Ik heb 'vegan' geinstaleerd en geload, samen met een het pakket 'pacman'. Het schijnt dat 'pacman' vele aantal basis packages heeft die nodig zijn voor installatie van vele andere packages. Rtools wil niet geinstaleerd worden, maar het schijnt dat dit niet hoeft als ik de windows versie van R heb.

Ik kan nu anosim draaien.

Ik heb de volgende command geschrijven in Rstudio:

#open file
prompting_and_SSMR <- read_sav("master onderwijswetenschappen/statistics/prompting and SSMR.sav")

#load vegan
require(vegan)

#voer anosim uit

anosim(x= prompting_and_SSMR$PRproportion + prompting_and_SSMR$SGproportion, grouping = prompting_and_SSMR$group,permutations = 999, distance = "bray", strata = NULL, parallel = 1)

result <- anosim(x= prompting_and_SSMR$PRproportion + prompting_and_SSMR$SGproportion, grouping = prompting_and_SSMR$group,permutations = 999, distance = "bray", strata = NULL, parallel = 1)

summary(result)
plot(result)

Ik ben onzeker of ik de permutation, distance, strata en parallel goed heb. Ik kan nergens duidelijk informatie vinden hierover. Ik ben de uitleg van Andy Field gewend. De uitleg die R geeft, begrijp ik niet. Ook niet als ik wikipedia erbij raadpleeg of reseachgate.

Ik heb 4 groepen (genummerd 1 t/m 4 ) en 2 variabelen gemeten (PRpropotion en SGpropotion).

Ik krijg het volgende als output:

ANOSIM statistic R: 0.3143
      Significance: 0.008

Permutation: free
Number of permutations: 999

Het lijkt dat er wel significant verschil is tussen de groepen, want R is positief en p is onder 0.05. Al heb ik nergens alpha ingesteld! Ik weet niet of dat standaard is in vegan.

onder summary krijg ik de volgende output:

ANOSIM statistic R: 0.3143
      Significance: 0.005

Permutation: free
Number of permutations: 999

Upper quantiles of permutations (null model):
  90%   95% 97.5%   99%
0.139 0.179 0.209 0.251

Dissimilarity ranks between and within classes:
        0%  25%  50%    75% 100%   N
Between  1 51.5 95.5 132.25  171 132
1       29 45.5 61.0  80.25  104   6
2        2 26.5 51.0  52.50   54   3
3        8 34.0 65.0  91.50  137  15
4        3 15.5 57.0 141.50  160  15

Hieruit begrijp ik dat de distance between the groups groter is dan de distances within the groups. Daarom is er significant verschil tussen de groepen. 
Dit is ook zichtbaar op de plot, die kan ik helaas niet kopieren en plakken hier. 
Verder zie ik dat p ineens anders is!!!

mijn vraag is : klopt deze analyse en interpretatie? en kan ik een soort step-down analyse doen in R, om te zien welke groep significant verschilt van de andere (zoals bij kruskal-Wallis analyse) ? 

alvast bedankt, Sabrine

Ik zit eerlijk gezegd een beetje te kijken naar je originele reden om naar anosim over te gaan en de hoeveel N die je gebruikt om de dissimilarity matrix op te stellen en ik vraag me dan af of het middel niet erger wordt dan de kwaal.

Sowieso is een n = 3 best laag, dat een andere groep n = 6 heeft maakt het dan niet veel beter. Waarom was de MANOVA nodig in de eerste plaats? Ik weet niet hoeveel afhankelijke variabelen er precies zijn, maar als vier groepen vergeleken worden op een grote hoeveelheid afhankelijke variabelen dan zie ik zeker de meerwaarde van ANOSIM, want dan is het in wezen een ANOVA op een dimensionele reductie (dus een vermindering van afhankelijke variabelen door slim samenclusteren). Als het om maar 2 of 3 afhankelijke variabelen gaat zou je misschien beter afzijn voor de interpretereerbaarheid van je resultaat om de normale MANOVA te doen, ondanks de schending van normaliteit op basis van de data (wat niet zegt dat het in de populatie niet normaal verdeeld is).

Maar als je bij de ANOSIM blijft: De dichter R bij '1' zit de meer mensen binnen een groep op elkaar lijken, en de minder leden van de groepen lijken op leden van een andere groep.

Het deel 'upper quartiles of permutation' moet je lezen als een histogram voor hoe de p-waarde berekend is. Omdat dit een non-parametrische techniek is wordt de p-waarde niet berekend uit een theoretische kansverdeling (zoals bij t, F, e.d.). Om hier tot een p-waarde te komen is er een permutatietest gedaan. Dit is een duur woord voor: heel vaak schudden we alle data door elkaar, en negeren we in welke groep iemand echt zit, en iedere keer kijken we hoe de scores verdeeld zijn. Vervolgens wordt geturft hoe vaak de scores onder de 'officiele' groepsindeling, hoger scoort dan de scores onder de random scoreverdeling.

In dit geval zie je dan ook de verhouding tussen p-waarden en percentielen; bij random shuffelen van data is jouw echte data in meer dan 20% van de gevallen extremer (bij 97,5%). Dat is best vaak, dus vandaar een p-waarde van .005

Belangrijker dan de significantie is eigenlijk de waarde van R. .20 is net als bij correlaties erg klein als effect, dus .30 is ook geen groot effect.

De dissimalarity matrix geeft per level van je factor de dissimularity binnen de groep en tussen groepen aan. 0% is de laagste waarde, 100% is de hoogste waarde. Hier zie je een bevestiging van het beeld van de R; binnen groepen is de dissimilarity hoog, terwijl tussen groepen per niveau van de factor, de dissimilarity laag is. Dus hoewel de groepen bij elkaar genomen significant verschillen, is het totaalbeeld dat de vier groepen toch nog erg veel gelijkend zijn in verhouding tot de individuele variatie binnen de groepen.

Dag Ron,

Ik heb twee onderzoeksvragen. Een vraag met 2 en een met 5 variabelen. Ik probeer nu de eerste te doen.

Als ik naar de data in het algemeen kijk, zie ik dit beeld:

setting prompts dependent variable mean n
online prompts pr 0.51 4
control sg 0.50 3
prompts pr 0.46 4
control sg 0.46 3
face-to-face prompts pr 0.33 6
control sg 0.29 6
prompts pr 0.68 6
control sg 0.72 6

Ik zie in de online setting geen verschillen, maar in de face-to-face setting zie ik verschillen tussen pr en sg. Mijn vraag is is dit verschil significant? Ik hoopte dat ik met een soort step-down analyse na ANOSIM dit kan beantwoorden. Anders zou ik misschien een kruskal-Wallis analyse kunnen doen voor elke afhankelijke variabele apart, met een Bonferroni correctie voor alpha. Ik heb de MANOVA analyse gedaan voor deze dataset, maar ik krijg geen duidelijk antwoord op mijn vraag, aangezien het werkt met discriminant functions. Ik kan hiermee mijn vraag niet beantwoorden.

ter controle: ANOSIM werkt dus anders dan MANOVA, die geeft alle data een soort rangnummer en sorteert de data vervolgens in de 4 groepen en rekent met de afstanden tussen de rangnummer verder. ANOSIM zeg nu dus, er is significant verschil maar die is erg klein. Dat zie op de plot heel duidelijk, de rank dissimilarities van de groepen overlappen bijna met de de rank dissimilarity between de groepen. Maar het zegt natuurlijk niks specifieks zoals een kruskal-wallis analyse met een step-down analyse.

Vraag:

1-Mag ik in dit geval een kruskal-wallis analyse + een step-down analyse uitvoeren voor elke afhankelijke variabele apart met een correctie voor alpha?

2-Voor mijn tweede onderzoeksvraag, heb ik voor dezelfde groepen 5 afhankelijke variabelen. Daar zo ik dus in iedere geval een ANOSIM moeten doen. klopt dat?

groet, Sabrine

Voor mijn helderheid: ik zie twee between subjects variabelen 2x setting [online; face-to-face] en 2x prompts [control; prompts], met twee afhankelijke variabelen: Y1 = pr; Y2 = sg. Klopt dat?
ja dat klopt.

Aub. inloggen or registreren om deze vraag te beantwoorden.

...