RずPythonの組み合わせなぜ、い぀、どのように

dva stula

おそらく、デヌタ分析に携わっおいる人の倚くは、RずPythonを同時に䜿甚できるかどうかを考えたこずがあるでしょう。 もしそうなら、なぜこれが必芁なのでしょうか プロゞェクトにずっお有甚で効果的なのはい぀ですか はい、Googleが玄100,500のオプションを䜜成する堎合、蚀語を組み合わせる最適な方法をどのように遞択したすか

これらの問題を理解しおみたしょう。

なぜ



最初の段萜に぀いお詳しく話しおみたしょう。 以䞋に続く芁玄は確かに䞻芳的であり、補足するこずができたす。 これは、蚀語ず個人的な経隓の利点に関する重芁な蚘事の䜓系化に基づいお䜜成されたした。 しかし、私たちが知っおいるように、䞖界は非垞に急速に倉化しおいたす。

Pythonは、賢明なプログラマヌによっお䜜成された汎甚蚀語であり、デヌタサむ゚ンスの発展に䌎い、デヌタ分析の特定のタスクに適応した埌期になりたした。 したがっお、この蚀語の䞻な利点は次のずおりです。 デヌタを分析するずき、その䜿甚は次の堎合に最適です。


Rの䞻なものは、ラむブラリの広範なコレクションです。 この蚀語は、特に初期段階では、䞻にプログラマではなく統蚈孊者の努力により開発されたした。 統蚈孊者は䞀生懞呜努力し、圌らの業瞟は挑戊するのが難しい。

最初に䌚議に参加する前に䌚議で最近聞いた新しいおいしい統蚈モデルを詊すこずを突然考えた堎合は、 R package <INSERT NAME: new great stats model> google R package <INSERT NAME: new great stats model>たす。 あなたの成功の可胜性は非垞に倧きいです したがっお、Rの間違いないプラスは、高床な統蚈分析の可胜性です。 特に、科孊ず実践の倚くの特定の分野蚈量経枈孊、バむオむンフォマティクスなど。 私の意芋では、珟時点でのRでは、時系列の分析はさらにずっず発展しおいたす。

RがPythonより優れおいるもう1぀の重芁な利点は、むンタラクティブグラフィックスです。 JSの知識がなくおも、ダッシュボヌドずシンプルなアプリケヌションを䜜成およびカスタマむズできる可胜性は非垞に倧きいです。 それを信じないでください-リストからいく぀かのラむブラリの可胜性を調べるために少し時間を費やしおください htmlwidgets 、 flexdashboard 、 shiny 、 slidify 。 たずえば、最初は、この蚘事の資料はslidifyのむンタラクティブなプレれンテヌションずしお線集されたした。

しかし、統蚈孊者がいくら努力しおも、圌らはすべおに匷いわけではありたせん。 Pythonのように、メモリ管理のこのような高い効率を達成するこずはできたせんでした。 むしろ、Rでは、倧量のデヌタで実行される適切で高速なコヌドが非垞に可胜です。 しかし、Pythonよりもはるかに倚くの努力ず自己管理が必芁です。

埐々に、すべおの違いがなくなり、䞡方の蚀語がたすたす盞互亀換可胜になりたす。 Pythonでは、芖芚化機胜が開発され seaborn倧きなseabornたす、 垞に機胜するずは限らない蚈量経枈孊ラむブラリ puFlux 、 pymaclabなどが远加されたした.Rでは、メモリ管理効率が向䞊し、デヌタ凊理機胜が向䞊しおいたす data.table 。 ここでは、たずえば、 RおよびPythonのデヌタを䜿甚した基本操䜜の䟋を芋るこずができたす。 プロゞェクトの蚀語を組み合わせるこずに利点はありたすか、それはあなた次第です。

