#r
#r
Вопрос:
Я пытаюсь создать функцию для вычисления различий между точками в векторе. В конечном счете, я хочу применить к функции кумулятивной плотности (pnorm), чтобы найти вероятность того, что данная точка (i) отличается от другой точки (j), а затем суммировать вероятность для всех наблюдений, где i не равно j. В частности:
Sum(i != j):
pnorm {
(a(i) - a(j)) /(b(i) b(j))
}
Я хотел бы реализовать эту формулу для каждого наблюдения в моем наборе данных, чтобы с каждым наблюдением была связана суммированная вероятность. Используя следующий простой пример:
a = 1, 2, 3, 4, 5
b = 6, 7, 8, 9, 10
dat <- cbind(a,b)
pnorm{
(1 - 2)/(6 7)}
И затем повторите для j равно элементу 2[2,7] до j равно элементу 5[5,10]. Это дало бы результат для i = 1, который я затем повторил бы для i = 2: 5.
Спасибо!
Комментарии:
1. вы ищете
unlist(combn(length(a),2, function(x)setNames(pnorm(-diff(a[x])/sum(b[x])),toString(a[x])),simplify = F))
2. Я так не думаю. Эта формула выводит для меня 10 значений, тогда как в результате idea должно быть 5. Не самая элегантная, но я думаю, что эта формула, похоже, делает то, что я хотел. Определенно хотелось бы услышать другие предложения:
sum <- list() for (i in seq_along(a)) { sum[[i]] <- sum(pnorm((a[i] - a[-i])*(b[i] b[-i])^-1))
3. она выдает 10 значений, потому что у вас есть 1-2, 1-3, 1-4, 1-5, 2-3, 2-4, 2-5, 3-4, 3-5, 4-5 которые являются 10 значениями
4. Извините — я не думаю, что я был ясен. Это не те сравнения, которые я хочу провести. Я хочу сравнить: 1-2, 1-3, 1-4, 1-5 2-1, 2-3, 2-4, 2-5 3-1, 3-2, 3-4, 3-5 Это потому, что сравнения проводятся для каждого наблюдения