我已经附上了我的代码,我有问题,下面:

library(dplyr)
library(perm)
data(iris)

# Create subset to only see setosa and virginica species
iris_subset <- iris %>%
  filter(Species %in% c("setosa", "virginica"))

# Define test statistic
difference <- diff(mean(iris_subset$Sepal.Length[iris_subset$Species == "setosa"]),
                   mean(iris_subset$Sepal.Length[iris_subset$Species == "virginica"]))

# Define function
permutation_test <- function(data) {
  permutated_species <- sample(data$Species)
  permutated_diff <- diff(mean(data$Sepal.Length[permutated_species == "setosa"]),
                          mean(data$Sepal.Length[permutated_species == "virginica"]))
  return(permutated_diff)
}

# Permutation test
set.seed(13)
permutation_results <- permTS(iris_subset$Sepal.Length, group = iris_subset$Species, testStatistic = perm_test, nrepl = 10000)

# Calculate p-value
p_value <- permutation_results$p.value

# Print p-value
cat("P-value:", p_value, "\n")

我一直在我的代码中得到各种各样的错误,所有这些都围绕着置换测试部分,我不确定如何修复它,以便我可以得到我的p值.

我把我的代码放入ChatGPT,看看它是否可以修复我的错误,主要的一个是:

"Error in permTS.default(iris_subset$Sepal.Length, group = iris_subset$Species, : argument "y" is missing, with no default"

我添加了一个y,因为这是iris_subset $Species所缺少的,我得到了一个错误,即x和y都需要是数字.我也试过使用库(coin)和库(exactRankTest),重新编码我的原始代码以适应包,但仍然存在错误.

推荐答案

你正在使包已经变得简单的地方复杂化.双样本测试是均值差异的置换测试,不需要定义一个函数来做permTS已经做的事情.help("permTS"):

对于permTS,检验统计量等于一组的平均值减go 另一组的平均值.

library(perm)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

data(iris)

# Create subset to only see setosa and virginica species
iris_subset <- iris %>%
  filter(Species %in% c("setosa", "virginica"))

# set conf level, number of Monte Carlo replications, etc
permCntl <- permControl(cm = NULL, nmc = 10^4, seed = 1234321, digits = 12,
                        p.conf.level = 0.95, setSEED = TRUE, tsmethod = "central")

# test default is "two.sided"
permutation_results <- permTS(Sepal.Length ~ Species, data = iris_subset, control = permCntl)

# Calculate p-value
p_value <- permutation_results$p.value
# Print p-value
cat("P-value:", p_value, "\n")
#> P-value: 5.882895e-17

创建于2024—04—09,reprex v2.1.0

R相关问答推荐

寻找图片边缘

根据R中的另一个日期从多列中 Select 最近的日期和相应的结果

将复杂的组合列表转换为数据框架

如何改变时间图R中的悬停信息?

在R gggplot2中是否有一种方法将绘图轴转换成连续的 colored颜色 尺度?

在使用tidyModels和XGBoost的二进制分类机器学习任务中,所有模型都失败

`lazy_dt`不支持`dplyr/across`?

如何通过匹配R中所有可能的组合来从宽到长旋转多个列?

如何在R中通过多个变量创建交叉表?

如何将使用rhandsontable呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

QY数据的处理:如何定义QY因素的水平

将箭头绘制在图形外部,而不是图形内部

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

在使用具有Bray-Curtis相似性的pvCluust时计算p值

有没有办法定制Plot(allEffects())面板标题?

错误包arrowR:READ_PARQUET/OPEN_DATASET&QOT;无法反序列化SARIFT:TProtocolException:超出大小限制&Quot;

在ggploy中创建GeV分布时出错

在不重复主题的情况下重新排列组

从单个html段落中提取键-值对

用逗号拆分字符串,并删除一些字符