Я хотел бы попробовать большой набор данных, основанный на распределении меньшего набора данных в R. Я искал решение в течение некоторого времени без успеха. Я относительно новичок в R, поэтому прошу прощения, если это просто. Тем не менее, я пробовал несколько solutions.Как пробовать данные, основанные на распределении другого набора данных в R
Вот несколько примеров данных. Я буду называть это наблюдается и модель:
# Set seed
set.seed(2)
# Create smaller observed data
Obs <- rnorm(1000, 5, 2.5)
# Create larger modeled data
set.seed(2)
Model <- rnorm(10000, 8, 1.5)
Распределение двух наборов данных заключаются в следующем:
Цель: Я хотел бы попробовать большой «модель» набор данные, чтобы соответствовать тем меньше " наблюдаемый". Я понимаю, что есть разные точки данных, поэтому это не будет прямым совпадением.
Я читал вверх на density()
и sample()
где я следующее:
# Obtain the density of the observed at the length of the model.
# Note: info on the sample() function stated the prob argument in the sample() function
# must be the same length as what's being sampled. Thus, n=length(Model) below.
dens.obs <- density(Obs, n=length(Model))
# Sample the Model data the length(Obs) at the probability of density of the observed
set.seed(22)
SampleMod <- sample(Model, length(Obs), replace=FALSE, prob=dens.obs$y)
Это дает мне новый сюжет, который очень похож на старый (за хвостами исключением):
Я надеялся на лучшее совпадение. Поэтому я начал изучать, используя функцию плотности на данных модели. Смотрите ниже:
# Density function on model, length of model
dens.mod <- density(Model, n=length(Model))
# Sample the density of the model $x at the density of the observed $ y
set.seed(22)
SampleMod3 <- sample(dens.mod$x, length(Obs), replace=FALSE, prob=dens.obs$y)
Вот два участка, первый же, как и первый образец, и второе является второй выборки:
Существует более желательны сдвиг в правильном участке, который представляет собой выборочную плотность моделируемого по плотности наблюдаемого. Однако данные не совпадают. То есть, я НЕ пробовал моделированные данные. Смотрите ниже:
summary(SampleMod3 %in% Model)
производит:
Mode FALSE NA's
logical 1000 0
Указав, что я не образец смоделированные данные, а плотность смоделированных данных. Можно ли пробовать набор данных на основе распределения другого набора данных? Заранее спасибо.
EDIT:
Спасибо за помощь, ребята! Вот мой сюжет с использованием функции approxfun()
, предлагаемой от danielson и поддерживаемой bethanyp.
Любая помощь с пониманием, почему фанки новое распределение?
Похоже, мы писали один и тот же ответ двумя разными способами одновременно. Я пошел на объяснение, вы пошли для того, чтобы использовать ... отличный звонок! Всегда хорошо знать, что я на правильном пути! – sconfluentus
Спасибо вам обоим. Я использовал описанное выше «практическое» решение и получил распространение в отредактированном разделе моего вопроса (см. Выше). Любая помощь для понимания фанк нового дистрибутива? – Phil