r 中保留行名称的 chisquare 测试
chisquare test in r that keeps row names
我正在构建一个包含两波的员工调查,我想确保每一波在某些人口统计变量(例如种族和性别)方面是平衡的。这是一个虚构的数据样本:
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))
如果我在 sample_data 上 运行 chisq.test(),我得到一个错误:
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 中有我的人口统计数据,但是如果我想查看不同人口统计学的观察值。有没有办法 运行 包含这些行名称的卡方检验?
我在 http://www.sthda.com/english/wiki/chi-square-test-of-independence-in-r using this dataset (file_path <- "http://www.sthda.com/sthda/RDoc/data/housetasks.txt") 看到了一个例子, 在 r 中做了一个卡方检验,行名还在里面。
如有任何帮助,我们将不胜感激!
因为它还包含 character
列。根据?chisq.test
x - a numeric vector or matrix. x and y can also both be factors.
y - a numeric vector; ignored if x is a matrix. If x is a factor, y should be a factor of the same length.
如果我们要传递 numeric
matrix
,要么 select
数字列,要么将 'demographics' 转换为行名称,转换为 matrix
并应用测试
library(dplyr)
library(tibble)
sample_data %>%
column_to_rownames('demographics') %>%
as.matrix %>%
chisq.test
您可以定义自己的函数,仅在数字列上运行卡方:
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
我正在构建一个包含两波的员工调查,我想确保每一波在某些人口统计变量(例如种族和性别)方面是平衡的。这是一个虚构的数据样本:
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))
如果我在 sample_data 上 运行 chisq.test(),我得到一个错误:
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 中有我的人口统计数据,但是如果我想查看不同人口统计学的观察值。有没有办法 运行 包含这些行名称的卡方检验?
我在 http://www.sthda.com/english/wiki/chi-square-test-of-independence-in-r using this dataset (file_path <- "http://www.sthda.com/sthda/RDoc/data/housetasks.txt") 看到了一个例子, 在 r 中做了一个卡方检验,行名还在里面。
如有任何帮助,我们将不胜感激!
因为它还包含 character
列。根据?chisq.test
x - a numeric vector or matrix. x and y can also both be factors.
y - a numeric vector; ignored if x is a matrix. If x is a factor, y should be a factor of the same length.
如果我们要传递 numeric
matrix
,要么 select
数字列,要么将 'demographics' 转换为行名称,转换为 matrix
并应用测试
library(dplyr)
library(tibble)
sample_data %>%
column_to_rownames('demographics') %>%
as.matrix %>%
chisq.test
您可以定义自己的函数,仅在数字列上运行卡方:
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