chisquare test в r, который хранит названия строк - PullRequest
2 голосов
/ 19 февраля 2020

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

library(tidyverse)
sample_data <- tibble(demographics = c("White / Female", "Non-White / Female", "White / Male", "Non-White / Male", "White / Transgender", "Non-White / Transgender"),
                      wave_1 = c(40, 38, 60, 56, 0, 2),
                      wave_2 = c(38, 39, 62, 58, 1, 0))

Если я запускаю chisq.test () для sample_data, я получаю ошибку:

library(stats)
chisq.test(sample_data)

Error in chisq.test(sample_data) : 
  all entries of 'x' must be nonnegative and finite

Но я не получаю ошибка, если я просто использую два столбца подсчета:

sample_data_count <- sample_data %>%
  dplyr::select(wave_1, wave_2)
chisq.test(sample_data_count)

    Pearson's Chi-squared test

data:  sample_data_count
X-squared = 3.1221, df = 5, p-value = 0.6812

Warning message:
In chisq.test(sample_data_count) :
  Chi-squared approximation may be incorrect

Я понимаю, что R не нравится, что у меня есть мои демографические данные в sample_data, но трудно не , имея их в если я хочу посмотреть на наблюдаемые значения по различным демографическим показателям. Есть ли способ запустить тест chisquare с этими именами строк в?

Я видел пример использования в http://www.sthda.com/english/wiki/chi-square-test-of-independence-in-r с использованием этого набора данных (file_path <- "<a href="http://www.sthda.com/sthda/RDoc/data/housetasks.txt" rel="nofollow noreferrer">http://www.sthda.com/sthda/RDoc/data/housetasks.txt"), что выполняет тест хи-квадрат в r с именами строк, которые все еще в нем.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Потому что он также включает character столбец. Согласно ?chisq.test

x - числовой c вектор или матрица. x и y также могут быть факторами.

y - вектор чисел c; игнорируется, если x является матрицей. Если x является фактором, y должен быть фактором той же длины.

Если мы хотим передать numeric matrix, либо select число чисел c столбцов, либо преобразование «демография» для имен строк, преобразование в matrix и применение теста

library(dplyr)
library(tibble)
sample_data %>% 
   column_to_rownames('demographics') %>%
   as.matrix %>% 
   chisq.test
1 голос
/ 19 февраля 2020

Вы можете определить свою собственную функцию, которая запускает квадрат хи только для числовых c столбцов:

 my_chi <- function(df) chisq.test(as.matrix(df[, sapply(df, is.numeric)]))

Так что теперь вы можете сделать

my_chi(sample_data)
#> 
#>  Pearson's Chi-squared test
#> 
#> data:  as.matrix(df[, sapply(df, is.numeric)])
#> X-squared = 3.1221, df = 5, p-value = 0.6812
#> 
#> Warning message:
#> In chisq.test(as.matrix(df[, sapply(df, is.numeric)])) :
#>   Chi-squared approximation may be incorrect
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...