Categories News

Visualizzazione delle serie temporali con timetk | Registro dei tifosi

La serie di articoli di R’s Geek Ideal copre una serie di punti chiave sulle idee, l’utilizzo, gli strumenti, le innovazioni di R, ecc. e utilizza il mio apprendimento e la mia esperienza personali per spiegare la potenza di R.

Come linguaggio statistico, il linguaggio R ha sempre brillato in campi di nicchia. Fino all’esplosione dei big data, il linguaggio R è diventato uno strumento importante per l’analisi dei dati. Man mano che sempre più persone con un background in ingegneria si uniscono, la comunità del linguaggio R è in rapida espansione e crescita. Ora non solo il campo delle statistiche, ma anche l’istruzione, le banche, l’e-commerce, Internet… utilizzano tutti il ​​linguaggio R.

Per diventare dei geek ideali, non possiamo fermarci alla grammatica. Dobbiamo padroneggiare una solida conoscenza della matematica, della probabilità e della statistica. Dobbiamo anche avere uno spirito innovativo e utilizzare il linguaggio R in diversi ambiti. Muoviamoci insieme e diamo inizio all’ideale geek di R.

Informazioni sull’autore

  • Zhang Dan, analista di dati/programmatore/Quant: R,Java,Nodejs
  • Blog: http://fens.me
  • E-mail: bsspirit@gmail.com

Si prega di indicare la fonte in caso di ristampa:

Prefazione

L’analisi delle serie temporali è un ramo importante dell’analisi statistica. Molti dati della nostra vita quotidiana sono dati di serie temporali, che contengono almeno un elemento temporale e un valore dei dati. Se riusciamo a osservare bene i dati delle serie temporali, questi possono svolgere un ruolo molto importante nella nostra comprensione dei dati.

timetk è un pacchetto molto conveniente per osservare i dati delle serie temporali, permettendoci di comprendere rapidamente i dati da più angolazioni.

Sommario

  1. viene introdotto il pacchetto timetk
  2. Installazione di timetk
  3. La funzione principale di timetk
  4. Visualizzazione: grafico delle serie temporali di base
  5. Visualizzazione: raggruppamento di serie temporali
  6. Visualizzazione: binning delle serie temporali
  7. Visualizzazione: regressione delle serie temporali
  8. Visualizzazione: rilevamento di anomalie nelle serie temporali
  9. Visualizzazione: scomposizione stagionale delle serie temporali
  10. Visualizzazione: ricampionamento delle serie temporali

1. Il pacchetto timetk è un’introduzione

timetk è un toolkit per l’elaborazione di serie temporali in linguaggio R, che può facilmente realizzare la visualizzazione, l’organizzazione e l’ingegnerizzazione delle funzionalità dei dati delle serie temporali per la previsione e la modellazione dell’apprendimento automatico. Integra ed estende la funzionalità delle serie temporali da pacchetti tra cui dplyr, stats, xts, previsione, slider, padr, ricette e rsample. Timetk è un potente pacchetto, parte dell’ecosistema modeltime, per l’analisi e la previsione delle serie temporali.

Sito ufficiale: https://business-science.github.io/timetk/

Il pacchetto timetk consente agli utenti di elaborare oggetti di serie temporali in modo più conveniente nel linguaggio R. Il toolkit fornisce funzionalità per l’ispezione e l’elaborazione di indici basati sul tempo, estendendo le funzionalità temporali per l’esplorazione dei dati e l’apprendimento automatico e la conversione tra diverse categorie di serie temporali.

I principali vantaggi sono i seguenti:

  • Estrazione dell’indice: estrae l’indice delle serie temporali da qualsiasi oggetto della serie temporale.
  • Comprensione delle serie temporali: genera riepiloghi delle funzionalità e informazioni di riepilogo in base agli indici delle serie temporali.
  • Costruisci serie temporali future: crea serie temporali future basate su indici esistenti.
  • Conversione tra tipi di tibble basati sul tempo e tipi di dati di serie temporali tradizionali (xts, zoo, zooreg, ts): semplifica il processo di conversione e conserva al massimo le informazioni sui dati basati sul tempo durante la conversione in serie temporali regolari (come ts).

2. Installazione di timetk

Installazione del pacchetto timetk. Installare il pacchetto timetk è molto semplice. Può essere completato con 2 istruzioni, installa e carica.


# 安装
> install.packages("timetk")

# 加载
> library(timetk)

3. La funzione principale di timetk

