#r #anova
#r #anova
Вопрос:
У меня есть набор данных, аналогичный следующему:
237 участников выполнили 4 экспериментальных условия, которые описываются двумя уровнями переменных A, B (YesxLow, Yes x High, No x Low, No x High).
Я пытаюсь провести повторные измерения ANOVA, чтобы определить различия в оценочных средствах в 4 разных группах, A x B в R, используя следующую функцию:
res.aov <- anova_test(
data = my.data, dv = my.data$Score, wid = my.data$id,
within = c(my.data$A, my.data$B)
)
get_anova_table(res.aov)
Но я продолжаю получать следующую ошибку:
Ошибка: необходимо подмножество столбцов с допустимым вектором индекса. x не может преобразовать из в из-за потери точности.
Информация об отладке:
> x
-<error/vctrs_error_subscript_type>
| Must subset columns with a valid subscript vector.
| x Can't convert from <double> to <integer> due to loss of precision.
-<error/vctrs_error_cast_lossy>
Can't convert from <double> to <integer> due to loss of precision.
Backtrace:
x
1. -rstatix::anova_test(...)
2. | -`%>%`(...)
3. | -base::withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
4. | -base::eval(quote(`_fseq`(`_lhs`)), env, env)
5. | -base::eval(quote(`_fseq`(`_lhs`)), env, env)
6. | -rstatix:::`_fseq`(`_lhs`)
7. | -magrittr::freduce(value, `_function_list`)
8. | -function_list[[i]](value)
9. | -rstatix:::select_quo_variables(., data)
10. | -rstatix:::get_quo_vars_list(data, .enquos)
11. | -.enquos %>% map(~get_quo_vars(data, .))
12. | -base::withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
13. | -base::eval(quote(`_fseq`(`_lhs`)), env, env)
14. | -base::eval(quote(`_fseq`(`_lhs`)), env, env)
15. | -rstatix:::`_fseq`(`_lhs`)
16. | -magrittr::freduce(value, `_function_list`)
17. | -base::withVisible(function_list[[k]](value))
18. | -function_list[[k]](value)
19. | -purrr::map(., ~get_quo_vars(data, .))
20. | -rstatix:::.f(.x[[i]], ...)
21. | -rstatix:::get_quo_vars(data, .)
22. | -names(data) %>% tidyselect::vars_select(!!vars) %>% magrittr::set_names(NULL)
23. | -base::withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
24. | -base::eval(quote(`_fseq`(`_lhs`)), env, env)
25. | -base::eval(quote(`_fseq`(`_lhs`)), env, env)
26. | -rstatix:::`_fseq`(`_lhs`)
27. | -magrittr::freduce(value, `_function_list`)
28. | -function_list[[i]](value)
29. | -tidyselect::vars_select(., !!vars)
30. | -tidyselect:::eval_select_impl(...)
31. | -tidyselect:::with_subscript_errors(...)
32. | | -base::tryCatch(...)
33. | | | -base:::tryCatchList(expr, classes, parentenv, handlers)
34. | | | -base:::tryCatchOne(expr, names, parentenv, handlers[[1L]])
35. | | | -base:::doTryCatch(return(expr), name, parentenv, handler)
36. | | -tidyselect:::instrument_base_errors(expr)
37. | | -base::withCallingHandlers(...)
38. | -tidyselect:::vars_select_eval(...)
39. | -tidyselect:::walk_data_tree(expr, data_mask, context_mask)
40. | -tidyselect:::eval_c(expr, data_mask, context_mask)
41. | -tidyselect:::reduce_sels(node, data_mask, context_mask, init = init)
42. | -tidyselect:::walk_data_tree(new, data_mask, context_mask)
43. | -tidyselect:::as_indices_sel_impl(...)
44. | -tidyselect:::as_indices_impl(x, vars, strict = strict)
45. | -vctrs::vec_as_subscript(x, logical = "error")
46. -vctrs:::try_catch_impl(...)
47. -base::tryCatch(try_catch_callback(data, NULL), ...)
48. | -base:::tryCatchList(expr, classes, parentenv, handlers)
49. | -base:::tryCatchOne(expr, names, parentenv, handlers[[1L]])
50. | -base:::doTryCatch(return(expr), name, parentenv, handler)
51. -vctrs:::try_catch_callback(data, NULL)
52. -(function () ...
53. -vctrs:::vec_cast.integer.double(...)
54. -vctrs::maybe_lossy_cast(out, x, to, lossy, x_arg = x_arg, to_arg = to_arg)
55. -base::withRestarts(...)
56. | -base:::withOneRestart(expr, restarts[[1L]])
57. | -base:::doWithOneRestart(return(expr), restart)
58. -vctrs:::stop_lossy_cast(...)
59. -vctrs:::stop_vctrs(...)
Я попытался превратить факторы в числовые переменные, но я все равно получаю ту же ошибку.
Есть идеи, что может быть не так?
Ответ №1:
Кажется, что следующее решает проблему:
res.aov <- anova_test(
data = my.data, dv = Score, wid = id,
within = c(A,B)
)
get_anova_table(res.aov)