2017-08-08 11 views
2

私はこのようになりますデータがあります。カイ二乗検定

ID gamesAlone gamesWithOthers gamesRemotely tvAlone tvWithOthers tvRemotely 
1 1             1 
2        1      1 
3        1    1 
4        1    1 
5        1      1 
6        1    1 
7        1    1 
8    1          1 
9 1                 1 

私は、次の二つのことを行うことができますコードたい:

まず、この変換をこのようなきちんとしたコンティンジェンシー・テーブル:

 Alone WithOthers Remotely 
games 2  1   6 
tv  4  4   1 

第二には、これらの活動は、(ゲームはテレビをV)社会的文脈が異なるかどうかを確認するためにカイ二乗使用しています。

これは、データフレームを生成するためのコードです:

data<-data.frame(ID=c(1,2,3,4,5,6,7,8,9), 
      gamesAlone=c(1,NA,NA,NA,NA,NA,NA,NA,1), 
      gamesWithOthers=c(NA,NA,NA,NA,NA,NA,NA,1,NA), 
      gamesRemotely=c(NA,1,1,1,1,1,1,NA,NA), 
      tvAlone=c(NA,NA,1,1,NA,1,1,NA,NA), 
      tvWithOthers=c(1,1,NA,NA,1,NA,NA,1,NA), 
      tvRemotely=c(NA,NA,NA,NA,NA,NA,NA,NA,1)) 

答えて

2

省略最初の列ID[-1])(colSums)ながら、 NAの値(na.rm=TRUE)を削除し、結果の長さ6のベクトルを2行の行列に入れます。必要に応じて、マトリックス寸法に応じてラベルを付けることもできます(dimnames引数)。

m <- matrix(
    colSums(data[-1], na.rm=T), 
    nrow=2, byrow=T, 
    dimnames = list(c("games", "tv"), c("alone", "withOthers", "remotely")) 
) 
m 
#  alone withOthers remotely 
# games  2   1  6 
# tv  4   4  1 
chisq.test(m) 
# 
# Pearson's Chi-squared test 
# 
# data: m 
# X-squared = 6.0381, df = 2, p-value = 0.04885 
0

これは、あなたが与えた形で分割表にあなたを取得します。提案:混乱を避けるため、dataの代わりにデータフレームdata1を呼び出してください。

library(dplyr) 
library(tidyr) 
data1_table <- data1 %>% 
    gather(key, value, -ID) %>% 
    mutate(activity = ifelse(grepl("^tv", key), substring(key, 1, 2), substring(key, 1, 5)), 
     context = ifelse(grepl("^tv", key), substring(key, 3), substring(key, 6))) %>% 
    group_by(activity, context) %>% 
    summarise(n = sum(value, na.rm = TRUE)) %>% 
    ungroup() %>% 
    spread(context, n) 

# A tibble: 2 x 4 
    activity Alone Remotely WithOthers 
* <chr> <dbl> <dbl>  <dbl> 
1 games  2  6   1 
2  tv  4  1   4 

カイ二乗:それはあなたが比較したいと私はあなたの実際のデータは、より高いカウントを持っていることを前提となるかによって決まります。あなたはこのようなchisq.testにパイプ全体の多くをできたが、私はそれは非常に有益だとは思わない:、その後、各列の合計を取る

data1_table %>% 
    select(2:4) %>% 
    chisq.test() 
関連する問題