Программирование на R: получение наиболее вероятного значения путем выборки

У меня есть таблица, в которой есть столбец эластичности. Каждой записи я хочу присвоить новое значение эластичности. Это значение основано на выполнении выборки при условии равномерного распределения. Например, скажем, у меня есть 4 записи со значениями эластичности (1,2, 1,3, 1,4, 1,5). Итак, я беру выборку из этих 4 значений 50 раз, после чего у меня получается матрица 4X50. Как мне присвоить значение, которое больше всего подходит для записи?

num_vals_to_sample = sum(measurement_Elasticity); #Counts the no of records


Sampled_measurement_Elasticity = replicate(50, sample(measurement_Elasticity, num_vals_to_sample, replace = TRUE))

В приведенном выше коде мне нужен новый вектор Measurement_Elasticity, который имеет значение, которое появилось больше всего в процессе выборки.

Используя код Генри, я решил свою проблему следующим образом:

num_vals_to_sample = sum(measurement_Elasticity);


New_measurement_Elasticity = c()

#Elasticity Sampling

for (i in 1:num_vals_to_sample)
{

  Sampled_measurement_Elasticity <- table(sample(measurement_Elasticity), 100, replace=TRUE))

  Most_Likely_Elas =as.numeric(names(Sampled_measurement_Elasticity)[max(which(Sampled_measurement_Elasticity==max(Sampled_measurement_Elasticity)))])

  append(New_measurement_Elasticity, Most_Likely_Elas)
}

person Cyang    schedule 05.05.2014    source источник
comment
Ради интереса, какое приложение для этого? Кажется, это эквивалентно простому выбору одного числа наугад, если только выбранные значения не используются для чего-то еще, что требует от вас знания режима?   -  person ping    schedule 05.05.2014


Ответы (1)


Возможно, вы захотите рассмотреть это как возможность

> set.seed(5)
> examplecounts <- table(sample(c(1.2, 1.3, 1.4, 1.5), 50, replace=TRUE))
> examplecounts
1.2 1.3 1.4 1.5 
 13  13  11  13 
> names(examplecounts)[which(examplecounts == max(examplecounts))]
[1] "1.2" "1.3" "1.5"
> as.numeric(names(examplecounts)[min(which(examplecounts==max(examplecounts)))])
[1] 1.2

Обычно вы получите одно значение: попробуйте изменить начальное значение.

person Henry    schedule 05.05.2014
comment
Это может сработать. Однако мне интересно, какой подход следует использовать, когда вы получаете несколько значений. Какая самая популярная практика? Взяв среднее значение всех значений? Например, поскольку мне нужно ОДНО значение, которое выпало больше всего, но их несколько, я просто беру среднее из них? - person Cyang; 05.05.2014
comment
Это зависит от ваших потребностей, когда у вас есть несколько режимов. Среднее значение режимов вряд ли будет хорошим выбором, так как часто это не будет ни один из режимов. В моей последней строке примера выбран минимальный режим, но это произвольный вариант, а максимальный — простая альтернатива. - person Henry; 05.05.2014
comment
Ваш код показывает процесс создания одной записи. Как сгенерировать значения для «x» записей? - person Cyang; 05.05.2014
comment
Я не понимаю вопроса, но, возможно, зацикливание было бы ответом - person Henry; 05.05.2014
comment
Я имею в виду, что хочу, чтобы результатом был единый список значений эластичности. Если бы в моей таблице было 8 строк, мне нужен список из 8 значений эластичности. - person Cyang; 05.05.2014