プロゞェクトの実斜の速床ず利䟿性を改善するこずに関する2番目のポむントに぀いおは、ここでは䞻にプロゞェクトの組織に぀いお話したす。 たずえば、プロゞェクトに2人の人がいお、1人はRでより倧きく、より匷く、もう1人はPythonでいたす。 コヌドレビュヌず他のコントロヌルを䞡方の蚀語に提䟛できる堎合は、各参加者が最高のスキルを䜿甚できるようにタスクを分散しおみるこずができたす。 もちろん、さたざたな蚀語で特定の問題を解決した経隓も重芁です。

デヌタを扱う研究プロゞェクトに぀いお話しおいるこずは明確にすべきです。 他の基準は意思決定にずっお重芁です。 結合は、ほずんどの堎合、蚈算の安定性ずスケヌラビリティに圹立ちたせん。 したがっお、私たちはスムヌズに、そしおい぀蚀語を組み合わせるこずがより䟿利かずいう問題に進みたす。

い぀


䞡方の蚀語の機胜を考えるず、RずPythonを次のように組み合わせるこずでメリットが埗られたす。


蚀語の可胜な組み合わせの䟋を瀺したす。


すべおの䟋は実際のプロゞェクトです。

RずPythonの組み合わせの可胜性に関する最初のプレれンテヌションから2幎が経過したしたが、実皌働環境で蚀語を組み合わせるこずをお勧めしたせん。 互いに厳密に結び぀いおいないのは、ほが2぀の個別の゚ンティティ/モデルである堎合を陀きたす。

R + Pythonのプロダクションを掗い流した幞運な人がいるなら、コメントでシェアしおください

どうやっお


今すぐ怅子に぀いお盎接。 RずPythonを組み合わせるアプロヌチの䞭で、3぀の䞻芁なカテゎリを区別できたす。


それぞれのアプロヌチをより詳现に怜蚎しおみたしょう。

コマンドラむンツヌル


ポむントは、プロゞェクトをRたたはPythonで実行される比范的独立した別々の郚分に分割し、䞡方の蚀語に適した䜕らかの圢匏でディスクを介しおデヌタを転送するこずです。
構文では、すべおが非垞に簡単です。 スクリプトは、次のスキヌムに埓っおコマンドラむンを䜿甚しお実行されたす。

 <cmd_to_run> <path_to_script> <any_additional_args> 

<cmd_to_run> -コマンドラむンを䜿甚しおRたたはPythonスクリプトを実行するコマンド
<path_to_script> -スクリプトの堎所ディレクトリ
<any_additional_args> -スクリプト入力ぞの匕数のリスト

次の衚は、コマンドラむンからスクリプトを実行し、枡された匕数を読み取るこずをより詳现に瀺した図です。 コメントは、匕数リストが曞き蟌たれるオブゞェクトのタむプを瀺したす。

コマンドPythonR
Cmdpython path/to/myscript.py arg1 arg2 arg3Rscript path/to/myscript.R arg1 arg2 arg3
匕数を取埗する# list, 1st el. - file executed
import sys
my_args = sys.argv

# character vector of args
myArgs <- commandArgs(trailingOnly = TRUE)


興味のある方のために、非垞に詳现な䟋を以䞋に瀺したす。

PythonのRスクリプト


たず、単玔なRスクリプトをmax.Rしお、リストから最倧数を決定し、 max.Rずいう名前を付けmax.R
 # max.R randomvals <- rnorm(75, 5, 0.5) par(mfrow = c(1, 2)) hist(randomvals, xlab = 'Some random numbers') plot(randomvals, xlab = 'Some random numbers', ylab = 'value', pch = 3) 


次に、Pythonで実行し、cmdを䜿甚しお、数倀のリストを枡しお最倧倀を芋぀けたす。

 # calling R from Python import subprocess # Define command and arguments command = 'Rscript' path2script = 'path/to your script/max.R' # Variable number of args in a list args = ['11', '3', '9', '42'] # Build subprocess command cmd = [command, path2script] + args # check_output will run the command and store to result x = subprocess.check_output(cmd, universal_newlines=True) print('The maximum of the numbers is:', x) 


RからのPythonスクリプト

最初に、単玔なPythonスクリプトを䜜成しお、テキスト文字列を郚分に分割し、「splitstr.py」ず呌びたす。

 # splitstr.py import sys # Get the arguments passed in string = sys.argv[1] pattern = sys.argv[2] # Perform the splitting ans = string.split(pattern) # Join the resulting list of elements into a single newline # delimited string and print print('\n'.join(ans)) 

ここで、cmdを䜿甚しおRで実行し、テキスト文字列を枡しお目的のパタヌンを削陀したす。

 # calling Python from R command = "python" # Note the single + double quotes in the string (needed if paths have spaces) path2script ='"path/to your script/splitstr.py"' # Build up args in a vector string = "3523462---12413415---4577678---7967956---5456439" pattern = "---" args = c(string, pattern) # Add path to script as first arg allArgs = c(path2script, args) output = system2(command, args=allArgs, stdout=TRUE) print(paste("The Substrings are:\n", output)) 


あるスクリプトから別のスクリプトに情報を転送する際の䞭間ファむルの保存には、目的ず奜みに応じお倚くの圢匏を䜿甚できたす。 䞡方の蚀語には、各圢匏を操䜜するためのラむブラリがありたす各ラむブラリはありたせん。

RおよびPythonのファむル圢匏
䞭容量PythonR
フラットファむル
csvCSVパンダリヌダヌ、data.table
jsonjsonjsonlite
ダムルPyYamlダムル
デヌタベヌス
SQLsqlalchemy、pandasql、pyodbcsqlite、RODBS、RMySQL、sqldf、dplyr
NoSQLピモンゎモンゎ
フェザヌ
デヌタフレヌム甚矜矜
ナンピヌ
numpyオブゞェクト甚numpyRcppcnpy


もちろん、クラシック圢匏はフラットファむルです。 倚くの堎合、csvは最もシンプルで䟿利で信頌性の高いものです。 比范的長期間情報を構造化たたは保存する堎合、おそらく最良の遞択はデヌタベヌスSQL / NoSQLに保存するこずです。

Rずの間でnumpyオブゞェクトを高速で転送するために、高速で安定したRCppCNPyラむブラリがありたす。 その䜿甚䟋はここにありたす 。

同時に、RずPythonの間で日付フレヌムを転送するために特別に開発されたfeather圢匏もありたす。 この圢匏の最初の機胜は、RずPythonのシャヌプ化、䞡方の蚀語での凊理の容易さ、および非垞に高速な曞き蟌みず読み取りです。 アむデアは玠晎らしいですが、実装には時々起こるように埮劙な違いがありたす。 このフォヌマットの開発者は、長期的な゜リュヌションにはただ適しおいないず繰り返し述べおいたす。 フォヌマットを操䜜するためにラむブラリを曎新するず、プロセス党䜓が壊れ、倧幅なコヌド倉曎が必芁になる堎合がありたす。

しかし同時に、RずPythonでのフェザヌの曞き蟌みず読み取りは非垞に高速です。 1,000䞇行のファむルの読み取り/曞き蟌み速床のテスト比范を䞋の図に瀺したす。 どちらの堎合も、埓来のcsv圢匏で䜜業する堎合、 featherキヌラむブラリよりも倧幅に高速です。

RおよびPythonのフェザヌおよびCSV圢匏ず速床の比范


ファむル デヌタフレヌム、1,000䞇行。 ラむブラリごずに10回の詊行。

R CSVは、 data.tableおよびdplyr介しおdata.tableしdplyr 。 フェザヌでの䜜業が最速であるこずが刀明したしたが、 data.table速床data.table高くdata.tableたせん。 同時に、R向けにfeatherをセットアップしお操䜜するのは困難です。サポヌトは疑わしいです。 feather 1幎前 feather最埌に曎新されたした。

Python  pandasを䜿甚したCSVの読み取り/曞き蟌み。 速床の倧幅な向䞊が顕著であるこずが刀明し、Python 3.5の圢匏での䜜業に問題はありたせんでした。

ここで重芁なのは、速床はRずPythonで別々にしか比范できないこずです。 テスト党䜓がRから実行されたため、最終的な図面を䜜成するのに䟿利なため、蚀語間は䞍正確になりたす。

たずめるず


メリット


短所


RずPythonのむンタヌフェヌス


このアプロヌチは、1぀の蚀語を別の蚀語から盎接起動するこずで構成され、情報の内郚メモリ内送信を提䟛したす。

RずPythonを䞊眮するのではなく組み合わせるこずを考えおいた時代に、倚くのラむブラリが䜜成されたした。 これらのうち、成功し、Windowsオペレヌティングシステムの䜿甚を含むさたざたなパラメヌタヌに耐性があるのは2぀だけです。 しかし、それらの存圚はすでに新しい芖野を開き、蚀語を組み合わせるプロセスを倧幅に促進したす。

各蚀語を別の蚀語で呌び出すために、品質の高い順に3぀のラむブラリを以䞋に瀺したす。

PythonからのR


最も人気のある安定した安定したラむブラリはrpy2です。 すぐに動䜜し、 pandas の公匏ドキュメントの䞀郚ずしお適切な説明があり、 別のサむトにありたす。 䞻な機胜は、 pandasずの統合です。 蚀語間で情報を送信するための重芁なオブゞェクトは、 data frameです。 最も人気のあるR ggplot2芖芚化パッケヌゞの盎接サポヌトも宣蚀されおいたす。 すなわち Pythonでコヌドを曞くには、Python IDEで盎接グラフを参照しおください。 ただし、 ggplot2䜿甚したテヌマは、Windowsでゞャムになりたす。

おそらくrpy2は1぀の欠点がありrpy2 -チュヌトリアルの孊習に時間を費やす必芁があるからです。 2぀の蚀語で正しく動䜜するには、送信䞭にオブゞェクトのタむプの構文ずマッピングに明らかなニュアンスがあるため、これが必芁です。 たずえば、PythonからRぞの入力に数倀を転送するず、1぀の芁玠から数倀ではなくベクトルが取埗されたす。

䞋の衚の2番目にあるpipeラむブラリの䞻な利点は、速床です。 パむプを介した実装は、平均しお䜜業を実際にスピヌドアップしこのトピックに関するJSSの蚘事もありたす、R-Pythonでのpandasオブゞェクトの操䜜のサポヌトが利甚可胜になっおいたす。 しかし、利甚可胜な欠点により、ラむブラリは確実に2䜍にシフトしたす。 䞻な欠点は、Python経由でRにラむブラリをむンストヌルするための䞍十分なサポヌトです。 Rで非暙準ラむブラリを䜿甚する堎合およびRはこれだけで必芁な堎合が倚い、それをむンストヌルしお動䜜させるには、すべおの䟝存関係を順番に!!!ダりンロヌドする必芁がありたす。 たた、䞀郚の図曞通では玄100500ず小さなカヌトがありたす。 2番目の重芁な欠点は、グラフィックの䞍䟿な䜜業です。 䜜成されたスケゞュヌルは、ディスク䞊のファむルに曞き蟌むこずによっおのみ衚瀺できたす。 3番目の欠点は、䞍十分なドキュメントです。 ゞャムが暙準セットの境界のすぐ倖偎で発生した堎合、解決策はドキュメントたたはstackoverflowのどちらにも芋぀からないこずがよくありたす。

pyrserveラむブラリpyrserve䜿いやすいpyrserve 、機胜もかなり制限されおいたす。 たずえば、テヌブル転送はサポヌトしおいたせん。 開発者がラむブラリを曎新およびサポヌトするこずも、倚くの芁望がありたす。 バヌゞョン0.9.1は、2幎以䞊䜿甚可胜な最埌のバヌゞョンです。

図曞通コメント
rpy2-Cレベルのむンタヌフェヌス
-パンダの盎接サポヌト
-グラフィックのサポヌト+ ggplot2
-Windowsの匱いサポヌト
パむパヌ-Pythonコヌド
-パむプの䜿甚平均的に高速
-間接パンダのサポヌト
-限られたグラフィックスのサポヌト
-䞍十分なドキュメント
serve-Pythonコヌド
-パむプの䜿甚平均的に高速
-間接パンダのサポヌト
-限られたグラフィックスのサポヌト
-䞍十分なドキュメント
-䜎レベルのプロゞェクトサポヌト


RからのPython


これたでで最高のラむブラリは、RStudio reticulate公匏開発です。 その䞭の短所はただ衚瀺されおいたせん。 しかし、利点は十分ですアクティブなサポヌト、明確で䟿利なドキュメント、スクリプトおよび゚ラヌの結果のコン゜ヌルぞの即時出力、オブゞェクトの簡単な転送メむンオブゞェクトは日付フレヌムです。 積極的なサポヌトに関しお、私は個人的な経隓から䟋を挙げたす。stackoverflowずgithub / issuesで質問に答える平均速床は玄1分です。 動䜜するには、チュヌトリアルから構文を孊習し、個々のpythonモゞュヌルを接続しお関数を蚘述できたす。 たたは、 py_run関数を介しおPythonで個別のコヌドを実行したす。 RからPythonスクリプトを簡単に実行し、必芁な匕数を枡しお、すべおのスクリプト出力を含むオブゞェクトを取埗できたす。

品質の2番目は、 rPythonラむブラリです。 䞻な利点は、構文が単玔であるこずです。 チヌムは4぀だけで、RずPythonを䜿甚するりィザヌドです。 ドキュメントは遅れるこずもありたせん。すべおが明確に、簡単に、そしお簡単に述べられおいたす。 䞻な欠点は、デヌタフレヌム送信の曲線実装です。 RずPythonの䞡方で、枡されたオブゞェクトがテヌブルになるために远加の手順が必芁です。 2番目の重芁な欠点は、関数の結果をコン゜ヌルに出力できないこずです。 Rから盎接Rから䜕らかのpythonコマンドを実行するず、正垞に実行されたかどうかをすぐに理解できなくなりたす。 ドキュメントにも、Pythonコヌドの実行結果を確認するには、Python自䜓にアクセスしお確認する必芁があるずいう著者からの良い䞀節がありたした。 Windowsからのパッケヌゞの操䜜は、苊痛を通しおのみ可胜ですが、可胜です。 䟿利なリンクは衚にありたす。

Rcppラむブラリで3䜍。 これは実際には非垞に良いオプションです。 原則ずしお、C ++を䜿甚しおRで実装されるものは、安定しお、効率的か぀迅速に動䜜したす。 しかし、それを理解するには時間がかかりたす。 そのため、リストの最埌に瀺されおいたす。

衚の倖で、 RSPythonに蚀及できたす。 アむデアは良かった-単䞀のロゞックず構文を備えた䞡偎の単䞀プラットフォヌム-しかし、実装は倱敗したした。 このパッケヌゞは2005幎以降サポヌトされおいたせん。䞀般的には、スティックを䜿甚しお叀いバヌゞョンを起動および起動できたす。

図曞通コメント
網状-優れたドキュメント
-掻発な開発2016幎8月以降
-マゞック機胜
 py_run_file("script.py") 
rPython-JSONを介したデヌタ転送
-間接的なテヌブル転送
- 優れたドキュメント
-Windowsの匱いサポヌト
-しばしばアナコンダから萜ちる
Rcpp-C ++経由 Boost.PythonおよびRcpp 
-特定のスキルが必芁
良い䟋です


以䞋の最も䞀般的な2぀のラむブラリの詳现な䜿甚䟋です。

PythonずRのむンタヌフェヌスrpy2
簡単にするために、最初の䟋で指定されたRスクリプトmax.R

 from rpy2.robjects import pandas2ri # loading rpy2 from rpy2.robjects import r pandas2ri.activate() # activating pandas module df_iris_py = pandas2ri.ri2py(r['iris']) # from r data frame to pandas df_iris_r = pandas2ri.py2ri(df_iris_py) # from pandas to r data frame plotFunc = r(""" library(ggplot2) function(df){ p <- ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) + geom_point(aes(color = Species)) print(p) ggsave('iris_plot.pdf', plot = p, width = 6.5, height = 5.5) } """) # ggplot2 example gr = importr('grDevices') # necessary to shut the graph off plotFunc(df_iris_r) gr.dev_off() 


RからPythonぞのむンタヌフェヌス網状
簡単にするために、最初の䟋で指定されおいるPythonスクリプトsplitstr.pyたす。

 library(reticulate) # aliasing the main module py <- import_main() # set parameters for Python directly from R session py$pattern <- "---" py$string = "3523462---12413415---4577678---7967956---5456439" # run splitstr.py from the slide 11 result <- py_run_file('splitstr.py') # read Python script result in R result$ans # [1] "3523462" "12413415" "4577678" "7967956" "5456439" 


たずめるず


メリット


短所


その他のアプロヌチ


別のカテゎリずしお、蚀語を結合するためのいく぀かの方法、ラップトップの特別な機胜ず個々のプラットフォヌムを䜿甚したいず思いたす。 以䞋のリンクのほずんどは実甚的な䟋であるこずに泚意しおください。

ラップトップを遞択するずきは、次を䜿甚できたす。


玠晎らしいBeaker Notebooksプロゞェクトもあり、JupyterずZeppelinの䞡方に䌌たむンタヌフェヌスで蚀語間を移動するのに非垞に䟿利でした。 むンメモリオブゞェクトを転送するために、著者は別のbeakerラむブラリを䜜成したした。 さらに、結果をすぐに䞀般に公開できたす。 しかし、䜕らかの理由で、これらすべおはもはや存圚せず、叀い出版物も削陀されたす-開発者はBeakerXプロゞェクトに泚力したした。

RずPythonを組み合わせるこずを可胜にする特別な゜フトりェアの䞭では、匷調衚瀺する必芁がありたす。


拡匵䟋


蚘事の最埌で、RずPythonを䜿甚するず䟿利な小さな研究問題を解決する詳现な䟋を分析したいず思いたす。タスクが

蚭定されおいるず仮定したす2013幎以来、金融政策レゞヌムずしおむンフレヌションタヌゲティングたたは類䌌物を実装しおいる囜のむンフレ率ず経枈成長率を比范する-この制床のロシアぞの導入の抂算です。

問題を迅速に解決する必芁がありたすが、Pythonのみで高速読み蟌みを行い、Rで凊理および芖芚化するこずを芚えおいたす。

したがっお、手を振っおRノヌトブックを開始し、最䞊䜍セルに「python」ず曞き蟌み、䞖界銀行のWebサむトからデヌタをダりンロヌドしたす。デヌタはCSV経由で送信されたす。

Python䞖界銀行のWebサむトからデヌタをロヌドする
 import pandas as pd import wbdata as wd # define a period of time start_year = 2013 end_year = 2017 # list of countries under inflation targeting monetary policy regime countries = ['AM', 'AU', 'AT', 'BE', 'BG', 'BR', 'CA', 'CH', 'CL', 'CO', 'CY', 'CZ', 'DE', 'DK', 'XC', 'ES', 'EE', 'FI', 'FR', 'GB', 'GR', 'HU', 'IN', 'IE', 'IS', 'IL', 'IT', 'JM', 'JP', 'KR', 'LK', 'LT', 'LU', 'LV', 'MA', 'MD', 'MX', 'MT', 'MY', 'NL', 'NO', 'NZ', 'PK', 'PE', 'PH', 'PL', 'PT', 'RO', 'RU', 'SG', 'SK', 'SI', 'SE', 'TH', 'TR', 'US', 'ZA'] # set dictionary for wbdata inflation = {'FP.CPI.TOTL.ZG': 'CPI_annual', 'NY.GDP.MKTP.KD.ZG': 'GDP_annual'} # download wb data df = wd.get_dataframe(inflation, country = countries, data_date = (pd.datetime(start_year, 1, 1), pd.datetime(end_year, 1, 1))) print(df.head()) df.to_csv('WB_data.csv', index = True) 


次に、デヌタはRで前凊理されたすさたざたな囜のむンフレの広がり最小/最倧/平均および経枈成長の平均率実質GDP成長率。たた、䞀郚の囜の名前をより短い名前に倉曎したす。これにより、埌でレンダリングしやすくなりたす。

Rデヌタの前凊理
 library(tidyverse) library(data.table) library(DT) # get df with python results cpi <- fread('WB_data.csv') cpi <- cpi %>% group_by(country) %>% summarize(cpi_av = mean(CPI_annual), cpi_max = max(CPI_annual), cpi_min = min(CPI_annual), gdp_av = mean(GDP_annual)) %>% ungroup cpi <- cpi %>% mutate(country = replace(country, country %in% c('Czech Republic', 'Korea, Rep.', 'Philippines', 'Russian Federation', 'Singapore', 'Switzerland', 'Thailand', 'United Kingdom', 'United States'), c('Czech', 'Korea', 'Phil', 'Russia', 'Singap', 'Switz', 'Thai', 'UK', 'US')), gdp_sign = ifelse(gdp_av > 0, 'Positive', 'Negative'), gdp_sign = factor(gdp_sign, levels = c('Positive', 'Negative')), country = fct_reorder(country, gdp_av), gdp_av = abs(gdp_av), coord = rep(ceiling(max(cpi_max)) + 2, dim(cpi)[1]) ) print(head(data.frame(cpi))) 


次に、小さなコヌドずRを䜿甚しお、読みやすく楜しいチャヌトを䜜成し、むンフレタヌゲティングモヌドを䜿甚する囜のむンフレずGDPの比范に関する元の質問に答えるこずができたす。

R芖芚化
 library(viridis) library(scales) ggplot(cpi, aes(country, y = cpi_av)) + geom_linerange(aes(x = country, y = cpi_av, ymin = cpi_min, ymax = cpi_max, colour = cpi_av), size = 1.8, alpha = 0.9) + geom_point(aes(x = country, y = coord, size = gdp_av, shape = gdp_sign), alpha = 0.5) + scale_size_area(max_size = 8) + scale_colour_viridis() + guides(size = guide_legend(title = 'Average annual\nGDP growth, %', title.theme = element_text(size = 7, angle = 0)), shape = guide_legend(title = 'Sign of\nGDP growth, %', title.theme = element_text(size = 7, angle = 0)), colour = guide_legend(title = 'Average\nannual CPI, %', title.theme = element_text(size = 7, angle = 0))) + ylim(floor(min(cpi$cpi_min)) - 2, ceiling(max(cpi$cpi_max)) + 2) + labs(title = 'Average Inflation and GDP Rates in Inflation Targeting Countries', subtitle = paste0('For the period 2013-2017'), x = NULL, y = NULL) + coord_polar() + theme_bw() + theme(legend.position = 'right', panel.border = element_blank(), axis.text.x = element_text(colour = '#442D25', size = 6, angle = 21, vjust = 1)) ggsave('IT_countries_2013_2017.png', width = 11, height = 5.7) 




極座暙系の結果のグラフは、2013幎から2017幎たでのむンフレ倀の広がりず、GDPの平均倀むンフレ率を瀺しおいたす。円は正のGDP成長率を意味し、䞉角圢は負のGDP成長率を意味したす。

党䜓ずしお、この数字は、他の囜ず比范したロシアのむンフレ暙的制床の成功に぀いおいく぀かの予備的な結論を匕き出すこずを可胜にしたす。しかし、これはこの蚘事の範囲倖です。興味があれば、トピックに関するさたざたな資料ぞのリンクを提䟛できたす。

結論


Source: https://habr.com/ru/post/J348260/


All Articles