目的
數(shù)據(jù)框包含了一些分類變量,問?文章來源:http://www.zghlxwxcb.cn/news/detail-805009.html
1.如何統(tǒng)計分類變量的分布次數(shù) -- 頻數(shù)表
2.如何統(tǒng)計多分類變量的分布次數(shù) -- 頻聯(lián)表
3.單個分類變量的分類結(jié)果是否滿足理論分類結(jié)果 -- 擬合優(yōu)度問題
4.多個分類變量的分類結(jié)果是否相關(guān)干擾 -- 分類變量(多因素)獨立性檢驗
數(shù)據(jù)
library(vcd)
data(Arthritis)
head(Arthritis)
# ID Treatment Sex Age Improved
#1 57 Treated Male 27 Some
#2 46 Treated Male 29 None
#3 77 Treated Male 30 None
#4 17 Treated Male 32 Marked
#5 36 Treated Male 46 Marked
#6 23 Treated Male 58 Marked
# 頻數(shù)表
table(Arthritis$Treatment)
# Placebo Treated
43 41
# 頻聯(lián)表
table(Arthritis$Treatment,Arthritis$Improved)
# None Some Marked
# Placebo 29 7 7
# Treated 13 7 21
代碼
- 操作頻數(shù)表
# 把頻數(shù)表變成百分比占比
prop.table(table(Arthritis$Treatment))
# Placebo Treated
# 0.5119 0.4881
prop.table(table(Arthritis$Treatment)) *100
# Placebo Treated
# 51.19 48.81
# 把列聯(lián)表變成百分比形式
prop.table(table(Arthritis$Treatment,Arthritis$Improved))
# None Some Marked
# Placebo 0.345238 0.083333 0.08333
# Treated 0.154762 0.083333 0.250000
# 按行求百分比
prop.table(table(Arthritis$Treatment,Arthritis$Improved),1)
# None Some Marked
# Placebo 0.67442 0.16279 0.16279
# Treated 0.31707 0.17073 0.51220
# 按列求百分比
prop.table(table(Arthritis$Treatment,Arthritis$Improved),2)
# None Some Marked
# Placebo 0.69048 0.50000 0.25000
# Treated 0.30952 0.50000 0.75000
# 給列聯(lián)表添加行列計數(shù)
addmargins(table(Arthritis$Treatment,Arthritis$Improved))
# None Some Marked Sum
# Placebo 29 7 7 43
# Treated 13 7 21 41
# Sum 42 14 28 84
addmargins(table(Arthritis$Treatment,Arthritis$Improved),1)
# None Some Marked
# Placebo 29 7 7
# Treated 13 7 21
# Sum 42 14 28
addmargins(table(Arthritis$Treatment,Arthritis$Improved),2)
# None Some Marked Sum
# Placebo 29 7 7 43
# Treated 13 7 21 41
prop.table(addmargins(table(Arthritis$Treatment,Arthritis$Improved)))
# None Some Marked Sum
# Placebo 0.086310 0.020833 0.020833 0.127976
# Treated 0.038690 0.020833 0.062500 0.122024
# Sum 0.125000 0.041667 0.083333 0.250000
# 單個分類變量的分類結(jié)果是否滿足理論分類結(jié)果
table(Arthritis$Improved)
# None Some Marked
# 42 14 28
x <- Arthritis$Improved
# 模擬一個理論分布
y <- c(rep("None",30),rep("Some",30),rep("Marked",24))
# 卡方檢驗
chisq.test(x,y)
# Pearson's Chi-squared test
# data: x and y
# X-squared = 6.78, df = 4, p-value = 0.15
# 原假設(shè) H0: 實際頻次分布和理論頻次分布不相似
# 因為 p >= 0.05,接受原假設(shè),也就是數(shù)據(jù)中的頻次分布和理論上的分布(y)不相似
#模擬一個 和實際分布很相似的數(shù)據(jù)
y <- c(rep("None",39),rep("Some",16),rep("Marked",29))
chisq.test(x,y)
# Pearson's Chi-squared test
# data: x and y
# X-squared = 16.8, df = 4, p-value = 0.0021
# 此時p <= 0.05,需要拒絕原假設(shè)接受備擇假設(shè),也就是實際頻次分布和理論頻次分布相似
# 多個分類變量的分類結(jié)果是否相關(guān)干擾 -- 分類變量(多因素)獨立性檢驗
table(Arthritis$Treatment,Arthritis$Improved)
# None Some Marked
# Placebo 29 7 7
# Treated 13 7 21
#問 treatment 方式對improved的頻次分布有影響嘛?或者說兩個分類變量獨立嗎?
# 卡方檢驗,直接把頻聯(lián)表丟給chisq.test( )函數(shù)即可 <==== 參數(shù)檢驗
mytable <- table(Arthritis$Treatment,Arthritis$Improved)
chisq.test(mytable)
# Pearson's Chi-squared test
# data: mytable
# X-squared = 13.1, df = 2, p-value = 0.0015
# p <= 0.05 拒絕原假設(shè):相互獨立,也就是treatment 方式對improved的頻次分布有影響
# Fisher's精確檢驗(Fisher's exact test) <=========非參數(shù)檢驗
fisher.test(mytable)
# Fisher's Exact Test for Count Data
# data: mytable
# p-value = 0.0014
# alternative hypothesis: two.sided
# p <= 0.05 拒絕原假設(shè):相互獨立,也就是treatment 方式對improved的頻次分布有影響
# 上面看到兩個分類變量是相互影響的
# 問:如何度量它們之間的相關(guān)性強(qiáng)度呢?
library(vcd)
mytable <- table(Arthritis$Treatment,Arthritis$Improved)
assocstats(mytable)
# X^2 df P(> X^2)
# Likelihood Ratio 13.530 2 0.0011536
# Pearson 13.055 2 0.0014626
# Phi-Coefficient : NA
# Contingency Coeff.: 0.367
# Cramer's V : 0.394
vcd?中的assocstats()函數(shù)可以計算二維列聯(lián)表的phi系數(shù),列聯(lián)系數(shù),Cramer‘s V系數(shù)
總體來說,較大的數(shù)值意味著較強(qiáng)的相關(guān)性文章來源地址http://www.zghlxwxcb.cn/news/detail-805009.html
到了這里,關(guān)于頻數(shù)表和列聯(lián)表,以及進(jìn)一步處理分析 -- R的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!