智能优化算法数据处理之平均值、标准差、p值、Friedman平均排名

这里以智能优化算法数据处理为例,计算算法运行30次的平均值,标准差,Wilcoxon秩和检验p值,Friedman检验的平均排名,算法包括:包括引用超过五千次的高被引算法(PSO,GSA,GWO,WOA)和最近提出来的高性能算法(AVOA,GTO,DBO,SO),每个算法都是独立的.m文件,方便管理和二次开发,算法具体描述如下:

第一,粒子群优化算法(Particle Swarm Optimization, PSO) 是James Kennedy和Russell Eberhart在1995年受到鸟群觅食行为的规律性启发提出的算法。第二,引力搜索算法(Gravitational Search Algorithm,GSA)是Esmat Rashedi等人在2009年基于万有引力定律和粒子间相互作用提出的算法。第三,灰狼优化算法(Grey Wolf Optimizer,GWO)是 Mirjalili 等人在2014年到了灰狼捕食猎物活动的启发提出来的一种群智能优化算法。第四,鲸鱼优化算法 (Whale Optimization Algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提出的一种新的群体智能优化算法。第五,非洲秃鹫优化算法(African Vultures Optimization Algorithm,AVOA)由Benyamin Abdollahzadeh等人受非洲秃鹫的觅食和导航行为启发于2021年提出,该算法速度快,求解精度高,广泛应用于单目标优化。人工大猩猩部队优化算法(Artificial gorilla troops optimizer,GTO࿰

Friedman秩和检验是一种非参数方法,常用于比较三个或更多处理之间的顺序效应。以下是使用R语言进行Friedman秩和检验的完整流程: 首先,假设我们有一个数据框df,其中包含n个观察和k个因子(处理),每个观察对应于一个因子。 ```R # 假设数据集是一个示例 df <- data.frame( group = c("A", "B", "C", rep("A", 5), rep("B", 6), rep("C", 7)), # k=3个处理 values = rnorm(24) # n=24个观察 ) ``` 1. **构造秩**: 使用`rank()`函数对每个因子内的观测进行排序,并计算每个观测的秩。 ```R ranks <- apply(df[["values"]], 1, rank, ties.method = "average") # 对列进行秩化处理 ``` 这里`ties.method="average"`表示处理相等的方式,可以选其他如"random"或"min"。 2. **计算秩和**: 对每个因子,将其内部的秩相加,然后对所有因子的总秩求和。 ```R group_ranks <- split(ranks, df$group) # 按照因子分组 total_ranks <- rowSums(unlist(group_ranks)) # 计算每个组的总秩和 ``` 3. **构造检验统计量**: 使用下面的公式计算Friedman秩和检验的统计量W: ``` W = 12 * N * (N + 1)^2 / ((6 * N^2 - 5 * N) * (N + 1)) ``` 其中N是样本总数,这里是24。 ```R N <- nrow(df) F_statistic <- 12 * N * (N + 1)^2 / ((6 * N^2 - 5 * N) * (N + 1)) ``` 4. **计算P**: R语言中可以直接使用`friedman.test()`函数计算P,它会自动基于累积分布函数找到临界并返回P。 ```R p_value <- pf(F_statistic, df = k - 1, n = N, lower.tail = FALSE) # k-1自由度 ``` 完整代码如下: ```R # 假设数据集 df <- data.frame( group = c("A", "B", "C", rep("A", 5), rep("B", 6), rep("C", 7)), values = rnorm(24) ) # 计算秩和检验 group_ranks <- split(rank(df$values), df$group) total_ranks <- rowSums(unlist(group_ranks)) # 检验统计量 N <- nrow(df) F_statistic <- 12 * N * (N + 1)^2 / ((6 * N^2 - 5 * N) * (N + 1)) # P计算 p_value <- pf(F_statistic, df = length(unique(df$group)) - 1, n = N, lower.tail = FALSE) cat("Friedman检验统计量:", F_statistic, "\n") cat("P:", p_value, "\n") ```
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值