Новое в системе Wolfram
Mathematica
9
◄
предыдущая
|
следующая
►
Новое в системе Wolfram
Mathematica
9
›
Встроенная интеграция с R
Иерархическая кластеризация
Загружаем
RLink
.
In[1]:=
X
Needs["RLink`"] InstallR[]
Начнём с создания матричных данных.
In[2]:=
X
mdata = RandomVariate[NormalDistribution[], {10, 5}]
Out[2]=
Переносим данные в R.
In[3]:=
X
RSet["y", mdata]
Out[3]=
Добавляем метки для столбцов и строк.
In[4]:=
X
REvaluate[" { dimnames(y)<- list(paste(\"g\", 1:10, sep=\"\"), paste(\"t\", 1:5, \ sep=\"\")) y }"]
Out[4]=
Создаём корреляционную матрицу и матрицу дистанций.
In[5]:=
X
REvaluate[" { c <- cor(t(y), method=\"spearman\") d <- as.dist(1-c) }"]
Out[5]=
Вызываем процедуру иерархической кластеризации.
In[6]:=
X
REvaluate["hr <- hclust(d, method = \"complete\", members=NULL)"]
Out[6]=
Задаём функции визуализации из предыдущего примера функций высшего порядка.
In[7]:=
X
mathematicaRPlotWrapper = RFunction["function(filename, plotfun){ pdf(filename) plotfun() dev.off() }"]
Out[7]=
In[8]:=
X
getRPlot[plotFun_RFunction] := With[{tempfile = FileNameJoin[{$TemporaryDirectory, "temp.pdf"}]}, If[FileExistsQ[tempfile], DeleteFile[tempfile]]; mathematicaRPlotWrapper[tempfile, plotFun]; If[! FileExistsQ[tempfile], Return[$Failed]]; Import[tempfile] ];
Строим дендрограмму (параметр "hang" управляет её построением).
In[9]:=
X
Show[#, ImageSize -> Large, PlotRange -> All] &@ getRPlot@RFunction["function(){ par(mfrow = c(2, 2)) plot(hr, hang = 0.1) plot(hr, hang = -0.1) }"]
Out[9]=