1. 程式人生 > 其它 >妹子如何運用R語言資料分析選擇心儀的物件?

妹子如何運用R語言資料分析選擇心儀的物件?

前提假設

  • 妹子們一生中可以遇到100個追求者,追求者的優秀程度符合正態分佈;
  • 每個妹子都具備判斷並比較追求者優秀程度的能力;
  • 接受或拒絕一個追求者後永遠無法後悔。

那麼,問題來了

男神這麼多,當遇到選擇困難症時,如何選擇才能獲得最優結果?

如果人的優秀程度符合均值為80,方差20的正態分佈,隨機產生100個追求者,其優秀程度分佈情況見下圖:

p=rnorm(100,80,20)
hist(p,main="追求者--統計", ylab="數量", xlab="優秀程度",
     col=rainbow(50))
boxplot(p,col="red",lwd=2)

條形圖顯示了追求者的初始狀態,盒裝圖顯示的是大多數妹子所接受的追求者的能力情況。通過分佈圖可以看出,大多數理性人只能選擇那些優秀程度在80左右的追求者。

下面介紹選擇方法

首先,為了不錯過在未來可以接受更優秀的追求者,理性的妹子會拒絕最早的一批追求者,並且採用第一批追求者做樣本量k,理性地判斷出追求者中最優秀的一位,其優秀程度記作y。然後,當遇到新追求者的時候,將追求者的優秀程度與y進行比較,優於y則選擇接受,否則繼續等待新的追求者;若新追求者的優秀程度始終小於y,則選擇做剩女。

如何求出最優的樣本量k?

如果最優秀的追求者出現在第i個位置(k < i ≤n),其中k、n為大於0的固定值。要想讓第i個出現的他成功被妹子接受,就必須得滿足前 i-1 任意一個位置出現的追求者被拒絕,這有ki−1ki−1的可能。考慮所有可能的i,我們便得到了試探前 k 個追求者之後能選中最佳追求者的總概率 P(k):

P(k)=∑i=k+1n1n⋅ki−1=kn∑i=k+1n⋅1i−1P(k)=∑i=k+1n1n⋅ki−1=kn∑i=k+1n⋅1i−1

用 x 來表示 k/n 的值,並且假設 n 充分大,則上述公式可以寫成:

P(k)=x∫1x1tdt=−xlnxP(k)=x∫x11tdt=−xlnx

對-xlnx求導,並令這個導數為0,可以解出x的最優值,它就是尤拉研究的神祕常數的倒數e−1e−1,則樣本k=n⋅x=e−1k=n⋅x=e−1。即當預計總追求者人數為100的時候,應先拒絕掉前100e−1=37100e−1=37個人,用來做追求者樣本。

sIdo=N=numeric()for (i in 1:100){
  p=rnorm(100, 80, 20)
  pm=max(p[1:37])  for(i in seq(37,100)){  
    if(p[i]>pm){   
      Ido=p[i]    
      n=i    
      break}  
    else Ido=0;n=101}
  sIdo=c(sIdo,Ido)
  N=c(N,n)}
sum(N==101)/100  #剩女比例

圖3、圖4代表按照此種選擇方法,重複100次實驗(100個妹子)得到的追求者分佈狀態,通過條形圖可以看出,60%的妹子成功找到如意郎君,被接受的追求者優秀程度在100以上;其餘40%的妹子們,由於在第一批追求者當中拒絕掉了最優秀的那位,無奈選擇做剩女。

plot(N,sIdo,pch=20,main="追求者散點圖", ylab="優秀程度", xlab="接受時機",col=rainbow(80),cex = 1.5)
points(101,0,pch=20,col="#32CD32",cex = 2)
text(95, 1, "剩女101",cex = .8)

追求者散點圖可以看出,比較優秀的追求者且被接受時,其排位在100位當中的50位左右的概率最大,即追妹子的最好時機不是越早越好。

綜上所訴,可以得出如下結論:

  • 樣本人數最優值為樣本總量的37%;
  • 比較優秀的追求者成功追到妹子的概率在60%左右;
  • 優秀者的最佳出現時機為中間偏後位置。