Hoe de glijdende correlatie in r te berekenen


Rolling correlaties zijn correlaties tussen twee tijdreeksen over een glijdend venster. Een van de voordelen van dit soort correlatie is dat u de correlatie tussen twee tijdreeksen in de loop van de tijd kunt visualiseren.

In deze tutorial wordt uitgelegd hoe u rollende correlaties in R kunt berekenen.

Hoe u rollende correlaties in R kunt berekenen

Stel dat we het volgende gegevensframe hebben dat het totale aantal verkochte producten voor twee verschillende producten ( x en y ) weergeeft over een periode van 15 maanden:

 #create data
data <- data.frame(month=1:15,
                   x=c(13, 15, 16, 15, 17, 20, 22, 24, 25, 26, 23, 24, 23, 22, 20),
                   y=c(22, 24, 23, 27, 26, 26, 27, 30, 33, 32, 27, 25, 28, 26, 28))

#view first six rows
head(data)

  month xy
1 1 13 22
2 2 15 24
3 3 16 23
4 4 15 27
5 5 17 26
6 6 20 26

Om een rollende correlatie in R te berekenen, kunnen we de functie rollapply() uit het zoo- pakket gebruiken.

Deze functie gebruikt de volgende syntaxis:

rollapply(gegevens, breedte, FUN, by.column=TRUE)

Goud:

  • data: naam van het dataframe
  • breedte: geheel getal dat de breedte van het venster voor glijdende correlatie specificeert
  • FUN: De functie die moet worden toegepast.
  • by.column: Geeft aan of de functie afzonderlijk op elke kolom moet worden toegepast. Dit is standaard WAAR, maar om een voortschrijdende correlatie te berekenen moeten we specificeren dat deze ONWAAR is.

U kunt deze functie als volgt gebruiken om de driemaandelijkse voortschrijdende correlatie van de omzet tussen product x en product y te berekenen:

 #calculate 3-month rolling correlation between sales for x and y
rollapply(data, width=3, function (x) cor(x[,2],x[,3]), by.column= FALSE )

 [1] 0.6546537 -0.6933752 -0.2401922 -0.8029551 0.8029551 0.9607689
 [7] 0.9819805 0.6546537 0.8824975 0.8170572 -0.9449112 -0.3273268
[13] -0.1889822

Deze functie retourneert de correlatie tussen de verkoop van twee producten in de afgelopen drie maanden. Bijvoorbeeld:

  • De correlatie van de omzet in de maanden 1-3 was 0,6546537 .
  • De verkoopcorrelatie in de maanden 2-4 was -0,6933752.
  • De verkoopcorrelatie in de maanden 3-5 was -0,2401922.

Enzovoort.

We kunnen deze formule eenvoudig aanpassen om de voortschrijdende correlatie voor een andere tijdsperiode te berekenen. De volgende code laat bijvoorbeeld zien hoe u de zesmaandelijkse voortschrijdende correlatie van de verkopen tussen de twee producten berekent:

 #calculate 6-month rolling correlation between sales for x and y
rollapply(data, width=6, function (x) cor(x[,2],x[,3]), by.column= FALSE )

 [1] 0.5587415 0.4858553 0.6931033 0.7564756 0.8959291 0.9067715 0.7155418
 [8] 0.7173740 0.7684468 0.4541476

Deze functie retourneert de correlatie tussen de twee productverkopen in de afgelopen zes maanden. Bijvoorbeeld:

  • De correlatie van de omzet in de maanden 1-6 was 0,5587415 .
  • De verkoopcorrelatie in de maanden 2-7 was 0,4858553.
  • De verkoopcorrelatie in de maanden 3-8 was 0,6931033.

Enzovoort.

Opmerkingen

Houd de volgende punten in gedachten bij het gebruik van de functie rollapply():

  • De breedte (dat wil zeggen het vervolgkeuzevenster) moet gelijk zijn aan of groter dan 3 om correlaties te kunnen berekenen.
  • In de bovenstaande formules hebben we cor(x[,2],x[3]) gebruikt omdat de twee kolommen waar we de correlaties tussen wilden berekenen zich op positie 2 en 3 bevonden. Pas deze cijfers aan als de kolommen waarin u geïnteresseerd bent zich op verschillende posities bevinden.

Gerelateerd: Hoe u de Rolling Correlatie in Excel kunt berekenen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert