Язык Wolfram Language

Расширенный доступ к базе знаний Wolfram Knowledgebase

Гранты национального фонда науки

Национальный научный фонд США (NSF) выдал почти 12 000 грантов в 2015 году. В данном примере, информация о наградах, исследователях, а также их учреждениях проанализирована с использованием данных, полученных из www.nsf.gov/awardsearch/download.jsp. Пользователь может загрузить информационный объект, содержащий эти данные в качестве объекта-ресурса, ResourceObject, а затем изучить распределение размеров грантов, количественных и качественных свойств заявок и грантов, а также географического расселения учреждений, получивших грант.

Для начала загрузим информационный объект, ResourceObject, содержащий данные от NSF.

In[1]:=
Click for copyable input
nsfStore = ResourceData[ ResourceObject[ Association[ "Name" -> "National Science Foundation Grants - 2015", "UUID" -> "0e9655df-86b6-4e20-bcc9-87365562357b", "ResourceType" -> "DataResource", "Version" -> "1.0.0", "Description" -> "Data on National Science Foundation grants (and \ associated investigators and institutions) awarded in the the year \ 2015.", "ContentSize" -> Quantity[0, "Bytes"], "ContentElements" -> {"EntityStore"}]]]
Out[1]=

Зарегистрируем полученный информационный объект.

In[2]:=
Click for copyable input
PrependTo[$EntityStores, nsfStore];

Просмотрим доступныe свойствa грантов, используя объект "NSFGrant".

In[3]:=
Click for copyable input
EntityValue["NSFGrant", "Properties"]
Out[3]=

Рассмотрим данные о случайно выбранном гранте.

код на языке Wolfram Language целиком
In[4]:=
Click for copyable input
TextGrid[List @@@ (RandomEntity["NSFGrant"]["PropertyAssociation"] // SortBy[#, ByteCount] & // Normal // Take[#, 16] &), Dividers -> All, Background -> {Automatic, {{LightBlue, None}}}] // TraditionalForm
Out[4]//TraditionalForm=

Отобразим на графике распределение размеров грантов.

In[5]:=
Click for copyable input
awardAmounts = EntityValue["NSFGrant", "AwardAmount"];
In[6]:=
Click for copyable input
Histogram[awardAmounts, ScalingFunctions -> {Identity, "Log"}, PlotRange -> All, AxesLabel -> Automatic]
Out[6]=

Запросим детали о трех самых крупных грантах.

In[7]:=
Click for copyable input
EntityValue[ EntityClass["NSFGrant", "AwardAmount" -> TakeLargest[3]], "Dataset"]
Out[7]=

Рассмотрим общее количество грантов для каждой дирекции научного фонда.

код на языке Wolfram Language целиком
In[8]:=
Click for copyable input
TextGrid[SortBy[{#1, Total[#2[[All, -1]]]} & @@@ Normal[GroupBy[ EntityValue["NSFGrant", {"Directorate", "AwardAmount"}], First]], Last] // DeleteMissing[#, 1, 2] & // Reverse, Alignment -> {{Left, Decimal}, Automatic}, Dividers -> All, Background -> {Automatic, {{LightBlue, None}}}]
Out[8]=

Сравним распределение первых цифр суммы грантов в долларах с законом Бенфорда.

код на языке Wolfram Language целиком
In[9]:=
Click for copyable input
With[{$s = QuantityMagnitude[ EntityValue["NSFGrant", EntityProperty["NSFGrant", "AwardAmount"]]]}, ListPlot[{Rest[Sort[Tally[IntegerDigits[#][[1]] & /@ $s]]], Table[{d, Length[$s] Log10[1 + 1/d]}, {d, 9}]}, Filling -> Axis, PlotLegends -> {"NSF grants", "Benford"}]]
Out[9]=

Создадим словесное облако наиболее часто используемых слов в грантах по математике, физике, и химии.

In[10]:=
Click for copyable input
keywords = EntityValue[EntityClass["NSFGrant", "Division" -> #], "KeywordTally"] & /@ {"Division Of Mathematical Sciences", "Division Of Physics", "Division Of Chemistry"};
In[11]:=
Click for copyable input
Row[WordCloud[ Merge[Association @@ (Rule @@@ #) & /@ DeleteMissing[#], Total]] & /@ keywords]
Out[11]=

Визуализируем количество грантов NSF по размеру и почтовому индексу.

код на языке Wolfram Language целиком
In[12]:=
Click for copyable input
amountsandinsts = EntityValue[ "NSFGrant", {EntityProperty["NSFGrant", "AwardAmount"], EntityProperty["NSFGrant", "Institution"]}];
In[13]:=
Click for copyable input
amountsinzips = (#[[1, 1]] -> Total[#[[All, -1]]]) & /@ Normal[GroupBy[Transpose[{EntityValue[ amountsandinsts[[All, -1]], EntityProperty["NSFInstitution", "ZIPCode"] ], amountsandinsts[[All, 1]]}], First]][[All, -1]];
In[14]:=
Click for copyable input
GeoRegionValuePlot[SortBy[amountsinzips, Last], ColorFunction -> ColorData["GreenPinkTones"], GeoRange -> Entity["Country", "UnitedStates"], PlotLegends -> Histogram]
Out[14]=

Родственные примеры

de en es fr ja ko pt-br zh