<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF110%3AR</id>
		<title>LXF110:R - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF110%3AR"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF110:R&amp;action=history"/>
		<updated>2026-05-13T08:43:22Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF110:R&amp;diff=8744&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF110:R&amp;diff=8744&amp;oldid=prev"/>
				<updated>2009-09-24T04:56:23Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;: '''R''' Свободный инструментарий для статистической обработки данных&lt;br /&gt;
&lt;br /&gt;
==Взаимосвязь случайных величин==&lt;br /&gt;
&lt;br /&gt;
{{Цикл/R}}&lt;br /&gt;
&lt;br /&gt;
: '''ЧАСТЬ 2''' Сегодня '''Антон Коробейников''' и '''Евгений Балдин''' сделают тайное явным, вскрыв корреляцию между двумя, казалось бы, совершенно несвязанными событиями, а ''R'' им в этом поможет.&lt;br /&gt;
&lt;br /&gt;
Одной из основных задач статистики является изучение зависимостей между данными. При этом слово «зависимость» понимается в самом широком смысле. Скажем, существует однозначная функциональная зависимость, когда, имея только один набор данных, становится возможным полностью определить второй набор. А бывает и другая ситуация: полностью определить второй набор нельзя, но можно попытаться «вытянуть» хоть какую-то информацию о нём.&lt;br /&gt;
&lt;br /&gt;
===Корреляция===&lt;br /&gt;
&lt;br /&gt;
Начнём всё же с функциональной зависимости, как с наиболее просто&lt;br /&gt;
формализуемой. Классическим инструментом для измерения линейной зависимости между двумя наборами данных является коэффициент корреляции – числовая величина, находящаяся в интервале от '''-1''' до '''+1'''. Чем она больше по модулю (т.е. ближе к +1 или -1), тем выше линейная связь между наборами данных. Знак коэффициента корреляции показывает, в одном ли направлении изменяются эти наборы. Если один из них возрастает, а второй убывает, то коэффициент корреляции отрицателен, а если оба набора возрастают или убывают одновременно – положителен. Значение коэффициента корреляции, равное по модулю '''1''', соответствует точной линейной зависимости между двумя наборами данных. Линейная же зависимость является самой любимой у экспериментаторов всех мастей.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что значение коэффициента корреляции, близкое к нулю, не означает независимости двух наборов данных.&lt;br /&gt;
Коэффициент корреляции – это мера линейной зависимости, и его равенство нулю означает лишь факт отсутствия последней, но не&lt;br /&gt;
исключает наличия любой другой. Отсутствие линейной зависимости равносильно независимости только для нормально распределённых&lt;br /&gt;
выборок, а факт нормальности, естественно, надо проверять отдельно ([[LXF109:R|LXF109]]).&lt;br /&gt;
&lt;br /&gt;
Для вычисления коэффициента корреляции в ''R'' реализована функция '''cor''':&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; cor(5:15, 7:17)&lt;br /&gt;
 [1] 1&lt;br /&gt;
 &amp;gt; cor(5:15, c(7:16, 23))&lt;br /&gt;
 [1] 0.9375093&lt;br /&gt;
&lt;br /&gt;
В самом простом случае ей передаются два аргумента (векторы одинаковой длины). Кроме того, возможен вызов функции с одним&lt;br /&gt;
аргументом, в качестве которого может выступать матрица или набор данных ('''data frame'''). В этом случае '''cor''' вычисляет так называемую корреляционную матрицу, составленную из коэффициентов корреляций&lt;br /&gt;
между столбцами матрицы или набора данных, взятыми попарно:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; cor(longley)&lt;br /&gt;
               GNP.deflator       GNP  Unemployed  Armed.Forces&lt;br /&gt;
 GNP.deflator     1.0000000 0.9915892  0.6206334      0.4647442&lt;br /&gt;
 GNP              0.9915892 1.0000000  0.6042609      0.4464368&lt;br /&gt;
 Unemployed       0.6206334 0.6042609  1.0000000     -0.1774206&lt;br /&gt;
 Armed.Forces     0.4647442 0.4464368 -0.1774206      1.0000000&lt;br /&gt;
 Population       0.9791634 0.9910901  0.6865515      0.3644163&lt;br /&gt;
 Year             0.9911492 0.9952735  0.6682566      0.4172451&lt;br /&gt;
 Employed         0.9708985 0.9835516  0.5024981      0.4573074&lt;br /&gt;
                 Population       Year     Employed&lt;br /&gt;
 GNP.deflator     0.9791634 0.9911492     0.9708985&lt;br /&gt;
 GNP              0.9910901 0.9952735     0.9835516&lt;br /&gt;
 Unemployed       0.6865515 0.6682566     0.5024981&lt;br /&gt;
 Armed.Forces     0.3644163 0.4172451     0.4573074&lt;br /&gt;
 Population       1.0000000 0.9939528     0.9603906&lt;br /&gt;
 Year             0.9939528 1.0000000     0.9713295&lt;br /&gt;
 Employed         0.9603906 0.9713295     1.0000000&lt;br /&gt;
