当前位置: 首页 > news >正文

R_handbook_统计分析

一、分布检验

1 四种常用函数

  • dnorm: density norm,表示正太分布的概率密度(f),即单点取值的概率。如果生成序列点回复即得到正太线
  • pnorm:pribability,表示正态分布的累积分布,最终生成CDF线
  • qnorm:与pnorm相反,pnorm根据数值求累积分布(0-1),qnorm根据累积分布求数值
  • rnorm:生成一组正太随机数。

2 各种分布与检验

2.1 对数分布和检验

library(MASS) # 1.1 log-noraml distribution
## 拟合lognormal模型
lognormal_distr <- fitdistr(as.array(data[,1]),"lognormal")
## 依次输出模型的系数、方差、最大似然值
lognormal_distr$estimate  
lognormal_distr$sd
lognormal_distr$loglik
## 图形分布 + 拟合分布
par(pin=c(5,5))
h_lognormal <-hist(as.array(data[,1]),ylim = c(0,230), main = "Histogram of lognormal",xlab='data')   # 绘制源数据的直方图
xfit <-seq(min(data[,1]), max(data[,1]), by=(max(data[,1])-min(data[,1]))/1000)
yfit <-dlnorm(xfit, meanlog = lognormal_distr$estimate[1], sdlog = lognormal_distr$estimate[2])
yfit <- yfit*diff(h_lognormal$mids[1:2])*length(xfit)
lines(xfit, yfit, col="blue", lwd=2)# K-S test
## 没有直接检验对数正态分布的函数,需要转化后用对数分布检验
lognormal <- c(data[,1])
lognormal_to_normal <- log(lognormal)
## 进行K-S test 并输出结果
lognormal_ks_test <- ks.test(lognormal_to_normal, "pnorm")
lognormal_ks_test# A-D test
library(fBasics)
lognormal_ad_test <- adTest(lognormal_to_normal)
lognormal_ad_test
# Q-Q图
## 自己实现QQ图
t <- (rank(lognormal_to_normal) -0.5)/length(lognormal_to_normal)
q <- qnorm(t)
plot(q, lognormal_to_normal,main = "Lognormal Q-Q plot",xlab = "Theoretical Quantiles",ylab = "Sample Quantiles")
abline(mean(lognormal_to_normal), sd(lognormal_to_normal), col=2, lwd=3)

2.2 gamma分布

# 1.2 gamma distribution
## 拟合gamma模型
gamma_distr <- fitdistr(as.array(data[,1]),"gamma")
## 依次输出模型的系数、方差、最大似然值
gamma_distr$estimate  
gamma_distr$sd
gamma_distr$loglik
## 图形分布 + 拟合分布
par(pin=c(5,5))
h_gamma <-hist(as.array(data[,1]),ylim = c(0,230),main = "Histogram of Gamma",xlab='data')   # 绘制源数据的直方图
xfit <-seq(min(data[,1]), max(data[,1]), by=(max(data[,1])-min(data[,1]))/1000)
yfit <-dgamma(xfit, shape = gamma_distr$estimate[1], rate = gamma_distr$estimate[2])
yfit <- yfit*diff(h_gamma$mids[1:2])*length(xfit)
lines(xfit, yfit, col="blue", lwd=2)# K-S test
## 没有直接检验对数正态分布的函数,需要转化后用对数分布检验
gamma_ks_test <- ks.test(as.array(data[,1]), "gamma")
gamma_ks_test
## 进行K-S test 并输出结果
gamma_ad_test <- adTest(as.array(data[,1]), "pnorm")
gamma_ad_test# Q-Q图 只能使用自己的QQ图画法
## 自己实现QQ图
gamma_data <- as.array(data[,1])
t <- (rank(gamma_data) -0.5)/length(gamma_data)
q <- qgamma(t,shape = gamma_distr$estimate[1], rate = gamma_distr$estimate[2])
plot(q, gamma_data,main = "Gamma Q-Q plot",xlab = "Theoretical Quantiles",ylab = "Sample Quantiles")
abline(0, 1, col=2, lwd=3)

2.3 帕累托分布

