exponenta event banner

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') использует расстояние Махаланобиса для вычисления ближайших соседних столбцов.

Примеры

свернуть все

Функция 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

A (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 = nanstd(X). Использовать 'DistArgs' чтобы указать другое значение для S.

'mahalanobis'

Расстояние Махаланобиса с использованием ковариации образца X, C = nancov(X). Использовать 'DistArgs' чтобы указать другое значение для C, где матрица C является симметричным и положительным определенным.

'cityblock'

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

'minkowski'

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

'chebychev'

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

'cosine'

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

'correlation'

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

'hamming'

Расстояние хэмминга, которое представляет собой процент различающихся координат.

'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

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

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

свернуть все

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

Ссылки

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

[2] Хасти, Т., Тибширани, Р., Шерлок, Г., Эйзен, М., Браун, П. и Ботштейн, Д. (1999). «Вменение недостающих данных для массивов экспрессии генов», Технический отчет, Отдел биостатистики, Стэнфордский университет.

[3] Троянская, О., Кантор, М., Шерлок, Г., Браун, П., Хасти, Т., Тибширани, Р., Ботштейн, Д., и Альтман, Р. (2001). Отсутствуют методы оценки стоимости для микрочипов ДНК. Биоинформатика 17 (6), 520-525.

См. также

| | |

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