knnimpute

Припишите недостающие данные с помощью метода ближайшего соседа

Описание

пример

imputedData = knnimpute(data) возвращает imputedData после заменяющий NaNs во входе data с соответствующим значением из столбца ближайшего соседа. Если соответствующим значением из столбца ближайшего соседа является также NaN, следующий самый близкий столбец используется. Функция вычисляет Евклидово расстояние между столбцами наблюдения только при помощи строк без NaN значения. Таким образом данные должны иметь по крайней мере одну строку, которая не содержит NaN.

пример

imputedData = knnimpute(data,k) замены NaNs в Data со взвешенным средним k столбцы ближайшего соседа. Веса обратно пропорциональны расстояниям от соседних столбцов.

пример

imputedData = knnimpute(data,k,Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Например, imputedData = knnimpute(data,k,'Distance','mahalanobis') использует расстояние Mahalanobis, чтобы вычислить столбцы ближайшего соседа.

Примеры

свернуть все

Функциональный knnimpute замены NaNs во входных данных с соответствующим значением из столбца ближайшего соседа. Рассмотрите следующую матрицу.

A = [1 2 5;4 5 7;NaN -1 8;7 6 0]
A = 4×3

     1     2     5
     4     5     7
   NaN    -1     8
     7     6     0

(3,1) NaN, и потому что столбец 2 является самым близким столбцом к столбцу 1 в Евклидовом расстоянии, knnimpute заменяет (3,1) запись столбца 1 с соответствующей записью из столбца 2, который является-1.

results = knnimpute(A)
results = 4×3

     1     2     5
     4     5     7
    -1    -1     8
     7     6     0

Данные должны иметь по крайней мере одну строку без любых значений NaN для knnimpute работать. Если все строки имеют значения NaN, можно добавить строку, где каждое наблюдение (столбец) имеет идентичные значения, и вызовите knnimpute на обновленной матрице, чтобы заменить значения NaN на среднее значение всех значений столбцов для данной строки.

B = [NaN 2 1; 3 NaN 1; 1 8 NaN]
B = 3×3

   NaN     2     1
     3   NaN     1
     1     8   NaN

B(4,:) = ones(1,3)
B = 4×3

   NaN     2     1
     3   NaN     1
     1     8   NaN
     1     1     1

imputed = knnimpute(B)
imputed = 4×3

    1.5000    2.0000    1.0000
    3.0000    2.0000    1.0000
    1.0000    8.0000    4.5000
    1.0000    1.0000    1.0000

Можно затем удалить добавленную строку.

imputed(4,:) = []
imputed = 3×3

    1.5000    2.0000    1.0000
    3.0000    2.0000    1.0000
    1.0000    8.0000    4.5000

Загрузите демонстрационный биологический набор данных, и приписывает отсутствующие значения в yeastvalues, где каждая строка представляет каждый ген, и каждый столбец представляет экспериментальное условие или наблюдение.

load yeastdata

Удалите данные для пустых пятен, где генные метки установлены в 'EMPTY'.

emptySpots = strcmp('EMPTY',genes);
yeastvalues(emptySpots,:) = [];

knnimpute использует следующий самый близкий столбец, если соответствующим значением из столбца ближайшего соседа является также NaN. Однако, если всеми столбцами является NaNs, функция генерирует предупреждение для каждой строки и сохраняет строки вместо того, чтобы удалить целую строку в возвращенном выходном параметре. Выборочные данные содержат некоторые строки со всем NaNs. Удалите те строки, чтобы избежать предупреждений.

yeastvalues(~any(~isnan(yeastvalues),2),:) = [];

Припишите отсутствующие значения.

imputedData1 = knnimpute(yeastvalues);

Проверяйте если там любой NaN, покинутый после приписывания данных.

sum(any(isnan(imputedData1),2))
ans = 0

Используйте 5-самый близкий соседний поиск, чтобы получить самый близкий столбец.

imputedData2 = knnimpute(yeastvalues,5);

Измените метрику расстояния, чтобы использовать расстояние Минкновского.

imputedData3 = knnimpute(yeastvalues,5,'Distance','minkowski');

Можно также задать параметр для метрики расстояния. Например, задайте различную экспоненту (скажите 5) для расстояния Минкновского.

imputedData4 = knnimpute(yeastvalues,5,'Distance','minkowski','DistArgs',5);

Входные параметры

свернуть все

Входные данные в виде матрицы. Данные должны иметь по крайней мере одну строку, которая не содержит NaN потому что функция вычисляет Евклидово расстояние между столбцами наблюдения только при помощи строк без NaN значения.

Типы данных: double

Количество самых близких соседей в виде положительного целого числа.

Типы данных: double

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: imputedData = knnimpute(data,k,'Distance','mahalanobis')

Метрика расстояния в виде вектора символов, строки или указателя на функцию, как описано в следующей таблице.

Используйте 'DistArgs' пара "имя-значение" в соединении, чтобы задать параметры для функции расстояния. Например, чтобы задать различную экспоненту (говорят 5) для расстояния Минкновского, используйте: output = knnimpute(data,3,'Distance','minkowski','DistArgs',5).

ЗначениеОписание
'euclidean'

Евклидово расстояние (значение по умолчанию).

'squaredeuclidean'

Придал Евклидову расстоянию квадратную форму. (Эта возможность предоставляется для КПД только. Это не удовлетворяет треугольному неравенству.)

'seuclidean'

Стандартизированное Евклидово расстояние. Каждое координатное различие между наблюдениями масштабируется путем деления на соответствующий элемент стандартного отклонения, S = nanstdX. Используйте 'DistArgs' задавать другое значение для S.

'mahalanobis'

Расстояние Mahalanobis с помощью выборочной ковариации X, C = nancovX. Используйте 'DistArgs' задавать другое значение для C, где матричный C симметрично и положительный определенный.

'cityblock'

Расстояние городского квартала.

'minkowski'

Расстояние Минковскего. Экспонента по умолчанию равняется 2. Используйте DistParameter задавать различную экспоненту P, где P значение положительной скалярной величины экспоненты.

'chebychev'

Расстояние Чебычева (максимум координируют различие).

'cosine'

Один минус косинус включенного угла между точками (обработанный как векторы).

'correlation'

Один минус корреляция выборки между точками (обработанный как последовательности значений).

'hamming'

Расстояние Хемминга, которое является процентом координат, которые отличаются.

'jaccard'

Один минус коэффициент Jaccard, который является процентом ненулевых координат, которые отличаются.

'spearman'

Один минус порядковая корреляция демонстрационного Копьеносца между наблюдениями (обработанный как последовательности значений).

@distfun

Пользовательский указатель на функцию расстояния. Функция расстояния имеет форму

function D2 = distfun(ZI,ZJ)
% calculation of distance
...
где

  • ZI 1- n вектор, содержащий одно наблюдение.

  • ZJ m2- n матрица, содержащая несколько наблюдений. distfun должен принять матричный ZJ с произвольным числом наблюдений.

  • D2 m2- 1 вектор из расстояний и D2(k) расстояние между наблюдениями ZI и ZJ(k,:).

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

Смотрите pdist для получения дополнительной информации.

Пример: 'Distance','cosine'

Типы данных: char | string | function_handle

Метрические значения параметров расстояния в виде положительной скалярной величины или массива ячеек значений. Используйте 'DistArgs' вместе с 'Distance' задавать параметры для функции расстояния. Например, чтобы задать различную экспоненту (говорят 5) для расстояния Минкновского, используйте: output = knnimpute(data,3,'Distance','minkowski','DistArgs',5)

Пример: 'DistArgs',3

Типы данных: double | cell

Веса использовали в вычислении взвешенного среднего в виде числового вектора из длины k.

Пример: 'Weights',[0.3 0.5 0.2]

Типы данных: double

Отметьте, чтобы использовать медиану k самые близкие соседи вместо взвешенного среднего в виде true или false.

Пример: 'Median',true

Типы данных: логический

Выходные аргументы

свернуть все

Результаты после заменяющий NaNs от входа data с соответствующим значением из столбца ближайшего соседа, возвращенного как числовая матрица.

Ссылки

[1] Скорость, T. (2003). Статистический анализ микроданных массива экспрессии гена (Chapman & Hall/CRC).

[2] Hastie, T., Tibshirani, R., Шерлок, G., Эйсен, M., Браун, P. и Ботштайн, D. (1999). “Приписывая недостающие данные для массивов экспрессии гена”, Технический отчет, Деление Биостатистики, Стэнфордский университет.

[3] Troyanskaya, O., Кантор, M., Шерлок, G., Браун, P., Hastie, T., Tibshirani, R., Ботштайн, D. и Олтмен, R. (2001). Методы оценки отсутствующего значения для микромассивов ДНК. Биоинформатика 17 (6), 520–525.

Смотрите также

| | |

Представлено до R2006a