K-Means Clustering Analysis of Apple, Microsoft, and Nvidia
[This article was first published on DataGeeek, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
The exemption of key electronic components from tariffs is likely to positively impact Apple more, which manufactures approximately 90% of its iPhones in China, compared to other tech giants like Microsoft and Nvidia.
Furthermore, the k-means clustering chart shows that Apple has diverged year to date, specifically after the April 2 tariffs.
Source code:
library(tidyverse) library(tidyquant) library(timetk) #Apple Inc. (AAPL) df_apple <- tq_get("AAPL", from = "2025-01-01") %>% tq_transmute(mutate_fun = periodReturn, period = "daily") %>% mutate(symbol = "Apple") #NVIDIA Corporation (NVDA) df_nvda <- tq_get("NVDA", from = "2025-01-01") %>% tq_transmute(mutate_fun = periodReturn, period = "daily") %>% mutate(symbol = "NVIDIA") #Microsoft Corporation (MSFT) df_msft <- tq_get("MSFT", from = "2025-01-01") %>% tq_transmute(mutate_fun = periodReturn, period = "daily") %>% mutate(symbol = "Microsoft") #Merging the datasets df_merged <- df_apple %>% rbind(df_nvda) %>% rbind(df_msft) #TS Features tsfeature_tbl <- df_merged %>% group_by(symbol) %>% tk_tsfeatures( .date_var = date, .value = daily.returns, .features = c("frequency", "stl_features", "entropy", "acf_features", "mean"), .scale = TRUE, .prefix = "ts_" ) %>% ungroup() #Clustering with K-Means set.seed(123) cluster_tbl <- tibble( cluster = tsfeature_tbl %>% select(-symbol) %>% as.matrix() %>% kmeans(centers = 2) %>% pluck("cluster") ) %>% bind_cols( tsfeature_tbl ) #Visualize the Cluster Assignments cluster_tbl %>% select(cluster, symbol) %>% right_join(df_merged, by = "symbol") %>% group_by(symbol) %>% plot_time_series( date, daily.returns, .smooth = FALSE, .line_size = 1, .color_var = cluster, .facet_ncol = 1, .interactive = FALSE, .title = "K-Means Clustering Chart" ) + labs(subtitle = "Year to Date-Daily Returns") + scale_y_continuous(labels = scales::percent) + theme_tq(base_family = "Roboto Slab", base_size = 16) + theme(plot.title = ggtext::element_markdown(face = "bold"), strip.text = element_text(face = "bold"), plot.background = element_rect(fill = "azure", color = "azure"), legend.position = "none")
To leave a comment for the author, please follow the link and comment on their blog: DataGeeek.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.