Определите размер выборки, используя простую случайную выборку

Я пытаюсь запустить PCA, но у меня слишком много данных (20 тыс. наблюдений), разрешение слишком низкое. Я использую sample_n(df, replace = TRUE, n) [из dplyr] для уменьшения размера и лучшей подгонки.

Мой вопрос: как лучше всего определить (или оценить) размер выборки (n)? Если у меня есть 20 000 наблюдений (разные места, разное время года, относительно однородные), какое отсечение использовать: 5%, 10%, 20%?

Не могли бы вы дать мне ссылку на ваше предложение?

Заранее спасибо за ваши комментарии.


person Pablo    schedule 02.03.2021    source источник


Ответы (1)


Я бы сделал цикл с разными размерами выборки, я не верю, что есть четкое отсечение / отсечение, которое вы могли бы сделать с поездом / тестом (хотя у нас есть трубопроводы, но вы понимаете, что я имею в виду отсечение 70/30). Единственное, что я хотел бы проверить, это то, что sample_n все еще не слишком сгруппирован, а значения представлены относительно одинаково.

Если вы твердо придерживаетесь кластеризации k-средних, у нас есть метод локтя, который немного субъективен, где лучшее количество кластеров (хотя мы измеряем RSS), вам просто нужно попробовать много итераций и циклов.

Вы знаете, с нейронными сетями, когда у вас есть, например. миллион наблюдений вы можете уменьшить набор тестов, например. 5 или 10 %, потому что в абсолютных значениях у вас еще много случаев.

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

Я надеюсь, что мой ответ будет для вас хоть какой-то ценностью, у меня нет банкомата со ссылкой на журнал.

person Patrick Bormann    schedule 02.03.2021
comment
Спасибо, Патрик. Я понимаю, что нет адекватного метода для определения выборки. Вместо использования метода локтя я использую screeplot(). Циклы - хороший вариант. Но как сделать петлю? используя: b ‹- sample_n (a, replace = TRUE, 1000) и prcomp (na.опустить (b [, c (1:9)]), center = TRUE, масштаб. = TRUE) - person Pablo; 03.03.2021
comment
Когда вы спросили, как оценить размер выборки, я подумал о следующем: z ‹- c(1000, 2000, 4000) b ‹- dplyr::sample_n (a, replace = TRUE, z[1]), где z равно вашему пороговому критерию, а 1 для первой записи (однако я бы выбрал еще несколько шагов). Кроме того, вы можете выполнить цикл prcomp с помощью (b, center = TRUE .....). Затем я бы дал каждому prcomp отдельный вывод с помощью assign(paste0(prcomp_nr, i), prcomp(...)) где i — итератор из цикла. Не забудьте поместить b в цикл, чтобы итератор также мог перебирать z, например. sample_n (a, заменить = TRUE, z[i]) - person Patrick Bormann; 03.03.2021