Usando il pacchetto timetk, puoi adattarti a diversi tipi di serie temporali del linguaggio R, come tk_tbl() che si adatta al tipo tibble, tk_zoo() che si adatta al tipo zoo, tk_xts() che si adatta al tipo xts, ecc.

La funzione principale della suite timetk è la funzione di disegno, che supporta 11 effetti di disegno visivo.

  • plot_time_series Trama interattiva di una o più serie temporali
  • plot_time_series_boxplot Boxplot interattivo delle serie temporali
  • plot_time_series_regression Visualizza la formula di regressione lineare delle serie temporali
  • plot_anomalies Visualizza valori anomali in una o più serie temporali
  • plot_anomalies_cleaned Visualizza i valori anomali (dopo la pulizia) di una o più serie temporali
  • plot_anomalies_decomp Visualizza i valori anomali (dopo la scomposizione) in una o più serie temporali
  • plot_anomaly_diagnostics Visualizza la diagnosi dei valori anomali per una o più serie temporali
  • plot_seasonal_diagnostics Visualizza varie caratteristiche stagionali di una o più serie temporali
  • plot_stl_diagnostics Visualizza le caratteristiche di scomposizione STL di una o più serie temporali
  • plot_acf_diagnostics Visualizza ACF, PACF e CCF per una o più serie temporali
  • plot_time_series_cv_plan Visualizza il piano di ricampionamento delle serie temporali

4. Visualizzazione: diagramma di base delle serie temporali

Prendi come esempio il set di dati taylor_30_min fornito con il pacchetto timetk, il set di dati taylor_30_min. Domanda di elettricità ogni mezz’ora in Inghilterra e Galles per il periodo da lunedì 5 giugno 2000 a domenica 27 agosto 2000.

Il set di dati taylor_30_min è di tipo tibble, 4.032 righe × 2 colonne:

  • data: data e ora variabili, con un intervallo di 30 minuti
  • valore: domanda di energia, in megawatt

Controlla lo stato dei dati


# 查看数据前6条
> head(taylor_30_min)
# A tibble: 6 × 2
  date                value
                
1 2000-06-05 00:00:00 22262
2 2000-06-05 00:30:00 21756
3 2000-06-05 01:00:00 22247
4 2000-06-05 01:30:00 22759
5 2000-06-05 02:00:00 22549
6 2000-06-05 02:30:00 22313

# 查看数据2列统计概览
> summary(taylor_30_min)
      date                         value      
 Min.   :2000-06-05 00:00:00   Min.   :18640  
 1st Qu.:2000-06-25 23:52:30   1st Qu.:24272  
 Median :2000-07-16 23:45:00   Median :29485  
 Mean   :2000-07-16 23:45:00   Mean   :29617  
 3rd Qu.:2000-08-06 23:37:30   3rd Qu.:35132  
 Max.   :2000-08-27 23:30:00   Max.   :38777  

Disegna un grafico basato sui dati e utilizza la funzione di base plot() per disegnare il grafico.


> plot(taylor_30_min,type="l")

Utilizza timetk per disegnare grafici ed eseguire l’adattamento dei dati


# 加载包
> library(dplyr)
> library(ggplot2)
> library(lubridate)
> library(magrittr)

# 生成基于ggplot2的静态图
> interactive <- FALSE # 画图拟合 > taylor_30_min %>% 
+   plot_time_series(date, value, 
+                    .interactive = interactive,
+                    .plotly_slider = TRUE)
Ignoring unknown labels:
• colour : "Legend"

Eseguire la suddivisione e l’adattamento dei dati su base mensile


# 画图拟合
> taylor_30_min %>%
+   plot_time_series(date, value, 
+                    .color_var = month(date, label = TRUE),
+                    .interactive = interactive,  
+                    .title = "Taylor's MegaWatt Data",
+                    .x_lab = "Date (30-min intervals)",
+                    .y_lab = "Energy Demand (MW)",
+                    .color_lab = "Month") +
+   scale_y_continuous(labels = scales::label_comma())

Utilizza l’output del disegno interattivo, interattivo=TRUE. Può produrre risultati di interazione dinamica basati sulla trama.


> taylor_30_min %>% 
+     plot_time_series(date, value, 
+                      .interactive = TRUE, 
+                      .plotly_slider = TRUE)
Ignoring unknown labels:
• colour : "Legend"

5. Visualizzazione: raggruppamento di serie temporali