&lt;br /&gt;
Если все данные присутствуют, то всё просто; но что делать, когда есть пропущенные наблюдения? Для вычисления корреляционной&lt;br /&gt;
матрицы в данном случае имеется несколько способов. В команде '''cor'''&lt;br /&gt;
предусмотрена опция '''use'''; по умолчанию она равна '''all.obs''', что при&lt;br /&gt;
наличии хотя бы одного пропущенного наблюдения приводит к ошибке исполнения '''cor'''. Если же приравнять use значению '''complete.obs''', то до вычисления корреляционной матрицы из данных удаляются все&lt;br /&gt;
наблюдения, в которых есть хотя бы один пропуск. Может оказаться&lt;br /&gt;
так, что пропуски раскиданы по исходному набору данных достаточно&lt;br /&gt;
хаотично и их много, так что после построчного удаления от матрицы фактически ничего не остаётся. В таком случае поможет попарное&lt;br /&gt;
удаление пропусков, затрагивающее не всю матрицу сразу, а лишь два столбца непосредственно перед вычислением коэффициента корреляции. Для этого опцию '''use''' следует приравнять значению '''pairwise.complete.obs'''.&lt;br /&gt;
&lt;br /&gt;
В последнем случае следует принимать во внимание то, что коэффициенты корреляции вычисляются по разному количеству наблюдений, и сравнивать их друг с другом может быть опасно.&lt;br /&gt;
&lt;br /&gt;
  &amp;gt; cor(swiss)&lt;br /&gt;
                        Fertility     Agriculture          Examination&lt;br /&gt;
 Fertility           1.0000000       0.35307918             -0.6458827&lt;br /&gt;
 Agriculture         0.3530792       1.00000000             -0.6865422&lt;br /&gt;
 Examination        -0.6458827      -0.68654221              1.0000000&lt;br /&gt;
 Education          -0.6637889      -0.63952252              0.6984153&lt;br /&gt;
 Catholic            0.4636847       0.40109505             -0.5727418&lt;br /&gt;
 Infant.Mortality    0.4165560      -0.06085861             -0.1140216&lt;br /&gt;
                      Education          Catholic      Infant.Mortality&lt;br /&gt;
 Fertility        -0.66378886         0.4636847            0.41655603&lt;br /&gt;
 Agriculture      -0.63952252         0.4010951           -0.06085861&lt;br /&gt;
 Examination       0.69841530        -0.5727418           -0.11402160&lt;br /&gt;
 Education         1.00000000        -0.1538589           -0.09932185&lt;br /&gt;
 Catholic         -0.15385892         1.0000000            0.17549591&lt;br /&gt;
 Infant.Mortality -0.09932185         0.1754959            1.00000000&lt;br /&gt;
  &amp;gt; # Создаём копию данных.&lt;br /&gt;
  &amp;gt; swissNA &amp;lt;- swiss&lt;br /&gt;
  &amp;gt; # Удаляем некоторые данные.&lt;br /&gt;
  &amp;gt; swissNA[1,2] &amp;lt;- swissNA[7,3] &amp;lt;- swissNA[25,5] &amp;lt;- NA&lt;br /&gt;
  &amp;gt; cor(swissNA)&lt;br /&gt;
  Ошибка в cor(swissNA) : пропущенные наблюдения в cov/cor&lt;br /&gt;
  &amp;gt; cor(swissNA, use = &amp;quot;complete&amp;quot;)&lt;br /&gt;
                        Fertility     Agriculture          Examination&lt;br /&gt;
 Fertility           1.0000000       0.37821953             -0.6548306&lt;br /&gt;
 Agriculture         0.3782195       1.00000000             -0.7127078&lt;br /&gt;
 Examination        -0.6548306      -0.71270778              1.0000000&lt;br /&gt;
 Education          -0.6742158      -0.64337782              0.6977691&lt;br /&gt;
 Catholic            0.4772298       0.40148365             -0.6079436&lt;br /&gt;
 Infant.Mortality    0.3878150      -0.07168223             -0.1071005&lt;br /&gt;
                      Education          Catholic      Infant.Mortality&lt;br /&gt;
 Fertility        -0.67421581         0.4772298            0.38781500&lt;br /&gt;
 Agriculture      -0.64337782         0.4014837           -0.07168223&lt;br /&gt;
 Examination       0.69776906        -0.6079436           -0.10710047&lt;br /&gt;
 Education         1.00000000        -0.1701445           -0.08343279&lt;br /&gt;
 Catholic         -0.17014449         1.0000000            0.17221594&lt;br /&gt;
 Infant.Mortality -0.08343279         0.1722159            1.00000000&lt;br /&gt;
  &amp;gt; cor(swissNA, use = &amp;quot;pairwise&amp;quot;)&lt;br /&gt;
                        Fertility     Agriculture          Examination&lt;br /&gt;
 Fertility           1.0000000       0.39202893             -0.6531492&lt;br /&gt;
 Agriculture         0.3920289       1.00000000             -0.7150561&lt;br /&gt;
 Examination        -0.6531492      -0.71505612              1.0000000&lt;br /&gt;
 Education          -0.6637889      -0.65221506              0.6992115&lt;br /&gt;
 Catholic            0.4723129       0.41520069             -0.6003402&lt;br /&gt;
 Infant.Mortality    0.4165560      -0.03648427             -0.1143355&lt;br /&gt;
                      Education          Catholic      Infant.Mortality&lt;br /&gt;
 Fertility        -0.66378886         0.4723129            0.41655603&lt;br /&gt;
 Agriculture      -0.65221506         0.4152007           -0.03648427&lt;br /&gt;
 Examination          0.69921153         -0.6003402          -0.11433546&lt;br /&gt;
 Education           1.00000000         -0.1791334          -0.09932185&lt;br /&gt;
 Catholic            -0.17913339          1.0000000           0.18503786&lt;br /&gt;
 Infant.Mortality -0.09932185             0.1850379           1.00000000&lt;br /&gt;
