R语言与属性数据分析

1. 属性数据的描述性分析

1)属性数据形式的转化
* 将数据框中的分类数据(统计好的)转换成频数表
	# input data
	Reason<-c("操作","设备","工具","工艺","材料")
	Count<-c(22,526,292,89,47)
	data0<-data.frame(Reason,Count);data0
	# change to the table
	ftable<-table(rep(Reason,Count));data1
	names(Count)<-Reason;Count

* 将数据框中的分类数据(未统计好的)转换成频数表
	ftable<-table(data$classvar);ftable

* 频数表转换成频率表
	ftable/sum(ftable)
	prop.table(ftable)

* 列联表和概率列联表
	ctable<-table(data);ctable
	prop.table(ctable)

* 将频率表转化为数据集
	Indicator<-c(1:5) // c('A','B','C')
	data<-rep(Indicator,ftable);data
2)属性数据的描述性统计图
	barplot(Count,main='条形图')
	pie(Count,radius = 1,main='饼图')
	library(qcc)
	pareto.chart(Count, ylab = "频数",ylab2 = "累计百分比(%)",main='帕累托图')
3)属性数据的基本统计量
* 描述中心位置的统计量
	median()
	quantile( , probs = c(0.25,0.75))
	getmode()
	# the mode function
	getmode<-function(x){
   
	  tab<-table(x)
	  tab.max<-max(tab)
	  if (all(tab == tab.max)) {
   mod<-NA}
	  else if(is.numeric(x)) {
   mod<-as.numeric(names(tab)[tab == tab.max])}
	  else {
   mod<-names(tab)[tab == tab.max]}
	  names(mod)<-'mode'
	  return(mod)
	}

* 描述离散程度的统计量(离异比率、GS指数、熵)
	var.ratio<-function(x){
   
	  tab<-table(x)
	  mod<-getmode(x)
	  ratio=1-tab[names(tab)==mod]/sum(tab)
	  names(ratio)<-'variation ratio'
	  return(ratio)
	}
	GS.index<-function(x){
   
	  tab<-table(x)
	  p<-prop.table(tab)
	  index<-1-sum(p^2)
	  names(index)<-'GS index'
	  return(index)
	}
	entropy<-function(x){
   
	  #x is the raw data
	  tab<-table(x)
	  p<-prop.table(tab)
	  entropy<- (-1)*sum(p*log(p))
	  names(entropy)<-'entropy'
	  return(entropy)
	}

2. 单一属性分类数据

1)分类数据的概率检验
* 不含参数的Chi2检验
	chisq.test(table, correct = TURE/FALSE, p = p0, rescale.p = TRUE/FALSE)
* 不含参数的LRT检验
	library(RVAideMemoire)
	G.test(table,p=p0)
# 等概率检验时,p0 = rep(1/length(x2), length(x2))
---------------------------------------------------------------

* 参数的极大似然估计(MLE) (用数值方法解)
* 含一个参数
	fn_likelihood<-function(p){
   
	  ... #log-likelihood function
	}
	result<-optimize(f=fn_likelihood, interval=c(0,1), maximum = TRUE);result
	# optimize函数得到maximum和objective两个值
	p_hat<-result$maximum  # the MLE for p
	p<-c(...)
	
* 含多个参数
	fn_likelihood<-function(x){
   
	  p<-x[1]
	  q<-x[2]
	  ... #log-likelihood function
	}
	result<-optim(par = c(0.1,0.1),fn_likelihood,control = list(fnscale = -1));result
	p_hat<-result$par[1]  # the MLE for p
	q_hat<-result$par[2]  # the MLE for q
---------------------------------------------------------------

* 含参数的Chi2检验
	Chistat<-chisq.test(x, correct = FALSE, p = p, rescale.p = FALSE)$statistic
* 含参数的LRT检验
	LRTstat<-G.test(x,p = p)$statistic
---------------------------------------------------------------

* 统计决策
	# critical value
	qchisq(p=0.95, df=r-m-1,lower.tail = TRUE)
	# p value
	pchisq(Chistat,df=r-m-1,lower.tail = FALSE)
	pchisq(LRTstat,df=r-m-1,lower.tail = FALSE)

3. 四格表

1)四格表的独立性检验
* U检验(单边)
	U.stat=sqrt(n)*(n11*n22-n12*n21)/sqrt(n1_*n2_*n_1*n_2) #未修正
	U.stat=sqrt(n)*(n11*n22-n12*n21 ± n/2)/sqrt(n1_*n2_*n_1*n_2) #修正
	pvalue=pnorm(U.stat, mean = 0, sd = 1, lower.tail = FALSE)
* Chi2检验(双边)
	Chi.stat=n*(n11*n22-n12*n21)^2/(n1_*n2_*n_1*n_2) #未修正
	Chi.stat=n*(abs(n11*n22-n12*n21)-n/2)^2<
  • 10
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 R 语言属性数据分析实操: 假设你有一个名为“mtcars”的数据集,包含了32辆汽车的11个属性(包括排量、马力、加速度等)和它们的燃油效率。你想通过这些属性信息,分析一下哪些属性与燃油效率有关系。 1. 导入数据 首先,你需要将数据导入到 R 中。你可以使用以下命令将 mtcars 数据集导入: ```R data(mtcars) ``` 2. 数据清洗 mtcars 数据集一般不需要清洗。 3. 数据统计分析 接下来,你可以使用 R 中的各种统计函数对数据进行分析。比如,你可以使用以下命令计算每个属性和燃油效率之间的相关系数: ```R cor(mtcars) ``` 上述命令中,`cor(mtcars)` 表示计算 mtcars 数据集中每个属性与燃油效率之间的相关系数。相关系数可以反映两个变量之间的线性相关程度,其取值范围为 -1 到 1,越接近 1 表示两个变量之间线性相关性越强。 4. 数据可视化 最后,你可以使用 R 中的各种可视化函数,将数据可视化展示出来。比如,你可以使用以下命令绘制出每个属性与燃油效率之间的散点图: ```R library(ggplot2) ggplot(mtcars, aes(x=mpg, y=disp)) + geom_point() ``` 上述命令中,`ggplot(mtcars, aes(x=mpg, y=disp))` 表示将 mtcars 数据集中的燃油效率作为 x 轴,排量作为 y 轴。`geom_point()` 表示绘制散点图。通过上述散点图,你可以直观地看出排量与燃油效率之间的负相关关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值