1. Visualizzazione del gruppo

Modifichiamo un altro set di dati m4_daily ed effettuiamo un test dimostrativo. Fonte del set di dati m4_daily: competizione M4 (gennaio – maggio 2018), numero totale di sequenze nella competizione completa: 100.000, questo campione: 4 serie temporali giornaliere, numero di righe: 9.743, colonne: id, data, valore.

  • id è l’identificatore univoco di ciascuna delle 4 sequenze del tipo di fattore
  • data tipo data timestamp giornaliero
  • value è un valore numerico corrispondente al timestamp.

Poiché questi dati provengono dalla competizione M4, è probabile che ciascuna serie provenga da un dominio diverso (ad esempio micro, industriale, macro, finanziario, demografico, ecc.) e possa mostrare: tendenze, stagionalità (settimanale, annuale), eteroschedasticità, valori zero o intermittenti, lunghezze diverse (le lunghezze dei dati storici per le serie giornaliere tendono a variare).


# 查看数据集
> head(m4_daily)
# A tibble: 6 × 3
  id    date       value
        
1 D10   2014-07-03 2076.
2 D10   2014-07-04 2073.
3 D10   2014-07-05 2049.
4 D10   2014-07-06 2049.
5 D10   2014-07-07 2006.
6 D10   2014-07-08 2018.

# 统计概览
> summary(m4_daily)
    id            date                value      
 D10 : 674   Min.   :1978-06-23   Min.   : 1735  
 D160:4197   1st Qu.:2003-01-12   1st Qu.: 5719  
 D410: 676   Median :2006-05-14   Median : 8253  
 D500:4196   Mean   :2005-02-14   Mean   : 8280  
             3rd Qu.:2009-09-13   3rd Qu.:11219  
             Max.   :2016-05-06   Max.   :19433  

Visualizzare i dati raggruppati è semplicemente questione di utilizzare group_by() per raggruppare il set di dati prima di passare i dati alla funzione plot_time_series(). I punti chiave sono i seguenti:

  • Puoi aggiungere gruppi in due modi: utilizzando group_by() o aggiungendo gruppi tramite il parametro….
  • I raggruppamenti vengono quindi convertiti in sfaccettature.
  • .facet_ncol = 2 produce un grafico a faccette a due colonne.
  • .facet_scales = “free” consente di ridimensionare gli assi xey di ciascun grafico indipendentemente dagli altri grafici.

> m4_daily %>%
+   group_by(id) %>%
+   plot_time_series(date, value,
+                    .facet_ncol = 2, .facet_scales = "free",
+                    .interactive = interactive)
Ignoring unknown labels:
• colour : "Legend"

2. Trasformazione logaritmica e sottoraggruppamento

Passiamo a un set di dati orario che contiene più gruppi. Possiamo visualizzare quanto segue. L’intenzione è quella di visualizzare i raggruppamenti in un grafico a faccette evidenziando le finestre settimanali (sottogruppi) nei dati e log() trasformando i valori.

  • .value = log(value): applica la trasformazione logaritmica
  • .color_var = week(date): Converti la colonna della data nel numero della settimana con lubridate::week(), il colore verrà applicato a ciascun numero della settimana.

Modificato in m4_hourly, il concorso M4 è iniziato il 1 gennaio 2018 e si è concluso il 31 maggio 2018. Il concorso contiene 100.000 set di dati di serie temporali. Questo set di dati contiene un campione di serie temporali orarie di 4 ore per questa competizione.


> m4_hourly %>%
+   group_by(id) %>%
+   plot_time_series(date, log(value),             # Apply a Log Transformation
+                    .color_var = week(date),      # Color applied to Week transformation
+                    # Facet formatting
+                    .facet_ncol = 2,
+                    .facet_scales = "free",
+                    .interactive = interactive)

6. Visualizzazione: binning delle serie temporali

La funzione plot_time_series_boxplot() può essere utilizzata per disegnare boxplot. I boxplot utilizzano l’aggregazione, che è un parametro di categorizzazione definito dal parametro .period.

Modificato in m4_monthly, il concorso M4 inizia il 1 gennaio 2018 e termina il 31 maggio 2018. Il concorso contiene 100.000 set di dati di serie temporali. Questo set di dati contiene 4 campioni di serie temporali mensili della concorrenza.


> m4_monthly %>%
+   group_by(id) %>%
+   plot_time_series_boxplot(
+     date, value,
+     .period      = "1 year",
+     .facet_ncol  = 2,
+     .interactive = FALSE)
Ignoring unknown labels:
• colour : "Legend"

