Рассчитайте дисперсию всех сэмплов в r studio

У меня есть 30 случайных выборок, взятых из набора данных. Мне нужно вычислить среднее значение выборки и дисперсию выборки для каждой выборки и расположить их в таблице с 3 столбцами, озаглавленными «выборка», «среднее значение» и «дисперсия».

Мой набор данных:

lab6data <- c(2,5,4,6,7,8,4,5,9,7,3,4,7,12,4,10,9,7,8,11,8,
              6,13,9,6,7,4,5,2,3,10,13,4,12,9,6,7,3,4,2)

Я сделал такие образцы, как:

observations <- matrix(lab6data, 30, 5)

и средства для каждого образца в отдельности:

means <- rowMeans(observations)

Не могли бы вы помочь мне найти дисперсию для каждой выборки отдельно?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
1 183
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете рассчитать дисперсию для каждой строки с помощью apply:

apply(observations, 1, var)

Или используйте rowVars из пакета matrixStats.

Обратите внимание, что matrixStats::rowVars будет на немногомного быстрее (см. Комментарий @ HenrikB ниже), чем apply(..., 1, var), точно так же, как rowMeans быстрее, чем apply(..., 1, mean).

Большое спасибо за ваш быстрый ответ. Есть ли способ получить дисперсию сразу всех выборок и добавить их в таблицу

Sadie Kelsey 01.05.2018 13:15

@SadieKelsey «Есть ли способ получить дисперсию сразу всех выборок и добавить их в таблицу» Я не уверен, что понимаю. apply(observations, 1, var) вернет вектор той же длины, что и nrow(observations). Вы можете сохранить этот вектор как новый столбец (например, observations$rowVar = apply(observations, 1, var)), но, на мой взгляд, лучше хранить данные и сводную статистику в отдельных объектах / таблицах.

Maurits Evers 01.05.2018 13:21

Я пробовал использовать Variance <- rowVars (наблюдения), но он говорит Ошибка в rowVars (наблюдения): не удалось найти функцию "rowVars"

Sadie Kelsey 01.05.2018 13:22

@SadieKelsey Сначала вам нужно установить пакет matrixStats; например сделать install.packages("matrixStats").

Maurits Evers 01.05.2018 13:23

Я установил, как вы сказали. Он был успешно установлен, но все же говорит, что у них нет функции rowVars. в раскрывающемся списке, который появляется, когда я печатаю, также не имея rowVars в качестве предложения.

Sadie Kelsey 01.05.2018 13:29

Вы нагрузка библиотеку? library(matrixStats)?

Maurits Evers 01.05.2018 13:29

Сработало после загрузки библиотеки .. также сработало и по-другому. спасибо за большую помощь.

Sadie Kelsey 01.05.2018 18:25

Добро пожаловать, @SadieKelsey; Пожалуйста, подумайте о том, чтобы закрыть вопрос, установив галочку рядом с ответом.

Maurits Evers 01.05.2018 23:04

«Я предполагаю, что matrixStats :: rowVars будет немного быстрее, чем apply (..., 1, var)»: на самом деле много быстрее, ср. github.com/HenrikBengtsson/matrixStats/wiki/colRowVars. То же самое для rowMeans(), .rowMeans(), matrixStats::rowMeans2(), см. github.com/HenrikBengtsson/matrixStats/wiki/colRowMeans2

HenrikB 02.05.2018 08:07

Большое спасибо @HenrikB, я внес правку в свой пост, чтобы уточнить!

Maurits Evers 02.05.2018 08:27

Мы можем использовать pmap, чтобы применить функцию к каждой строке data.frame.

library(purrr)
varS <- pmap_dbl(as.data.frame(observations), ~ var(c(...)))
cbind(observations, varS)

данные

observations <- matrix(lab6data, 10, 4)

Я тоже попробую поработать над этим, спасибо за помощь. Это было очень полезно.

Sadie Kelsey 01.05.2018 18:28

Другие вопросы по теме