&lt;br /&gt;
Есть ещё два момента, на которые стоит обратить внимание. Первый – это ранговый коэффициент корреляции Спирмена [Spearman] '''ρ'''. Он отражает меру монотонной зависимости и является более робастным (т.е. менее подвержен влиянию случайных «выбросов»&lt;br /&gt;
в данных). Он бывает полезен в том случае, когда набор данных не получен выборкой из двумерного нормального распределения. Для подсчёта '''ρ''' достаточно приравнять опцию '''method''' значению '''spearman''':&lt;br /&gt;
&lt;br /&gt;
  &amp;gt; x &amp;lt;- rexp(50);&lt;br /&gt;
  &amp;gt; cor(x, log(x), method=&amp;quot;spearman&amp;quot;)&lt;br /&gt;
  [1] 1&lt;br /&gt;
&lt;br /&gt;
Можно также сравнить, насколько сильно отличаются обычный коэффициент корреляции от коэффициента корреляции Спирмена:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt; clP &amp;lt;- cor(longley)&lt;br /&gt;
  &amp;gt; clS &amp;lt;- cor(longley, method = &amp;quot;spearman&amp;quot;)&lt;br /&gt;
  &amp;gt; i &amp;lt;- lower.tri(clP)&lt;br /&gt;
  &amp;gt; cor(cbind(P = clP[i], S = clS[i]))&lt;br /&gt;
              P                       S&lt;br /&gt;
  P           1.000000                0.980239&lt;br /&gt;
  S           0.980239                1.000000&lt;br /&gt;
