自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

哈佛教授公開R語言源碼,教你用R制作gif動圖

大數(shù)據(jù)
在本文中哈佛教授公開了自己授課時所使用的gif動圖的R語言源碼,同時也對涉及的幾個話題進行了簡單的論述,對于希望了解數(shù)據(jù)科學原理、如何使用R語言來進行可視化的讀者都有所助益。

哈佛教授公開R語言源碼,教你用R制作gif動圖

在日常教學的過程中,我有時會用動畫來形象地解釋概念,并且通過 @rafalab賬號(https://twitter.com/rafalab)在社交媒體上分享。

John Storey最近問我是否可以公開這些源代碼。由于我不甚有條理,而且這些動畫都是靈機一動想出來的,所以之前這些代碼分散在幾個不相關聯(lián)的文件中。John的請求促使我把這些代碼整理在一起發(fā)布在這里。

所有的gif動圖都是用R語言繪制的數(shù)張圖片的疊加。在代碼中你可以發(fā)現(xiàn),我用幾種不同的方法將單獨的圖片轉(zhuǎn)化成動態(tài)gif圖。***種方法(不推薦)是將圖片文件存儲下來,然后調(diào)用ImageMagick轉(zhuǎn)化工具(https://www.imagemagick.org/script/index.php)。在R環(huán)境下,我現(xiàn)在使用的方法是animation包的saveGIF函數(shù),這是通過讀者Yihui Xie在我simplystats博客下面的評論學習到的。當用ggplot畫圖時,我會使用David Robinson的gganimate包(https://github.com/dgrtwo/gganimate)。***一種方法是我在加特效(例如調(diào)相)時會用到的:在線Animated GIF maker(https://ezgif.com/maker)。

以下就是這些gif動圖的源代碼,我大致按流行程度排序。因為代碼是很著急寫出來的,請不要過于苛責我。事實上,你可以隨意批判,這就是我們學習的方式。

辛普森悖論

這張gif闡述的是辛普森悖論:我們看到X變量和Y變量有很強的負相關關系。不過,一旦我們用一個混雜因素Z變量進行分層,用不同顏色來表示Z,每一層中的相關性就會轉(zhuǎn)化為正相關。這里的數(shù)據(jù)是虛構的,不過假設說X代表學生參加輔導的次數(shù),Y代表九年級的測驗分數(shù),然后再用八年級的測驗分數(shù)Z來對學生進行分層,我們也會發(fā)現(xiàn)這樣的現(xiàn)象。

 

這張動圖僅用三張圖片組成。我用RStudio的Export功能將它們把存下來,然后用Animated GIF maker(https://ezgif.com/maker)來制作gif。以下是這三張圖片的代碼:

 

局部加權回歸散點平滑法(Loess)

我分享的***個教學動圖是為了解釋局部加權回歸散點平滑法(Loess)的原理。具體來說,我們對于每一個自變量,比如x0,都讓其對任何一個臨近點有正的加權值,用加權回歸擬合一條線,保留經(jīng)過擬合所得的結果,然后移動向下一個點。 

這里的數(shù)據(jù)來源是某個基因芯片實驗。圖中所示的是MA圖,即比例對數(shù)與對數(shù)平均值之間的關系。我用animation包來保存gif動圖。 

 

預期壽命 vs 生育率

這個gif動圖是復制Hans Rosling (https://en.wikipedia.org/wiki/ Hans_Rosling)在他的演講“關于貧窮的新發(fā)現(xiàn)”(New Insights on Poverty,(https://www.ted.com/talks/ hans_rosling_reveals_new_insights_on_poverty?language=en))中展示的動畫。該圖很好地展現(xiàn)出數(shù)據(jù)可視化在消除誤解方面的作用,Hans Rosling通過這張動圖展示了如今并不如40年前一樣能夠簡單將世界劃分成兩半。之前,人們一般把世界分為擁有更長壽命、較少家庭人口的西方富有國家和較短壽命、較多家庭人口的發(fā)展中國家,而這個圖向我們展示了這種劃分的不合理性。

 

感謝gganimate包,畫這個圖使用的代碼非常簡單。

 

聯(lián)合國選舉模式

這里,我們使用Erik Voeten和Anton Strezhnev提供的聯(lián)合國選舉數(shù)據(jù)來闡釋距離的概念。

 

以下是代碼。整理數(shù)據(jù)的代碼是由David Robinson(https://twitter.com/drob)提供的。你會看到我們將隨時間變化的距離進行了平滑處理,從而避免一些點跳動范圍過大。

 

 

 

 

 

 

隨機森林

在過去的很長一段時間里,我都覺得很難理解為何隨機森林作為一種基于樹的算法,卻能夠產(chǎn)生平滑的預測。這里的gif圖幫助我理解了原因。我用的是2008年總統(tǒng)選舉的數(shù)據(jù)庫,因為我認為該數(shù)據(jù)的趨勢總體是平滑的,但是有幾個尖銳的邊,就連局部加權回歸散點平滑法都很難預測。需要注意的是,我們只有一個影響因素,這個gif并不能展示出隨機森林的另一個重要特點:隨機的特征選取可以減少樹與樹之間的相關程度。

 

 

你可以看到我在代碼中使用的方式是傳統(tǒng)的、我并不推薦的方式:保存所有的圖片文件然后調(diào)用系統(tǒng)指令轉(zhuǎn)化。

 

 

 

生態(tài)謬誤

在分享辛普森悖論的動圖以后,有些人問我生態(tài)謬誤是不是相同的情況。其實這二者是不同的。生態(tài)謬誤是我們試圖通過平均值的強相關性來推斷個體之間的相關性。為了更好的解釋,我用dslabs包中自帶的gapminder的數(shù)據(jù)(http://gapminder.org/)畫出了一個動圖,展示新生兒存活率的對數(shù)與日均收入的對數(shù)之間的關系??梢钥吹皆诘貐^(qū)層面上二者相關度很高,但在各個國家層面上相關度很低。這是因為同一地區(qū)國家與國家之間的差異導致的。

 

 

這張gif只由三張圖構成。我用RStudio的Export功能保存圖片,然后用Animated GIF maker(https://ezgif.com/maker)來制作gif。

***張圖是地區(qū)平均值;撒哈拉以南非洲國家的數(shù)值,你可以看到一個平均值被分成數(shù)個不同的數(shù)值;第三張是所有國家的情況。我標出了一些(與本地區(qū)相比)變化較大的國家,并且用了色盲也能識別的顏色。這里的代碼有些復雜,原因是我不得不對Gapminder數(shù)據(jù)進行預處理。 

 

 

 

貝葉斯定律

這個簡單的動圖展示的是將一種非常準確的診斷方法應用于一個發(fā)病率很低的群體的診斷結果。它展示出來的是,在已知診斷結果是陽性的情況下發(fā)病的先驗概率,比該診斷方法的初試準確率要低。你可以用貝葉斯定律來確定真實的條件概率。更多細節(jié)請參考這里(https://simplystatistics.org/2014/10/17/bayes-rule-in-a-gif/)。

 

 

因為我們要做動態(tài)圖,代碼有一些復雜難懂。

 

 

吃豆子

***,我做了這個動畫,向你們展示餅圖唯一的用處。

 

 

責任編輯:龐桂玉 來源: THU數(shù)據(jù)派
相關推薦

2018-06-23 07:38:10

2022-06-01 16:17:00

互聯(lián)網(wǎng)Web3區(qū)塊鏈

2023-06-14 15:08:11

GPT-4工作

2015-04-22 11:29:45

PythonPython創(chuàng)建瀑布圖

2020-12-14 08:05:28

Javascript隨機canvas

2017-08-22 10:49:28

DNA存儲電影

2020-03-25 14:40:45

語言編程語言Hello

2021-07-28 20:09:41

平臺

2021-01-27 21:55:13

代碼參數(shù)值ECharts

2018-06-16 23:34:09

可視化地圖R

2021-05-18 14:42:55

PythonMySQL

2019-01-24 09:00:00

PythonAutoML機器學習

2021-01-21 09:10:29

ECharts柱狀圖大數(shù)據(jù)

2021-02-20 15:59:17

AI 數(shù)據(jù)人工智能

2022-05-16 19:53:15

Pythongif動圖

2025-02-06 09:30:00

2018-05-23 14:33:44

視頻

2021-06-05 23:51:21

ECharts氣泡圖散點圖

2015-03-23 12:33:28

2014-07-22 10:19:19

NeoBundle
點贊
收藏

51CTO技術棧公眾號