Создание матрицы рассеяния с J - PullRequest
3 голосов
/ 06 ноября 2019

Я занимаюсь данными в командной строке и обнаружил, что J - удобный инструмент для базовых задач анализа (статистики). После того, как несколько лет назад я немного почувствовал первоначальный интерес к языку, мне нужно было перезапустить его. Было бы здорово получить некоторую помощь, когда я застрял.

У меня есть набор измеряемых атрибутов, и я хочу визуально отобразить корреляцию. Представление часто называют матрицей диаграммы рассеяния, хорошим примером является здесь . Я думаю, что подобную фигуру можно создать в J, используя ее великолепную библиотеку графиков.

То, что я сделал до сих пор:

NB. For sake of brevity, my test data is simulated here comprising 4 attributes with 7 measurements:
   ]A=:i. 7 4
 0  1  2  3
 4  5  6  7
 8  9 10 11
12 13 14 15
16 17 18 19
20 21 22 23
24 25 26 27

NB. With the aid of a sparse matrix I created the index matrix of the multiplot matrix/layout
   ]Idx=: 4 $. $. 4 4$1
0 0
0 1
0 2
0 3
1 0
1 1
1 2
1 3
2 0
2 1
2 2
2 3
3 0
3 1
3 2
3 3

NB. Creating a single plot work fine with this sentence, here showing attribute 1 vs 3.
'TYPE marker' plot 1 1 <;.1 |: 3 1 {"1 A

NB. And here is my failed approach for creating a (multiplot) scatterplot matrix
   pd 'multi 4 4'
   3 : 0''
for_ijk. Idx do.
pd 1 1 <;.1 |: ijk {"1 A
end.
)
   pd 'show'

Прежде всего, выполнение этого через цикл кажется неправильнымв J. Есть ли лучший способ внедрить индекс для каждого элемента графика?

Во-вторых, цикл не правильно передает данные в график (pd), но я не смог найти способ добавить все результаты вбольшая матрица и только это подать на pd.

Любые идеи приветствуются! Большое спасибо заранее.

1 Ответ

2 голосов
/ 06 ноября 2019

Ваш подход хорош, за исключением того, что pd-multi требует, насколько я знаю, все данные сразу как коробочный список из 2-х элементов-списков:

(options1;data1) ; (options2;data2) ; ... 

Один из возможных способов сделать этоэто:

options =: 'type marker'
pd'reset'
pd'multi 4 4'
pd (options; <)"1 (A&({"1~)) &.> Idx
pd 'show'

при условии, что options является общим для всех участков.

...