# 1.3 pareto distribution
library(actuar)
library(fitdistrplus)
pareto_data <- as.vector(as.array(data[,1]))
## 拟合pareto模型, method='mle'需要指定
pareto_distr <- fitdist(pareto_data,"pareto",method = 'mle', start=list(shape=0.1, scale=0.1))
## 依次输出模型的系数、方差、最大似然值
pareto_distr$estimate
pareto_distr$sd
pareto_distr$loglik
## 图形分布 + 拟合分布
par(pin=c(5,5))
h_pareto <-hist(pareto_data,ylim = c(0,230),main = "Histogram of Pareto",xlab='data')   # 绘制源数据的直方图
xfit <-seq(min(data[,1]), max(data[,1]), by=(max(data[,1])-min(data[,1]))/1000)
yfit <-dpareto(xfit, shape = pareto_distr$estimate[1], scale = pareto_distr$estimate[2])
yfit <- yfit*diff(h_pareto$mids[1:2])*length(xfit)
lines(xfit, yfit, col="blue", lwd=2)# K-S test
## 没有直接检验对数正态分布的函数,需要转化后用对数分布检验
t <- (rank(pareto_data) -0.5)/length(pareto_data)
q <- qweibull(t, shape = pareto_distr$estimate[1], scale = pareto_distr$estimate[2])
pareto_ks_test <- ks.test(as.array(data[,1]), q)
pareto_ks_test
# A-D test
pareto_ad_test <- adTest(as.array(data[,1]), "pnorm")
pareto_ad_test# Q-Q图 只能使用自己的QQ图画法
## 自己实现QQ图
plot(q, pareto_data,main = "Pareto Q-Q plot",xlab = "Theoretical Quantiles",ylab = "Sample Quantiles")
abline(0, 1, col=2, lwd=3)

2.4 weibull分布

## 拟合weibull模型
weibull_distr <- fitdistr(as.array(data[,1]),"weibull")
## 依次输出模型的系数、方差、最大似然值
weibull_distr$estimate  
weibull_distr$sd
weibull_distr$loglik
## 图形分布 + 拟合分布
par(pin=c(5,5))
weibull_data <- as.array(data[,1])
h_weibull <-hist(weibull_data,ylim = c(0,230),main = "Histogram of Weibull",xlab='data')   # 绘制源数据的直方图
xfit <-seq(min(data[,1]), max(data[,1]), by=(max(data[,1])-min(data[,1]))/1000)
yfit <-dweibull(xfit, shape = weibull_distr$estimate[1], scale = weibull_distr$estimate[2])
yfit <- yfit*diff(h_weibull$mids[1:2])*length(xfit)
lines(xfit, yfit, col="blue", lwd=2)# K-S test
## 没有直接检验对数正态分布的函数,需要转化后用对数分布检验
t <- (rank(weibull_data) -0.5)/length(weibull_data)
q <- qweibull(t, shape = weibull_distr$estimate[1], scale = weibull_distr$estimate[2])
weibull_ks_test <- ks.test(as.array(data[,1]), q)
gamma_ks_test
# A-D test
weibull_ad_test <- adTest(as.array(data[,1]), "pnorm")
weibull_ad_test# Q-Q图 只能使用自己的QQ图画法
## 自己实现QQ图
plot(q, weibull_data,main = "Weibull Q-Q plot",xlab = "Theoretical Quantiles",ylab = "Sample Quantiles")
abline(0, 1, col=2, lwd=3)

二、方差分析

1 方差分析

1.1 单因素分析

attach(linseed) 
table(Plot)  
result_mean <-aggregate(Yield,by = list(Plot),FUN= mean)
result_sd <-  aggregate(Yield,by = list(Plot),FUN= sd)
fit<-aov(Yield~Plot) 
summary(fit)
TukeyHSD(fit) 
detach(linseed)

1.2 双因素方差分析


attach(wafer)      # 锁定数据集
table(Furnace, Wafer_Type)    # 交叉查看两个因素
result_mean <- aggregate(Thickness , by = list(Furnace, Wafer_Type) , FUN = mean)    # 交叉均值
result_df <- aggregate(Thickness  by = list(Furnace, Wafer_Type) , FUN = sd)        # 交叉方差
fit <- aov(Thickness ~ Furnace * Wafer.Type)    # 双因素方差分析
summary(fit)   # 输入结论
TukeyHSD(fit)    # 对任意两组输出Tukey honest significant differences
detach(wafer)  # 解锁数据集

