head(faithful) # load data and
eruptions waiting
1 3.600 79
2 1.800 54
3 3.333 74
4 2.283 62
5 4.533 85
6 2.883 55
= faithful$eruptions # copy it to a short name D
##### 先畫一個圖框
par(cex=0.7)
plot(0,0,xlim=c(1.5,5.25),ylim=c(0,1.1),xlab="噴發時間(分鐘)",
ylab="密度 or (累計)機率", main="分布、機率與密度")
abline(h=1, col='lightgray', lwd=0.25, lty=2)
##### 數值標記
# Empirical Rug PDF, 實證(數值標記)機率密度函數
rug(D)
# Empirical CDF, 實證(數值標記)累計機率密度函數
plot(ecdf(D), cex=0, verticals=T, lwd=2, col='darkgray', add=T)
##### Histogram PDF 直方圖機率密度函數
= 20 # no. bins
Bins = seq(min(D), max(D), length=Bins+1) # break sequence
bx hist(D, col="#B3FFFF7F", border="white",
freq=F, breaks=bx, add=T)
abline(h=0, col='lightgray', lwd=0.25)
# Histogram CDF
= (bx[2] - bx[1])/2
adj = stepfun(bx-adj, c(0, sapply(bx, function(b) mean(D <= b))))
steps plot(steps, cex=0, col='#33CC337F', lwd=3, lty=1, add=T)
##### Smooth PDF 平滑機率密度函數
= 0.5 # set bandwidth
Adjust = density(D, adjust = Adjust) # create density function
DEN lines(DEN, col='gold', lwd=3)
# Smooth CDF 畫出累計機率密度函數
= approxfun(DEN$x, DEN$y, yleft=0, yright=0)
PDF = seq(1,6,0.1)
x = sapply(x, function(i) integrate(PDF, -Inf, i)$value)
y lines(x, y, col='red', lwd=3, lty=2)
##### 標示範圍[x1, x2]
= 3.8; x2 = 4.8
x1 # rect(x1,-0.1,x2,1.2,col= rgb(0,1,0,alpha=0.2),border=NA)
= seq(x1, x2, length=100)
x polygon(c(x, x2, x1), c(PDF(x), 0, 0), col="#FF99003F", border=NA)
使用PDF估計機率
# Calculate Probability 算出範圍[x1, x2]的機率
integrate(PDF, x1, x2)$value) (
[1] 0.4755
假如你是黃石公園的旅遊直昇機公司,你的業務需要預估老忠實下一次的噴發時間,假如現在的商業情境是:你可以花30元選定一個連續60秒的時段,如果老忠實下一次的噴發時間落在你指定的區間,你就可以贏到100元;請你使用頻寬為0.5的平滑密度模型 …
::p_load(dplyr, ggplot2)
pacman= seq(0,5,0.1)
x1 = sapply(x1, function(x) (integrate(PDF, x, x+1)$value))
p data.frame(start=x1, stop=1+x1, p) %>% top_n(1, p)
start stop p
1 3.9 4.9 0.4766
假如商業情境變成:從零開始把每10秒鐘設為一個區間,每個區間的賭金是五塊錢 …
= seq(1,6,1/6)
x = sapply(x, function(i) integrate(PDF, -Inf, i)$value)
cx = data.frame(
df start = x - 1/6, stop = x,
prob=cx -lag(cx)
%>%
) mutate(payoff = 100*prob - 5)
= df %>% filter(payoff > 0) %>% arrange(start)
bets bets
start stop prob payoff
1 1.667 1.833 0.06366 1.3664
2 1.833 2.000 0.08226 3.2261
3 2.000 2.167 0.06967 1.9671
4 3.833 4.000 0.05836 0.8356
5 4.000 4.167 0.07652 2.6524
6 4.167 4.333 0.08932 3.9324
7 4.333 4.500 0.09576 4.5763
8 4.500 4.667 0.08938 3.9375
9 4.667 4.833 0.06844 1.8437
nrow(bets)
[1] 9
sum(bets$payoff)
[1] 24.34
將期望報償和投資金額的比值稱為「期望投資報酬率」 …
= df %>% arrange(desc(payoff)) %>% mutate(
df n_bets = row_number(),
c_invest = n_bets * 5,
c_payoff = cumsum(payoff),
c_ROI = c_payoff/c_invest
%>% round(3)
) head(df,20) %>% round(3)
start stop prob payoff n_bets c_invest c_payoff c_ROI
1 4.333 4.500 0.096 4.576 1 5 4.576 0.915
2 4.500 4.667 0.089 3.938 2 10 8.514 0.851
3 4.167 4.333 0.089 3.932 3 15 12.446 0.830
4 1.833 2.000 0.082 3.226 4 20 15.672 0.784
5 4.000 4.167 0.077 2.652 5 25 18.325 0.733
6 2.000 2.167 0.070 1.967 6 30 20.292 0.676
7 4.667 4.833 0.068 1.844 7 35 22.135 0.632
8 1.667 1.833 0.064 1.366 8 40 23.502 0.588
9 3.833 4.000 0.058 0.836 9 45 24.338 0.541
10 2.167 2.333 0.049 -0.095 10 50 24.242 0.485
11 4.833 5.000 0.041 -0.870 11 55 23.372 0.425
12 3.667 3.833 0.040 -1.005 12 60 22.367 0.373
13 2.333 2.500 0.030 -2.043 13 65 20.324 0.313
14 3.500 3.667 0.027 -2.290 14 70 18.034 0.258
15 1.500 1.667 0.027 -2.301 15 75 15.733 0.210
16 3.333 3.500 0.018 -3.183 16 80 12.550 0.157
17 5.000 5.167 0.018 -3.195 17 85 9.355 0.110
18 2.500 2.667 0.014 -3.557 18 90 5.799 0.064
19 3.167 3.333 0.010 -3.972 19 95 1.827 0.019
20 2.667 2.833 0.008 -4.213 20 100 -2.386 -0.024
ggplot(df[1:20,], aes(c_ROI, c_payoff, color=c_invest)) +
geom_point(size=3) +
geom_text(aes(label=n_bets), color='black', nudge_y=0.6, size=2.5) +
scale_color_gradientn(colors=c('seagreen','gold','gold','orange','tomato','red')) +
labs(title="策略空間",color="投資金額",y="預期報償",x="預期投報率")
🗿 策略空間:
■
如何畫
■
何謂
🗿 策略限制與權衡:
■
如果沒有其它的投資機會,也沒有資金的限制,最佳的策略應該是?
■
如果你的資金上限是c_invest < 40
呢?
■
如果你有另外一個ROI = 62.5%
的投資機會呢?
🍭 學習重點:
■
資料分析的基礎:資料、統計量、圖形、模型
■
建立模型的步驟:模型形式、複雜度參數
■
模型是一種幫助我們在不確定下做決策的工具,有模型才能做量化的預測和估計
■ 但是,預測並不等於決策,模型做完,商業分析才剛開始而已
■
商業分析的步驟:
◇ 資料、模型
◇
條件、預測、模擬、策略目標
◇ 策略目標視覺化、溝通、決策
■
R語言可以串聯上述步驟,用資料裝配線來進行商業分析
■
決策是一個溝通的過程,視覺化提供一個溝通的基礎
■ 策略空間:
◇ 策略、績效指標
◇ 效率前緣、合理策略
◇
策略限制、策略權衡