r - 循环瑞利测试以找到最高值
问题描述
我是 R 的初学者,所以希望这将是一个简单的修复。
我正在尝试在数据集上使用 for 循环来确定神经元发射方向,以便:
- 将数据集中的下一个值增量添加到向量
- 对该向量运行瑞利测试并将其保存到变量中
- 测试我刚刚运行的 Rayleigh 检验是否具有比之前最后一个循环中的 Rayleigh 检验更大的统计量,并且 p 值是否小于 0.05
- 如果值较大,则保存统计值,以便下一个循环可以与之比较
- 如果值较大,则保存向量
到目前为止,我有这个代码,在经历了很长时间之后,我不知道为什么它不起作用。每次我运行它时,for 循环都会一直运行到最后,只报告整个数据集的瑞利值和向量,我知道这是不正确的。(我正在为瑞利测试功能使用圆形包)
# This first line is just to create an initial rayleigh statistic to compare to in the loop that is low
best_rayleigh <- rayleigh.test(1:10)
data_vector <- c()
for (i in firing_directions) {
data_vector <- append(data_vector, i)
ray_lee_test <- rayleigh.test(data_vector)
if ((ray_lee_test$statistic>best_rayleigh$statistic)&(ray_lee_test$p.value<=.05)) {
best_rayleigh <- ray_lee_test
best_rayleigh_vector <- data_vector
} else {
NULL
}
}
任何帮助表示赞赏。谢谢!
更新:我尝试在 if 语句中使用 && 而不是单个 &,但是它返回了相同的结果
解决方案
以下代码不会给出警告,而是选择具有最高检验统计量和“显着”p 值的向量。
library(circular)
set.seed(2020)
firing_directions <- rvonmises(n = 25, mu = circular(pi), kappa = 2)
plot(firing_directions)
best_rayleigh <- rayleigh.test(circular(1:10))
for(i in seq_along(firing_directions)){
dv <- firing_directions[seq_len(i)]
rltest <- rayleigh.test(dv)
if((rltest$statistic > best_rayleigh$statistic) && (rltest$p.value <= 0.05)){
best_rayleigh <- rltest
best_rayleigh_vector <- dv
}
}
best_rayleigh
#
# Rayleigh Test of Uniformity
# General Unimodal Alternative
#
#Test Statistic: 0.8048
#P-value: 0.0298
best_rayleigh_vector
#Circular Data:
#Type = angles
#Units = radians
#Template = none
#Modulo = asis
#Zero = 0
#Rotation = counter
#[1] 4.172219 2.510826 2.997495 4.095335 3.655613
推荐阅读
- c++ - 为什么我的文件不应该被覆盖?
- python - 使用库替换python中的列值
- node.js - Azure 服务总线主题:为什么消息似乎被接收者吃掉了?
- graphql - GraphQL:变量由匿名查询使用但未声明
- php - 我正在尝试设计 Laravel 8 登录页面,但我找不到登录页面
- php - 如何升级作曲家?- Composer 更新失败:无法写入“/opt/cpanel/composer/bin/composer”
- reactjs - 为什么我的 React UseEffect(使用 Firebase onSnapshot)处于无限循环中,不断地安装和卸载?
- c++ - 如何在 Qt 中运行多个测试而不多次调用 QTest::qExec?
- python - 没有 openCV 的对象跟踪
- php - 图片上传错误“创建对象时发生类型错误”Magento 2.4.1