2 列联表分析

  1. 双向无序列联表:行和列均只有两个且无序,使用Pearson卡方检验、Fisher精确概率
  2. 单项有序的列联表:常见的情况是结果变量有序,而原因变量无序。用Mann–Whitney U 检验、Kruskal-Wallis H检验
  3. 行列有序且属性相同:比如两列但阴阳。行列变量独立: Kappa一致性检验-即交叉表。配对行列表-McNemar检验、Bowker检验。

2.1 Pearson卡方检验

df <- tibble(count = c(56,283,55,360), Gender = c("Male", "Male", "Female", "Female"), Response = c("Mentioned", "Not Mentioned", "Mentioned","Not Mentioned"))
tbl <- xtabs(count~Response+Gender, df)   # 生成一个列联表
chisq.test(tbl) # 结果结合皮尔逊系数检验即可

2.2 Kruskal-Wallis H

df<-tibble(Grade = rep(c("A", "B", "C", "D-F"),3), count = c(8,14,15,3,15,19,4,1,13,15,7,4), major = c(rep("Psychology",4), rep("Biology",4), rep("Other",4)))xtabs(count~Grade+major, df)%>%
kable("html",table.attr = "style='width:50%;'",align = "c")%>%kable_styling(position = "center")# 这里专业是无序的,成绩是有序的,且分组数大于2,使用Kruskal-Wallis H
df$major_and_grade <- paste(df$Grade,df$major,sep="~")
kruskal.test(count~major_and_grade,data=df)

三、相关性分析

1 皮尔森相关系数

pearson_test <- cor.test(as.array(tem_data$age), as.array(tem_data$confidence),  method = "pearson", use = "complete.obs")

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构:队列(链表和数组模拟实现)
  • 大数据机器学习GAN:生成对抗网络GAN全维度介绍与实战
  • 系统学习Python——装饰器:函数装饰器-[对方法进行装饰:基础知识]
  • 基础算法-归并排序
  • 20231228在Firefly的AIO-3399J开发板的Android11使用Firefly的DTS配置单前后摄像头ov13850
  • Pandas的apply方法的应用练习
  • 2023-12-12LeetCode每日一题(下一个更大元素 IV)
  • SDG大数据平台简介
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • Java——功能开发思路
  • github鉴权失败
  • 数据结构——红黑树 and B-树
  • 【计算机网络】第四章摘要重点
  • 鸿蒙系列--组件介绍之容器组件
  • 卷积神经网络 反向传播
  • canvas 五子棋游戏
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • CSS实用技巧干货
  • es6--symbol
  • extract-text-webpack-plugin用法
  • happypack两次报错的问题
  • javascript从右向左截取指定位数字符的3种方法
  • Javascript基础之Array数组API
  • Linux中的硬链接与软链接
  • Shadow DOM 内部构造及如何构建独立组件
  • 编写高质量JavaScript代码之并发
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 消息队列系列二(IOT中消息队列的应用)
  • 函数计算新功能-----支持C#函数
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​数据结构之初始二叉树(3)
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # dbt source dbt source freshness命令详解
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • # 透过事物看本质的能力怎么培养?
  • (007)XHTML文档之标题——h1~h6
  • (1)Android开发优化---------UI优化
  • (1)svelte 教程:hello world
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C#)一个最简单的链表类
  • (二)原生js案例之数码时钟计时
  • (一)、python程序--模拟电脑鼠走迷宫
  • (转)大型网站的系统架构
  • .bat批处理(六):替换字符串中匹配的子串
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 快速重构概要1
  • .NET 中 GetProcess 相关方法的性能
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET6 命令行启动及发布单个Exe文件
  • .Net多线程Threading相关详解
  • .net开发引用程序集提示没有强名称的解决办法
  • .net网站发布-允许更新此预编译站点
  • []error LNK2001: unresolved external symbol _m
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians