Монте-Карло Симуляция / Самозагрузка в R для нескольких переменных (с нулевыми данными) - PullRequest
0 голосов
/ 24 апреля 2020

Справочная информация : я пробовал различные парки (местоположения A, B, C, et c.) И занял ок. 10 фотографий (по 1м x 1м участков) в каждом парке. Если на фотографии был мусор, я записывал длину (см), ширину (см) и цвет каждого куска.

Проблема : размеры выборки неравномерны (в некоторых парках по 10 фотографии, у других 7, и т. д. c.), поэтому я хочу провести симуляцию Монте-Карло (или начальную загрузку), где 5 фотографий с каждого сайта выбираются случайным образом, чтобы генерировать изменения в мусоре в каждом парке (чтобы уменьшить влияние разных образцов размеры). Я хочу повторить это 1000 раз. Моя цель - получить среднее и стандартное отклонение количества мусора в парках (штук на м ^ 2). Важно отметить, что данные сильно завышены нулями, поэтому мне нужно включить это тоже.

Вот подмножество моих данных:

table <- "Location ID Piece.garbage Length Width    Colour
12    A    138     0    0.0   0.0            <NA>
13    A    140     0    0.0   0.0            <NA>
14    A    141     1    7.3   3.1           Other
15    A    142     0    0.0   0.0            <NA>
16    A    143     0    0.0   0.0            <NA>
17    A    144     0    0.0   0.0            <NA>
18    A    146     1    2.3   1.5           Other
19    A    147     0    0.0   0.0            <NA>
20    A    148     1    2.8   2.0            Blue
21    B    157     0    0.0   0.0            <NA>
22    B    158     0    0.0   0.0            <NA>
23    B    159     0    0.0   0.0            <NA>
24    B    160     0    0.0   0.0            <NA>
25    B    161     0    0.0   0.0            <NA>
26    B    162     1    3.6   1.0           White 
27    B    162     2    3.3   3.3             Red
28    B    162     3    5.3   1.3           White 
29    B    162     4    4.5   1.3           White 
30    B    162     5    4.3   1.3           White 
31    B    163     0    0.0   0.0            <NA>
32    B    164     0    0.0   0.0            <NA>
33    B    165     0    0.0   0.0            <NA>
34    B    166     0    0.0   0.0            <NA>
35    C    318     0    0.0   0.0            <NA>
36    C    319     0    0.0   0.0            <NA>
37    C    320     0    0.0   0.0            <NA>
38    C    321     0    0.0   0.0            <NA>
39    C    323     1    7.1   3.8            Pink
40    C    324     0    0.0   0.0            <NA>
41    C    325     0    0.0   0.0            <NA>
42    C    326     1    3.0   1.3           White 
43    C    327     0    0.0   0.0            <NA>
44    C    328     0    0.0   0.0            <NA>"

#Create dataframe
dat <- read.table(text=table, header = TRUE)
dat

Что я пробовал : Мне удалось взять подмножество из пяти выборок из данных и выполнить их 1000 раз:

dat_sub <- dat %>% sample_n(size = 5, replace = TRUE)


dat_sample <- map_dfr(1:1000, ~dat %>%
                         sample_n(size = 5, replace = TRUE) %>%
                         mutate(Time = .x))

Но я не могу сделать это для каждого местоположения в отдельности. Единственное решение, о котором я мог подумать, - это фильтрация данных для каждого местоположения, но у меня есть более 50 местоположений, так что это займет слишком много времени.

Я относительно новичок в R (и в симуляциях Монте-Карло), поэтому любая помощь будет принята с благодарностью.

...