&lt;br /&gt;
Второй момент – это проверка гипотезы о значимости коэффициента корреляции, что равносильно проверке гипотезы о равенстве его&lt;br /&gt;
нулю. Если гипотеза отвергается, то влияние одного набора данных на другой считается значимым. Для проверки такой гипотезы используется функция '''cor.test''':&lt;br /&gt;
&lt;br /&gt;
  &amp;gt; x &amp;lt;- rnorm(50)&lt;br /&gt;
  &amp;gt; y &amp;lt;- rnorm(50, mean = 2, sd = 1);&lt;br /&gt;
  &amp;gt; # Тестируем независимые данные.&lt;br /&gt;
  &amp;gt; cor.test(x,y)&lt;br /&gt;
              Pearson's product-moment correlation data: x and y&lt;br /&gt;
  t = 0.2496, df = 48, p-value = 0.804&lt;br /&gt;
  alternative hypothesis: true correlation is not equal to 0&lt;br /&gt;
  95 percent confidence interval:&lt;br /&gt;
   -0.2447931 0.3112364&lt;br /&gt;
  sample estimates:&lt;br /&gt;
        cor&lt;br /&gt;
  0.03600814&lt;br /&gt;
  &amp;gt; # Тестируем линейно зависимые данные.&lt;br /&gt;
  &amp;gt; cor.test(x, 2*x);&lt;br /&gt;
              Pearson's product-moment correlation&lt;br /&gt;
  data: x and 2 * x&lt;br /&gt;
  t = Inf, df = 48, p-value &amp;lt; 2.2e-16&lt;br /&gt;
  alternative hypothesis: true correlation is not equal to 0&lt;br /&gt;
  95 percent confidence interval:&lt;br /&gt;
   11&lt;br /&gt;
  sample estimates:&lt;br /&gt;
  cor&lt;br /&gt;
    1&lt;br /&gt;
&lt;br /&gt;
Видно, что в первом случае гипотеза о равенстве нулю коэффициента корреляции не отвергается, что соответствует исходным данным. Во втором случае вызов был осуществлён с заведомо линейно-зависимыми аргументами, и критерий отвергает гипотезу о равенстве&lt;br /&gt;
нулю коэффициента корреляции с большим уровнем надёжности. Кроме непосредственно p-значения, функция выводит оценку коэффициента корреляции и доверительный интервал для него. Выставить доверительный уровень можно с помощью опции '''conf.level'''. Кроме&lt;br /&gt;
того, при помощи опции '''method''' можно выбирать, относительно какого&lt;br /&gt;
коэффициента корреляции (простого или рангового) нужно проводить проверку гипотезы значимости.&lt;br /&gt;
&lt;br /&gt;
Следует признать, что смотреть на матрицу, полную чисел, не очень&lt;br /&gt;
удобно. Поэтому в ''R'' есть несколько способов, с помощью которых ее&lt;br /&gt;
можно визуализировать.&lt;br /&gt;
&lt;br /&gt;
Первый путь – использовать функцию '''symnum''', которая выведет&lt;br /&gt;
матрицу по-прежнему в текстовом виде, но все числа будут заменены на буквы, в зависимости от того, какому диапазону принадлежало&lt;br /&gt;
значение:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; symnum(cor(longley))&lt;br /&gt;
                        GNP. GNP U A P Y E&lt;br /&gt;
 GNP.deflator              1&lt;br /&gt;
 GNP                       B       1&lt;br /&gt;
 Unemployed                ,        , 1&lt;br /&gt;
 Armed.Forces              .        .         1&lt;br /&gt;
 Population                B       B     ,    . 1&lt;br /&gt;
 Year                      B       B     ,    . B 1&lt;br /&gt;
 Employed                  B       B     .    . B B 1&lt;br /&gt;
 attr(,&amp;quot;legend&amp;quot;)&lt;br /&gt;
 [1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1}&lt;br /&gt;
&lt;br /&gt;
Функция '''symnum''' имеет большое количество разнообразных&lt;br /&gt;
настроек, но по умолчанию они все выставлены в значения, оптимальные для отображения корреляционных матриц.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание= [[Изображение:LXF110_90_1.jpg|Рис. 1|300px]]Рис. 1. Графическое представление корреляционной матрицы.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Второй способ – «настоящее» графическое представление корреляционных коэффициентов. Идея проста: нужно разбить область от '''-1'''&lt;br /&gt;
до '''+1''' на отдельные диапазоны, назначить каждому из них свой цвет, а затем вывести всё это на экран (рис.1). Для этого следует воспользоваться функциями '''imag'''e и '''axis''':&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; C &amp;lt;- cor(longley)&lt;br /&gt;
 &amp;gt; image(1:ncol(C), 1:nrow(C), C, col = rainbow(12),&lt;br /&gt;
+        axes = FALSE, xlab = &amp;quot;&amp;quot;, ylab = &amp;quot;&amp;quot;)&lt;br /&gt;
 &amp;gt; # Подписи к осям.&lt;br /&gt;
 &amp;gt; axis(1, at = 1:ncol(C), labels=colnames(C))&lt;br /&gt;
 &amp;gt; axis(2, at = 1:nrow(C), labels=rownames(C), las = 2)&lt;br /&gt;