7. Visualizzazione: regressione delle serie temporali

Utilizza la funzione di grafico di regressione delle serie temporali plot_time_series_regression() per valutare rapidamente le caratteristiche chiave associate a una serie temporale. Internamente questa funzione passa una formula alla funzione stats::lm(). Impostando show_summary = TRUE, è possibile visualizzare le informazioni di riepilogo della regressione lineare.

Passa ai dati m4_monthly per disegnare immagini


> m4_monthly %>%
+   group_by(id) %>%
+   plot_time_series_regression(
+     .date_var     = date,
+     .formula      = log(value) ~ as.numeric(date) + month(date, label = TRUE),
+     .facet_ncol   = 2,
+     .interactive  = FALSE,
+     .show_summary = FALSE
+   )

8. Visualizzazione: rilevamento di anomalie nelle serie temporali

Utilizza il set di dati walmart_sales_weekly per visualizzare i valori anomali in una o più serie temporali.

walmart_sales_weekly data set, Walmart Recruitment – Store Sales Forecast” utilizza i dati di vendita al dettaglio, coinvolgendo una combinazione di negozi e reparti interni al negozio. Il concorso è iniziato il 20 febbraio 2014 e si è concluso il 5 maggio 2014.

Visualizza il profilo walmart_sales_weekly


# 查看数据
> head(walmart_sales_weekly)
# A tibble: 6 × 17
  id    Store  Dept Date       Weekly_Sales IsHoliday Type    Size Temperature Fuel_Price MarkDown1 MarkDown2 MarkDown3 MarkDown4
                                                          
1 1_1       1     1 2010-02-05       24924. FALSE     A     151315        42.3       2.57        NA        NA        NA        NA
2 1_1       1     1 2010-02-12       46039. TRUE      A     151315        38.5       2.55        NA        NA        NA        NA
3 1_1       1     1 2010-02-19       41596. FALSE     A     151315        39.9       2.51        NA        NA        NA        NA
4 1_1       1     1 2010-02-26       19404. FALSE     A     151315        46.6       2.56        NA        NA        NA        NA
5 1_1       1     1 2010-03-05       21828. FALSE     A     151315        46.5       2.62        NA        NA        NA        NA
6 1_1       1     1 2010-03-12       21043. FALSE     A     151315        57.8       2.67        NA        NA        NA        NA
# ℹ 3 more variables: MarkDown5 , CPI , Unemployment 

# 统计概览
> summary(walmart_sales_weekly)
       id          Store        Dept            Date             Weekly_Sales    IsHoliday           Type          
 1_1    :143   Min.   :1   Min.   : 1.00   Min.   :2010-02-05   Min.   :  6166   Mode :logical   Length:1001       
 1_3    :143   1st Qu.:1   1st Qu.: 3.00   1st Qu.:2010-10-08   1st Qu.: 28257   FALSE:931       Class :character  
 1_8    :143   Median :1   Median :13.00   Median :2011-06-17   Median : 39886   TRUE :70        Mode  :character  
 1_13   :143   Mean   :1   Mean   :35.86   Mean   :2011-06-17   Mean   : 54646                                     
 1_38   :143   3rd Qu.:1   3rd Qu.:93.00   3rd Qu.:2012-02-24   3rd Qu.: 77944                                     
 1_93   :143   Max.   :1   Max.   :95.00   Max.   :2012-10-26   Max.   :148798                                     
 (Other):143                                                                                                       
      Size         Temperature      Fuel_Price      MarkDown1         MarkDown2          MarkDown3          MarkDown4      
 Min.   :151315   Min.   :35.40   Min.   :2.514   Min.   :  410.3   Min.   :    0.50   Min.   :    0.25   Min.   :    8.0  
 1st Qu.:151315   1st Qu.:57.79   1st Qu.:2.759   1st Qu.: 4039.4   1st Qu.:   40.48   1st Qu.:    6.00   1st Qu.:  577.1  
 Median :151315   Median :69.64   Median :3.290   Median : 6154.1   Median :  144.87   Median :   25.96   Median : 1822.5  
 Mean   :151315   Mean   :68.31   Mean   :3.220   Mean   : 8090.8   Mean   : 2941.32   Mean   : 1225.40   Mean   : 3746.1  
 3rd Qu.:151315   3rd Qu.:80.49   3rd Qu.:3.594   3rd Qu.:10122.0   3rd Qu.: 1569.00   3rd Qu.:  101.64   3rd Qu.: 3750.6  
 Max.   :151315   Max.   :91.65   Max.   :3.907   Max.   :34577.1   Max.   :46011.38   Max.   :55805.51   Max.   :32403.9  
                                                  NA's   :644       NA's   :707        NA's   :651        NA's   :644      
   MarkDown5            CPI         Unemployment  
 Min.   :  554.9   Min.   :210.3   Min.   :6.573  
 1st Qu.: 3127.9   1st Qu.:211.5   1st Qu.:7.348  
 Median : 4325.2   Median :215.5   Median :7.787  
 Mean   : 5018.7   Mean   :216.0   Mean   :7.610  
 3rd Qu.: 6222.2   3rd Qu.:220.6   3rd Qu.:7.838  
 Max.   :20475.3   Max.   :223.4   Max.   :8.106  
 NA's   :644                          

> walmart_sales_weekly %>%
+   filter(id %in% c("1_1", "1_3")) %>%
+   group_by(id) %>%
+   anomalize(Date, Weekly_Sales) %>%
+   plot_anomalies(Date, .facet_ncol = 2, .ribbon_alpha = 0.25, .interactive = FALSE)
frequency = 13 observations per 1 quarter
trend = 52 observations per 1 year
frequency = 13 observations per 1 quarter
trend = 52 observations per 1 year

Visualizza i valori anomali in una o più serie temporali e pulisci automaticamente i risultati.


> walmart_sales_weekly %>%
+   filter(id %in% c("1_1", "1_3")) %>%
+   group_by(id) %>%
+   anomalize(Date, Weekly_Sales, .message = FALSE) %>%
+   plot_anomalies_cleaned(Date, .facet_ncol = 2, .interactive = FALSE)

Scomporre i dati in più dimensioni di serie temporali.


> walmart_sales_weekly %>%
+   filter(id %in% c("1_1", "1_3")) %>%
+   group_by(id) %>%
+   anomalize(Date, Weekly_Sales, .message = FALSE) %>%
+   plot_anomalies_decomp(Date, .interactive = FALSE)

Diagnosticare anomalie nei dati in serie temporali.


> walmart_sales_weekly %>%
+   group_by(id) %>%
+   plot_anomaly_diagnostics(Date, Weekly_Sales,
+                            .message = FALSE,
+                            .facet_ncol = 3,
+                            .ribbon_alpha = 0.25,
+                            .interactive = FALSE)

9. Visualizzazione: scomposizione stagionale delle serie temporali

Analisi stagionale, visualizza varie caratteristiche stagionali di una o più serie temporali e genera un dashboard visivo in base alle quattro dimensioni di data, settimana, settimana e mese.


> taylor_30_min %>%
+   plot_seasonal_diagnostics(date, value, .interactive = FALSE)

Scomposizione STL, suddivisa per caratteristiche di scomposizione STL, scomposizione della tendenza stagionale basata sulla regressione ponderata locale. La scomposizione STL è un metodo statistico che scompone una serie temporale in tre componenti:

  • La componente di tendenza (Trend) è la direzione del cambiamento a lungo termine dei dati, che riflette la tendenza generale regolare.
  • Componente stagionale (stagionale) Schemi che si ripetono periodicamente, come fluttuazioni regolari su base settimanale, mensile o annuale
  • La componente residua (Remainder) è la fluttuazione casuale o il rumore che rimane dopo aver rimosso trend e stagioni.

L’espressione matematica è:
Osservazioni = Tendenza + Stagione + Resto


> m4_hourly %>%
+   filter(id == "H10") %>%
+   plot_stl_diagnostics(
+     date, value,
+     # Set features to return, desired frequency and trend
+     .feature_set = c("observed", "season", "trend", "remainder"),
+     .frequency   = "24 hours",
+     .trend       = "1 week",
+     .interactive = FALSE)
frequency = 24 observations per 24 hours
trend = 168 observations per 1 week

Rilevamento visivo di ACF, PACF e CCF


> m4_hourly %>%
+   group_by(id) %>%
+   plot_acf_diagnostics(
+     date, value,               # ACF & PACF
+     .lags = "7 days",          # 7-Days of hourly lags
+     .interactive = FALSE
+   )

10. Visualizzazione: ricampionamento di serie temporali

Utilizza il set di dati FANG, che è un set di dati contenente i prezzi azionari storici giornalieri dei titoli tecnologici (“FB”, “AMZN”, “NFLX” e “GOOG”), che copre l’intervallo di tempo dall’inizio del 2013 alla fine del 2016. FANG contiene un “tibble” (casella dati “ordinata”) con 4.032 linee e 8 variabili: simbolo simbolo azionario, apertura alta, chiusura bassa e altre informazioni.


> head(FANG)
# A tibble: 6 × 8
  symbol date        open  high   low close    volume adjusted
                     
1 FB     2013-01-02  27.4  28.2  27.4  28    69846400     28  
2 FB     2013-01-03  27.9  28.5  27.6  27.8  63140600     27.8
3 FB     2013-01-04  28.0  28.9  27.8  28.8  72715400     28.8
4 FB     2013-01-07  28.7  29.8  28.6  29.4  83781800     29.4
5 FB     2013-01-08  29.5  29.6  28.9  29.1  45871300     29.1
6 FB     2013-01-09  29.7  30.6  29.5  30.6 104787700     30.6

# 数据概览
> summary(FANG)
    symbol               date                 open              high              low              close       
 Length:4032        Min.   :2013-01-02   Min.   :  22.99   Min.   :  23.09   Min.   :  22.67   Min.   :  22.9  
 Class :character   1st Qu.:2014-01-01   1st Qu.: 106.31   1st Qu.: 107.75   1st Qu.: 104.50   1st Qu.: 106.2  
 Mode  :character   Median :2015-01-01   Median : 335.67   Median : 340.68   Median : 331.20   Median : 335.1  
                    Mean   :2015-01-01   Mean   : 382.70   Mean   : 386.38   Mean   : 378.67   Mean   : 382.6  
                    3rd Qu.:2016-01-01   3rd Qu.: 581.47   3rd Qu.: 585.86   3rd Qu.: 576.52   3rd Qu.: 582.1  
                    Max.   :2016-12-30   Max.   :1226.80   Max.   :1228.88   Max.   :1218.60   Max.   :1220.2  
     volume             adjusted     
 Min.   :     7900   Min.   : 13.14  
 1st Qu.:  2699875   1st Qu.: 74.82  
 Median :  7285600   Median :190.75  
 Mean   : 16489749   Mean   :297.12  
 3rd Qu.: 21942350   3rd Qu.:531.37  
 Max.   :365457900   Max.   :844.36  

Elaborazione dati, ricampionamento


> FB_tbl <- FANG %>%
+   filter(symbol == "FB") %>%
+   select(symbol, date, adjusted)

# 重采样参数配置
> resample_spec <- time_series_cv(
+   FB_tbl,
+   initial = "1 year",
+   assess  = "6 weeks",
+   skip    = "3 months",
+   lag     = "1 month",
+   cumulative  = FALSE,
+   slice_limit = 6
+ )
Using date_var: date

# 重采样输出
> resample_spec %>% tk_time_series_cv_plan()
# A tibble: 1,812 × 5
   .id    .key     symbol date       adjusted
                   
 1 Slice1 training FB     2015-11-19     106.
 2 Slice1 training FB     2015-11-20     107.
 3 Slice1 training FB     2015-11-23     107.
 4 Slice1 training FB     2015-11-24     106.
 5 Slice1 training FB     2015-11-25     105.
 6 Slice1 training FB     2015-11-27     105.
 7 Slice1 training FB     2015-11-30     104.
 8 Slice1 training FB     2015-12-01     107.
 9 Slice1 training FB     2015-12-02     106.
10 Slice1 training FB     2015-12-03     104.
# ℹ 1,802 more rows
# ℹ Use `print(n = ...)` to see more rows

# 可视化
> resample_spec %>%
+   tk_time_series_cv_plan() %>%
+   plot_time_series_cv_plan(
+     date, adjusted, # date variable and value variable
+     # Additional arguments passed to plot_time_series(),
+     .facet_ncol = 2,
+     .line_alpha = 0.5,
+     .interactive = FALSE
+   )

L’esperienza di Timetk è fantastica. Con solo poche righe di codice, puoi vedere chiaramente come osservare i dati delle serie temporali.

Si prega di indicare la fonte in caso di ristampa:

Visualizzazioni dei post: 61

Questa voce è stata pubblicata in Pratica del linguaggio R

PakarPBN

A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.

In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.

The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.

Jasa Backlink

Download Anime Batch

More From Author