在学方差检验,运行是报错,吧第二行的代码改为read.csv导入csv文件也不对,请问各位大神怎么办
> setwd("C:\\Users\\86156\\Desktop\\lesson\\3.假设检验\\建模")
> test.data <- read.csv(file.choose(), sep = "\t", header = T, check.names=F)
>
> test.data[, 1:5]
Error in `[.data.frame`(test.data, , 1:5) : undefined columns selected
> dim(test.data)
[1] 89 1
>
> result <- data.frame()
> for (i in 1:6000) {
+ # 检验的变量名称
+ result[i, 1] <- colnames(test.data)[i+2]
+ # label为0时的变量均值
+ result[i, 2] <- mean(test.data[, i+2][which(test.data$label == 0)])
+ # label为1时的变量均值
+ result[i, 3] <- mean(test.data[, i+2][which(test.data$label == 1)])
+ # label为0时的变量正态性检验
+ if(var(test.data[, i+2][which(test.data$label == 0)]) == 0){
+ result[i, 4] <- 0
+ }else{
+ st0 <- shapiro.test(test.data[, i+2][which(test.data$label == 0)])
+ result[i, 4] <- st0$p.value
+ }
+ # label为1时的变量正态性检验
+ if(var(test.data[, i+2][which(test.data$label == 1)]) == 0){
+ result[i, 5] <- 0
+ }else{
+ st0 <- shapiro.test(test.data[, i+2][which(test.data$label == 1)])
+ result[i, 5] <- st0$p.value
+ }
+ # 判断是否变量的所有取值都相同
+ if(var(test.data[, i+2]) == 0){
+ result[i, 6:12] <- 1
+ next
+ }
+ # 方差齐性检验
+ vt <- var.test(test.data[, i+2] ~ test.data$label)
+ result[i, 6] <- vt$p.value
+ # 假设方差齐性做t检验
+ tt1 <- t.test(test.data[, i+2] ~ test.data$label, var.equal = TRUE)
+ result[i, 7] <- tt1$statistic
+ result[i, 8] <- tt1$p.value
+ # 假设方差非齐性做t检验
+ tt2 <- t.test(test.data[, i+2] ~ test.data$label)
+ result[i, 9] <- tt2$statistic
+ result[i, 10] <- tt2$p.value
+ # 非参u检验
+ ut <- wilcox.test(test.data[, i+2] ~ test.data$label)
+ result[i, 11] <- ut$statistic
+ result[i, 12] <- ut$p.value
+ }
Error in `[.data.frame`(test.data, , i + 2) : 选择了未定义的列
>
> colnames(result) <- c("variable", "mean_0", "mean_1",
+ "p_shapiro_0", "p_shapiro_1",
+ "p_var_test", "t_var_eq_stat", "t_var_eq_p",
+ "t_var_neq_stat", "t_var_neq_p", "u_stat", "u_p")
Error in names(x) <- value : 'names'属性的长度[12]必需和矢量的长度[1]一样
> head(result)
V1
1 <NA>
> result <- result %>% mutate(normal = ifelse(p_shapiro_0 > 0.05 & p_shapiro_1 > 0.05, 1, 0),
+ varequal = ifelse(p_var_test > 0.05, 1, 0),
+ fun = ifelse(normal == 1,
+ ifelse(varequal == 1, "t_var_eq", "t_var_neq"),
+ "u"),
+ stat = ifelse(normal == 1,
+ ifelse(varequal == 1, t_var_eq_stat, t_var_neq_stat),
+ u_stat),
+ p = ifelse(normal == 1,
+ ifelse(varequal == 1, t_var_eq_p, t_var_neq_p),
+ u_p))
Error in result %>% mutate(normal = ifelse(p_shapiro_0 > 0.05 & p_shapiro_1 > :
没有"%>%"这个函数
> write.table(result, "test_result_2.csv", sep = ",", row.names = F)