&lt;br /&gt;
Ещё один интересный способ представления корреляционной&lt;br /&gt;
матрицы реализуется пакетом '''ellipse'''. В данном случае значения коэффициентов корреляции рисуются в виде эллипсов, отражающих форму плотности двумерного нормального распределения с данным значением корреляции между компонентами. Чем ближе значение коэффициента корреляции к +1 или -1, тем более вытянутым становится эллипс. Наклон эллипса отражает знак коэффициента. Для получения изображения необходимо вызвать функцию '''plotcorr''' (рис.2):&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; # Устанавливаем библиотеку.&lt;br /&gt;
 &amp;gt; install.packages(pkgs=c(«ellipse»))&lt;br /&gt;
 &amp;gt; # Загружаем.&lt;br /&gt;
 &amp;gt; library(ellipse)&lt;br /&gt;
 &amp;gt; # Используем.&lt;br /&gt;
 &amp;gt; plotcorr(cor(longley))&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание= [[Изображение:LXF110_90_2.jpg|Рис. 2|300px]]Рис. 2. Результат работы команды '''plotcorr''' из пакета '''ellipse.'''|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
===Таблицы сопряжённости===&lt;br /&gt;
&lt;br /&gt;
Таблицы сопряжённости (contigency tables) – это удобный способ&lt;br /&gt;
изображения категориальных переменных и исследования зависимостей между ними. Они представляют собой таблицы, ячейки которых&lt;br /&gt;
индексируются градациями участвующих факторов, а их содержимое&lt;br /&gt;
равняется количеству наблюдений с данными градациями. Построить&lt;br /&gt;
таблицу сопряжённости можно с помощью функции '''table'''. В качестве&lt;br /&gt;
аргументов ей нужно передать факторы, на основе которых будет строиться таблица сопряжённости:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; # Таблица сопряжённости для выборки, имеющей&lt;br /&gt;
 &amp;gt; # распределение Пуассона (n=100, λ=5).&lt;br /&gt;
 &amp;gt; table(rpois(100,5))&lt;br /&gt;
 0     2    3      4     5     6   7    8      9 10 11&lt;br /&gt;
 1     7 18 17 22 13 13 4                      1    1   3&lt;br /&gt;
 &amp;gt; with(airquality, table(cut(Temp, quantile(Temp)), Month))&lt;br /&gt;
                       Month&lt;br /&gt;
                     5      6    7      8       9&lt;br /&gt;
  (56,72]          24       3    0      1     10&lt;br /&gt;
  (72,79]            5     15    2      9     10&lt;br /&gt;
  (79,85]            1      7 19        7       5&lt;br /&gt;
  (85,97]            0      5 10       14       5&lt;br /&gt;
&lt;br /&gt;
''R'' использует «честное» представление для трёх- и более мерных&lt;br /&gt;
таблиц сопряжённости, то есть каждый фактор получает по своему измерению. Однако это не очень удобно при выводе подобных таблиц&lt;br /&gt;
на печать или сравнении с имеющимися в литературе. Традиционно&lt;br /&gt;
для этого применяются «плоские» таблицы сопряжённости, когда все&lt;br /&gt;
факторы, кроме одного, объединяются в один «многомерный» фактор,&lt;br /&gt;
градации которого и используются при построении таблицы сопряжённости. Построить плоскую таблицу сопряжённости можно с помощью&lt;br /&gt;
функцией '''ftable''':&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; ftable(Titanic, row.vars = 1:3)&lt;br /&gt;
                                  Survived     No      Yes&lt;br /&gt;
 Class     Sex          Age&lt;br /&gt;
1st        Male         Child                    0        5&lt;br /&gt;
                        Adult                 118        57&lt;br /&gt;
           Female       Child                    0        1&lt;br /&gt;
                        Adult                    4      140&lt;br /&gt;
 2nd       Male         Child                    0      11&lt;br /&gt;
                        Adult                 154       14&lt;br /&gt;
           Female       Child                    0      13&lt;br /&gt;
                        Adult                  13       80&lt;br /&gt;
 3rd       Male         Child                  35       13&lt;br /&gt;
                        Adult                 387       75&lt;br /&gt;
           Female       Child                  17       14&lt;br /&gt;
                        Adult                  89       76&lt;br /&gt;
 Crew      Male         Child                    0       0&lt;br /&gt;
                        Adult                 670      192&lt;br /&gt;
           Female       Child                    0       0&lt;br /&gt;
                        Adult                    3      20&lt;br /&gt;
