全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
1124 2
2021-06-06
在学方差检验,运行是报错,吧第二行的代码改为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)


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-6-13 17:30:08
> test.data[, 1:5]
Error in `[.data.frame`(test.data, , 1:5) : undefined columns selected
> dim(test.data)
[1] 89  1

你的数据只有一列但是你取了1:5列?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-7-16 11:59:40
吧唧秋 发表于 2021-6-13 17:30
> test.data[, 1:5]
Error in `[.data.frame`(test.data, , 1:5) : undefined columns selected
> dim(t ...
是,感觉你可以先看一下你从csv读取的数据长什么样
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群