library(dslabs)
data(polls_us_election_2016)
library(tidyverse)Tidying, Visualising and Summarising Data - Tasks
Task 1
๋ค์ ์ฝ๋๋ฅผ ์คํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํฉ๋๋ค.
- grade ๊ฐ์ด ๊ฒฐ์ธก์น(NA)์ธ ์ฌ๋ก ์กฐ์ฌ๋?
๋ฌธ์๊ฐ ๋๋ฌด ๊ธธ์ด์ง๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด head๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ์ 6๊ฐ ํ๋ง ํ์ํฉ๋๋ค.
polls_us_election_2016 %>%
filter(is.na(grade)) %>%
head state startdate enddate pollster grade samplesize
1 New Mexico 2016-11-06 2016-11-06 Zia Poll <NA> 8439
2 U.S. 2016-11-05 2016-11-07 The Times-Picayune/Lucid <NA> 2521
3 U.S. 2016-11-01 2016-11-07 USC Dornsife/LA Times <NA> 2972
4 Virginia 2016-11-01 2016-11-02 Remington <NA> 3076
5 Wisconsin 2016-11-01 2016-11-02 Remington <NA> 2720
6 Pennsylvania 2016-11-01 2016-11-02 Remington <NA> 2683
population rawpoll_clinton rawpoll_trump rawpoll_johnson rawpoll_mcmullin
1 lv 46.00 44.00 6 NA
2 lv 45.00 40.00 5 NA
3 lv 43.61 46.84 NA NA
4 lv 46.00 44.00 NA NA
5 lv 49.00 41.00 NA NA
6 lv 46.00 45.00 NA NA
adjpoll_clinton adjpoll_trump adjpoll_johnson adjpoll_mcmullin
1 44.82594 41.59978 7.870127 NA
2 45.13966 42.26495 3.679914 NA
3 45.32156 43.38579 NA NA
4 45.27399 41.91459 NA NA
5 48.22713 38.86464 NA NA
6 45.30896 42.94988 NA NA
- ๋ค์ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ ์ฌ๋ก ์กฐ์ฌ๋? (i) American Strategies, GfK Group, Merrill Poll์์ ์กฐ์ฌํ ๊ฒฝ์ฐ, (ii) ํ๋ณธ ํฌ๊ธฐ๊ฐ 1,000๋ช
์ด์์ธ ๊ฒฝ์ฐ, (iii) 2016๋
10์ 20์ผ์ ์์๋ ๊ฒฝ์ฐ. ํํธ: (i) ์กฐ๊ฑด์์๋ %in% ์ฐ์ฐ์๊ฐ ์ ์ฉ, ๋ฒกํฐ๋
c()ํจ์๋ก ๋ง๋ค ์ ์์. (iii)์์๋ ๋ ์ง ๋ณ์์ ํ์์ ํ์ธ
polls_us_election_2016 %>%
filter(pollster %in% c("American Strategies","GfK Group","Merrill Poll") &
samplesize > 1000 &
startdate == "2016-10-20") state startdate enddate pollster grade samplesize population
1 U.S. 2016-10-20 2016-10-24 GfK Group B+ 1212 lv
rawpoll_clinton rawpoll_trump rawpoll_johnson rawpoll_mcmullin
1 51 37 6 NA
adjpoll_clinton adjpoll_trump adjpoll_johnson adjpoll_mcmullin
1 50.28058 39.98632 4.733277 NA
- ๋ค์ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ ์ฌ๋ก ์กฐ์ฌ๋? (i) Johnson ํ๋ณด์ ์ฌ๋ก ์กฐ์ฌ ๋ฐ์ดํฐ๊ฐ ๋๋ฝ๋์ง ์์ ๊ฒฝ์ฐ, (ii) ํธ๋ผํ์ ํด๋ฆฐํด์ ์๋ณธ ์ฌ๋ก ์กฐ์ฌ ์ง์ง์จ ํฉ์ด 95%๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ, (iii) ์คํ์ด์ค(OH) ์ฃผ์์ ์ค์๋ ๊ฒฝ์ฐ ํํธ: ํธ๋ผํ์ ํด๋ฆฐํด์ ์ง์ง์จ ํฉ๊ณ๋ฅผ ๊ณ์ฐํ๋ ์๋ก์ด ๋ณ์๋ฅผ ์์ฑํ ํ
filter()๋ฅผ ์ ์ฉ
polls_us_election_2016 %>%
mutate(rawpoll_clintontrump = rawpoll_clinton + rawpoll_trump) %>%
filter(!is.na(rawpoll_johnson) & rawpoll_clintontrump > 95 & state == "Ohio") [1] state startdate enddate
[4] pollster grade samplesize
[7] population rawpoll_clinton rawpoll_trump
[10] rawpoll_johnson rawpoll_mcmullin adjpoll_clinton
[13] adjpoll_trump adjpoll_johnson adjpoll_mcmullin
[16] rawpoll_clintontrump
<0 rows> (or 0-length row.names)
- ํ๋ณธ ํฌ๊ธฐ๊ฐ 2,000๋ช
์ด์์ธ ์ฌ๋ก ์กฐ์ฌ์์ ํธ๋ผํ์ ํ๊ท ์ง์ง์จ์ด ๊ฐ์ฅ ๋์ ์ฃผ๋? ํํธ:
filter(), group_by(), summarise(), arrange()์ฌ์ฉ. ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ ค๋ฉดarrange()ํจ์ ์ฌ์ฉ.
polls_us_election_2016 %>%
filter(samplesize >= 2000) %>%
group_by(state) %>%
summarise(mean_trump = mean(rawpoll_trump)) %>%
arrange(desc(mean_trump))# A tibble: 26 ร 2
state mean_trump
<fct> <dbl>
1 Alabama 62.5
2 Missouri 48.5
3 Indiana 47
4 Texas 46.0
5 South Carolina 45.5
6 Georgia 45.3
7 Kansas 44
8 New Mexico 44
9 Florida 44.0
10 Ohio 43.9
# โน 16 more rows
Task 2
๋ค์ ์ฝ๋๋ฅผ ์คํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํฉ๋๋ค.
library(dslabs)
data(gapminder, package = "dslabs")- ๋๋ฅ/์ฐ๋๋ณ ํ๊ท ์ธ๊ตฌ(๋ณ์๋ช
: mean_pop)๋ฅผ ๊ณ์ฐํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด ๊ฐ์ฒด gapminder_mean์ ์ ์ฅํ์์ค. ํํธ: ๊ฐ ์ฐ๋๋ณ ๋๋ฅ๋น ํ๋์ ๊ด์ธก์น(ํ)๋ง ์์ด์ผ ํจ.
group_by๋ฐsummarise์ฌ์ฉ
gapminder_mean <- gapminder %>%
group_by(continent, year) %>%
summarise(mean_pop = mean(population)) %>%
ungroup()- ๋ง์ฝ
ungroup()์ ํ์ง ์์ผ๋ฉด ์ดํ์ ์ํํ๋ mutate(), summarise(), filter() ๋ฑ์ ์ฐ์ฐ์ด ์ฌ์ ํ ๊ทธ๋ฃน ๋จ์๋ก ์ ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ์๋์ ๊ฐ์ต๋๋ค.ungroup()๋์summariseํจ์์์.groups="drop"์ต์ ์ ์จ๋ ๋ฉ๋๋ค.
df <- tibble(group = c("A", "A", "B", "B"), value = c(1, 2, 3, 4))
# ๊ทธ๋ฃน๋ณ ํ๊ท ๊ณ์ฐ
df_summary <- df %>%
group_by(group) %>%
summarise(mean_value = mean(value))
# mutate๋ฅผ ์ถ๊ฐํ์ง๋ง ungroup ์ ํจ
df_summary %>%
mutate(overall_mean = mean(mean_value))# A tibble: 2 ร 3
group mean_value overall_mean
<chr> <dbl> <dbl>
1 A 1.5 2.5
2 B 3.5 2.5
Task 3
gapminder ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์์ ๊ทธ๋ํ๋ฅผ ggplot2๋ก ์์ฑํ์์ค
- 2015๋
๊ธฐ๋์๋ช
(Life Expectancy)์ ํ์คํ ๊ทธ๋จ์ ์์ฑํ์์ค. ํํธ: ํ์คํ ๊ทธ๋จ์ ๋ง๋ค ๋ aes()์ y ๊ฐ์ ์ง์ ํด์ผ ํ ๊น?
geom_*๋ด์์ ๋ค์ ์ต์ ์ ์ค์ ํ์์ค:binwidth= 5,boundary= 45,colour= โwhiteโ,fill= โ#d90502โ. ์ด๋ฌํ ์ต์ ์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์ค๋ช ํ์์ค.
๊ธฐ๋ณธ ํ์คํ ๊ทธ๋จ:
gapminder %>%
filter(year == 2015) %>%
ggplot() +
aes(x = life_expectancy) +
geom_histogram()์์ ๋ ํ์คํ ๊ทธ๋จ(์ถ ๋ ์ด๋ธ ํฌํจ):
life_exp_hist <- gapminder %>%
filter(year == 2015) %>%
ggplot() +
aes(x = life_expectancy) +
geom_histogram(binwidth = 5,
boundary = 45,
colour = "white",
fill = "#d90502") +
labs(x = "๊ธฐ๋ ์๋ช
",
y = "๋น๋")
life_exp_histfacet๋ ํ์คํ ๊ทธ๋จ:
life_exp_hist +
facet_grid(rows = vars(continent))- ์ฐ๋/๋๋ฅ๋ณ ํ๊ท ๊ธฐ๋์๋ช
์ ๊ตฌํ๊ณ ๋๋ฅ๋ณ๋ก ํ๊ท ๊ธฐ๋์๋ช
์ ๋ํ Boxplot ์ผ๋ก ๊ทธ๋ฆฌ์์ค.
geom_*์ต์ :colour= โblackโ,fill= โ#d90502โ.
ํํธ: continent ๋ฐ year ๋ ๊ฐ์ ๋ณ์๋ก ๊ทธ๋ฃนํํด์ผํจ.
gapminder %>%
group_by(continent, year) %>%
summarise(mean_life_exp = mean(life_expectancy)) %>%
ggplot() +
aes(x = continent, y = mean_life_exp) +
geom_boxplot(colour = "black",
fill = "#d90502") +
labs(x = "๋๋ฅ",
y = "๊ธฐ๋ ์๋ช
")3. 2015๋
์ ์์ ์ฌ๋ง๋ฅ (x์ถ)์ ๋ํ ์ถ์ฐ์จ(y์ถ)์ ์ฐ์ ๋. ์ฐ์ ๋๋ฅผ ๋ง๋ ํ ํด๋น geom_* ๋ด์์ size๋ฅผ 3์ผ๋ก, alpha๋ฅผ 0.5๋ก, colour๋ฅผ โ#d90502โ๋ก ์ค์ ํฉ๋๋ค.
๊ธฐ๋ณธ ์ฐ์ ๋:
gapminder %>%
filter(year == 2015) %>%
ggplot() +
aes(x = infant_mortality, y = fertility) +
geom_point()์ถ ๋ ์ด๋ธ์ด ์๋ ์ฐ์ ๋:
gapminder %>%
filter(year == 2015) %>%
ggplot() +
aes(x = infant_mortality, y = fertility) +
geom_point(size = 3,
alpha = 0.5,
colour = "#d90502") +
labs(x = "์์ ์ฌ๋ง๋ฅ ", y = "์ถ์ฐ์จ")Task 4
- 2011๋
GDP์ ํ๊ท ์ ๊ณ์ฐํ๊ณ mean์ด๋ผ๋ ๊ฐ์ฒด์ ํ ๋นํ์์ค. ๊ฒฐ์ธก๊ฐ์ ์ ์ธ. ํํธ:
meanํจ์์ ๋์๋ง์ ์ฝ๊ณNA๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ํ์ธ
mean_GDP <- gapminder %>%
filter(year == 2011) %>%
summarise(mean(gdp, na.rm = T))
mean_GDP mean(gdp, na.rm = T)
1 246954895975
- 2011๋ GDP์ ์ค์๊ฐ์ ๊ณ์ฐํ๊ณ median์ด๋ผ๋ ๊ฐ์ฒด์ ํ ๋นํ์์ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฒฐ์ธก๊ฐ์ ์ ์ธ. ์ค์๊ฐ์ด ํ๊ท ๋ณด๋ค ํฐ๊ฐ, ์์๊ฐ?
median_GDP <- gapminder %>%
filter(year == 2011) %>%
summarise(median(gdp, na.rm = T))
median_GDP median(gdp, na.rm = T)
1 16031265699
์ค์๊ฐ์ ํ๊ท ๋ณด๋ค ํจ์ฌ ์์ต๋๋ค.
geom_density๋ฅผ ์ฌ์ฉํ์ฌ 2011๋ GDP์ ๋ฐ๋ ๊ทธ๋ํ(density plot)๋ฅผ ์์ฑํ์์ค. ๋ฐ๋ ๊ทธ๋ํ๋ ์ซ์ํ ๋ณ์์ ๋ถํฌ๋ฅผ ๋ํ๋ด๋ ๋ฐฉ๋ฒ์. ๋ํ ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ ํ๊ท ๊ณผ ์ค์๊ฐ์ ์์ง์ ์ผ๋ก ํ์ํ์์ค.geom_vline(xintercept = as.numeric(mean), colour = "red") + geom_vline(xintercept = as.numeric(median), colour = "orange")
gdp_density <- gapminder %>%
filter(year == 2011) %>%
ggplot() +
aes(x = gdp) +
geom_density() +
geom_vline(xintercept = as.numeric(mean_GDP), colour = "red") +
geom_vline(xintercept = as.numeric(median_GDP), colour = "orange")
gdp_densityGDP ๋ถํฌ๋ ๋งค์ฐ ์๊ณก(Skewed)๋์ด ์์ต๋๋ค. GDP๊ฐ ์ ์ ๊ตญ๊ฐ๊ฐ ๋ง๊ณ GDP๊ฐ ๋งค์ฐ ํฐ ๊ตญ๊ฐ(๋ฏธ๊ตญ, ์ผ๋ณธ, ์ค๊ตญ)๋ ์ ์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ํ๊ท ์ ์ค์๊ฐ๋ณด๋ค (์๋นํ) ํด ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ๋ ๋ช ํํ๊ฒ ๋ณด๊ธฐ ์ํด ๊ฐ ๋๊ธ์ด ์ด์ ๋๊ธ๋ณด๋ค 10๋ฐฐ ๋ ํฌ๊ฒ x์ถ์ ๋ณํํ ๊ทธ๋ํ๊ฐ ์๋์ ๋๋ค(๋ฐ๋ผ์ ์ฒ๋๋ ์ ํ์ด ์๋๋๋ค. ์ฆ, ์ฒซ ๋ฒ์งธ ๋๊ธ์ 100,000, ๋ ๋ฒ์งธ๋ 100๋ง, ์ธ ๋ฒ์งธ๋ 1์ฒ๋ง ๋ฑ์ ๋๋ค.).
gdp_density +
scale_x_log10()- 2015๋
์ถ์ฐ์จ(fertility)๊ณผ ์ ์ ์ฌ๋ง๋ฅ (infant mortality)์ ์๊ด๊ด๊ณ๋ฅผ ๊ณ์ฐํ์์ค. NA ๊ฐ์ ์ ์ธํ๋ ค๋ฉด
cor()ํจ์์use์ธ์๋ฅผ โpairwise.complete.obsโ๋ก ์ค์ . ์ด ์๊ด๊ด๊ณ ๊ฐ์ด Task 3์์ ์์ฑํ ๊ทธ๋ํ์ ์ผ์นํ๋๊ฐ?
gapminder %>%
filter(year == 2015) %>%
summarise(cor(fertility, infant_mortality, use = "pairwise.complete.obs")) cor(fertility, infant_mortality, use = "pairwise.complete.obs")
1 0.8286402
์ด ์๊ด ๊ด๊ณ๋ ์์์ด๊ณ ๊ฐํฉ๋๋ค(1์ ๋น๊ต์ ๊ฐ๊น์ต๋๋ค). ์ด๋ Task 3์์ ์์ฑ๋ ๊ทธ๋ํ์ ์ผ์นํฉ๋๋ค. ์ค์ ๋ก ํด๋น ๊ทธ๋ํ๋ ์ด๋ฌํ ๋ ๋ณ์ ๊ฐ์ ์์ ๊ด๊ณ๋ฅผ ๋ณด์ฌ ์ฃผ์๊ณ ์ ์ด ๊ทธ๋ ๊ฒ ๋ถ์ฐ๋์ง ์์์ต๋๋ค.
Task (Optional): ์ฃผ๊ฐ ๋ฐ์ดํฐ ๋ถ์
tidyquant๋ฅผ ์ด์ฉํ์ฌ ํ๊ตญ์ ๋ํ ์ฃผ์์ธ ์ผ์ฑ์ ์(โ005930.KSโ)์ ๋ฏธ๊ตญ์ ์์ฅ ์ง์์ธ S&P500 ETF(โSPYโ)์ 2021๋ 1์ 1์ผ ์ดํ ์ฃผ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ํ์์ค. (tq_get์ ํฐ์ปค๋ฅผ ๋ฒกํฐc()ํํ๋ก ์ ๋ ฅ)group_by()์mutate(),lag()ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ข ๋ชฉ์ ์ผ๋ณ ์์ต๋ฅ (daily_return)์ ๊ฐ๊ฐ ๊ณ์ฐํ๊ณdrop_na()๋ก ๊ฒฐ์ธก์น๋ฅผ ์ ๊ฑฐํ์์ค.
# ํ์ ํจํค์ง ๋ก๋
library(tidyquant)
library(tidyverse)
# 1. ์ผ์ฑ์ ์์ S&P 500 ETF(SPY) ๋ฐ์ดํฐ ๋ค์ด๋ก๋
tickers <- c("005930.KS", "SPY")
stock_data <- tq_get(tickers, from = "2021-01-01")
# 2. ์ผ๋ณ ์์ต๋ฅ ๊ณ์ฐ ๋ฐ ๊ฒฐ์ธก์น ์ ๊ฑฐ
stock_returns <- stock_data %>%
group_by(symbol) %>% # ์ข
๋ชฉ๋ณ๋ก ๊ทธ๋ฃนํ
arrange(date) %>% # ๋ ์ง ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
mutate(daily_return = adjusted / lag(adjusted) - 1) %>% # ์์ต๋ฅ ๊ณ์ฐ
drop_na(daily_return) # ์ฒซ ๋ ์ NA ๊ฐ ์ ๊ฑฐ
# ๊ฒฐ๊ณผ ํ์ธ
head(stock_returns)# A tibble: 6 ร 9
# Groups: symbol [2]
symbol date open high low close volume adjusted daily_return
<chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 005930.KS 2021-01-05 81600 83900 81600 83900 3.53e7 75474. 0.0108
2 SPY 2021-01-05 368. 372. 368. 371. 6.64e7 347. 0.00689
3 005930.KS 2021-01-06 83300 84500 82100 82200 4.21e7 73945. -0.0203
4 SPY 2021-01-06 370. 377. 369. 374. 1.08e8 349. 0.00598
5 005930.KS 2021-01-07 82800 84200 82700 82900 3.26e7 74574. 0.00852
6 SPY 2021-01-07 376. 380. 376. 379. 6.88e7 354. 0.0149
ggplot2๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ข ๋ชฉ์ ์ผ๋ณ ์์ต๋ฅ ๋ถํฌ๋ฅผ ๋น๊ตํ๋ ๋ฐ๋ ๊ทธ๋ํ(geom_density)๋ฅผ ๊ฒน์ณ์(alpha ๊ฐ ์กฐ์ ) ๊ทธ๋ฆฌ์์ค.
# 3. ๋ฐ๋ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ (alpha๋ก ํฌ๋ช
๋๋ฅผ ์ฃผ์ด ๊ฒน์น๋ ๋ถ๋ถ ํ์ธ)
ggplot(stock_returns, aes(x = daily_return, fill = symbol)) +
geom_density(alpha = 0.5) +
labs(title = "์ผ์ฑ์ ์ vs S&P 500 ์ผ๋ณ ์์ต๋ฅ ๋ถํฌ (2021~)",
x = "์ผ๋ณ ์์ต๋ฅ ",
y = "๋ฐ๋(Density)",
fill = "์ข
๋ชฉ") +
theme_minimal()summarise()๋ฅผ ํ์ฉํ์ฌ ๋ ์ข ๋ชฉ ๊ฐ๊ฐ์ ์ผํ๊ท ์์ต๋ฅ (mean)๊ณผ ๋ณ๋์ฑ(sd)์ ๊ณ์ฐํ์์ค.
# 4. summarise()๋ฅผ ํ์ฉํ ์์ฝ ํต๊ณ ๊ณ์ฐ
summary_stats <- stock_returns %>%
summarise(
mean_return = mean(daily_return),
sd_return = sd(daily_return) # ๊ธ์ต์์๋ ์ด๊ฒ์ด ์ผ๊ฐ '๋ณ๋์ฑ(๋ฆฌ์คํฌ)'์ ์๋ฏธํฉ๋๋ค.
)
print(summary_stats)# A tibble: 2 ร 3
symbol mean_return sd_return
<chr> <dbl> <dbl>
1 005930.KS 0.000924 0.0192
2 SPY 0.000555 0.0107
- ๋ ์ข
๋ชฉ์ ์์ต๋ฅ ๊ฐ ์๊ด๊ณ์(
cor)๋ฅผ ๊ณ์ฐํ์์ค. (์๊ด๊ด๊ณ๋ฅผ ๊ตฌํ๋ ค๋ฉด ๋ ์์ต๋ฅ ์ ๊ฐ๋ก(์ด)๋ก ๋๋ํ ๋ฐฐ์นํด์ผ ํ๋๋ฐ, ํ๊ตญ๊ณผ ๋ฏธ๊ตญ์ ํด์ฅ์ผ์ด ๋ฌ๋ผ ๋ฐ์ดํฐ์ ๊ธธ์ด๊ฐ ์ด๊ธ๋๋ ํ์์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ง์ถ๋ ๊ณผ์ (pivot_wider๋๋inner_join)์ด ํ์ํจ.)
spy_returns <- stock_returns %>% filter(symbol=="SPY") %>% select(date, daily_return) %>% rename(spy=daily_return)
ks_returns <- stock_returns %>% filter(symbol=="005930.KS") %>% select(date, daily_return) %>% rename(ks=daily_return)
returns_wide <- inner_join(spy_returns, ks_returns, by = "date")
correlation <- cor(returns_wide$ks, returns_wide$spy)
print(correlation)[1] 0.05643054
# 5. ๋์ ํํ(Wide format)๋ก ๋ณํํ์ฌ ์๊ด๊ณ์ ๊ณ์ฐ
returns_wide <- stock_returns %>%
select(date, symbol, daily_return) %>%
distinct(date, symbol, .keep_all = TRUE) %>% # 2026-03-20 KS ์์ต๋ฅ ์ค๋ณต๋ ๊ฒ ์ ์ธ
pivot_wider(names_from = symbol, values_from = daily_return) %>%
drop_na() # ์ด๋ ํ ๊ตญ๊ฐ๋ผ๋ ํด์ฅ์ด์ด์ NA๊ฐ ๋ ๋ ์ง๋ ์ ์ธ
# ์๊ด๊ณ์ ๊ณ์ฐ
correlation <- cor(returns_wide$`005930.KS`, returns_wide$SPY)
print(correlation)[1] 0.05643054
(์ฐธ๊ณ : ํฐ์ปค๋ช
์ ์ซ์๊ฐ ํฌํจ๋์ด ์ด ์ด๋ฆ์ผ๋ก ๋ฐ๋ ๊ฒฝ์ฐ, R์์๋ ์ญ๋ฐ์ดํ()๋ก ๊ฐ์ธ์ฃผ์ด์ผ ๋ณ์๋ช
์ผ๋ก ์ ์ ์ธ์๋จ. ์์์์๋005930.KS๊ฐ005930.KS๋ก ์ด ์ด๋ฆ์ด ๋์๊ธฐ ๋๋ฌธ์, ์๊ด๊ณ์ ๊ณ์ฐ ์returns_wide$`005930.KS``์ ๊ฐ์ด ์ญ๋ฐ์ดํ๋ก ๊ฐ์ธ์ฃผ์ด์ผ ํจ.)