&lt;br /&gt;
Опция '''row.vars''' позволяет указать номера переменных в наборе&lt;br /&gt;
данных, которые следует объединить в один фактор, градации которого будут индексировать строки таблицы сопряжённости. Опция '''col.vars''' проделывает то же самое, но для столбцов таблицы.&lt;br /&gt;
&lt;br /&gt;
Функцию '''table''' можно использовать и для других целей. Самое простое – это подсчёт частот. Например, можно считать пропуски:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; d &amp;lt;- factor(rep(c(&amp;quot;A&amp;quot;,&amp;quot;B&amp;quot;,&amp;quot;C&amp;quot;), 10), levels=c(&amp;quot;A&amp;quot;,&amp;quot;B&amp;quot;,&amp;quot;C&amp;quot;,&amp;quot;D&amp;quot;,&amp;quot;E&amp;quot;))&lt;br /&gt;
 &amp;gt; is.na(d) &amp;lt;- 3:4&lt;br /&gt;
 &amp;gt; table(factor(d, exclude = NULL))&lt;br /&gt;
    A B C &amp;lt;NA&amp;gt;&lt;br /&gt;
    9 10 9 2&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание= [[Изображение:LXF110_91_1.jpg|Рис. 3|300px]]Рис. 3. Графическое представление таблицы cопряжённости.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Функция '''mosaicplot''' (рис. 3) позволяет получить графическое изображение таблицы сопряжённости (именно она вызывается, когда вы передаете таблицу сопряжённости стандартной функции '''plot'''):&lt;br /&gt;
&lt;br /&gt;
  &amp;gt; mosaicplot(Titanic,main=&amp;quot;Survival on the Titanic&amp;quot;,color=TRUE)&lt;br /&gt;
&lt;br /&gt;
При помощи функции '''chisq.test''' можно проверить гипотезу о&lt;br /&gt;
независимости двух факторов (того же эффекта можно добиться,&lt;br /&gt;
если передать таблицу сопряжённости в качестве аргумента функции '''summary'''). Например, проверим гипотезу о независимости цвета&lt;br /&gt;
глаз и волос:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt; x &amp;lt;- margin.table(HairEyeColor, c(1, 2))&lt;br /&gt;
  &amp;gt; chisq.test(x)&lt;br /&gt;
             Pearson's Chi-squared test&lt;br /&gt;
  data: x&lt;br /&gt;
  X-squared = 138.2898, df = 9, p-value &amp;lt; 2.2e-16&lt;br /&gt;
&lt;br /&gt;
Набор данных '''HairEyeColor''' – это многомерная таблица сопряжённости. Здесь для суммирования частот по всем, кроме двух, «измерений» использовалась функция '''margin.table'''. Таким образом в результате&lt;br /&gt;
была получена двумерная таблица сопряжённости.&lt;br /&gt;
&lt;br /&gt;
При желании изобразить зависимости между градациями двух факторов графически можно воспользоваться функцией '''assocplot'''. На рис. 4 показаны отклонения ожидаемых (при предположении независимости факторов) частот от наблюдаемых величин. Высота прямоугольника показывает абсолютную величину этого отклонения, а положение – его знак. Ширина прямоугольника отображает собственно саму ожидаемую величину значения в ячейке, но она не так информативна для предварительного анализа.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; x &amp;lt;- margin.table(HairEyeColor, c(1, 2))&lt;br /&gt;
 &amp;gt; assocplot(x, main = &amp;quot;Relation between hair and eye color&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание= [[Изображение:LXF110_91_2.jpg|Рис. 4|300px]]Рис. 4. Сравнение цвета глаз и волос с помощью функции '''assocplot'''.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Нетрудно видеть, что для людей со светлыми волосами характерен&lt;br /&gt;
голубой цвет глаз и совсем не характерен карий, а для обладателей&lt;br /&gt;
чёрных волос ситуация в точности обратная.&lt;br /&gt;
&lt;br /&gt;
Поиск зависимостей между различными наборами данных – любимое занятие человека разумного. Обнаружение новой, ранее неизвестной, зависимости – одно из самых больших интеллектуальных удовольствий. Вдвойне приятно, если эта зависимость получается&lt;br /&gt;
линейной. '''LXF'''&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>