gpt4 book ai didi

r - 使用 for 循环仅获取选定变量的相关性

转载 作者:行者123 更新时间:2023-12-01 17:46:38 25 4
gpt4 key购买 nike

我有一个数据集如下:

set.seed(1)
TDT <- data.table(Group = c(rep("A",40),rep("B",60)),
Id = c(rep(1,20),rep(2,20),rep(3,20),rep(4,20),rep(5,20)),
Time = rep(seq(as.Date("2010-01-03"), length=20, by="1 month") - 1,5),
norm = round(runif(100)/10,2),
y = sample(100,100),
x2 = round(rnorm(100,0.75,0.3),2),
x3 = round(rnorm(100,0.75,0.3),2),
x4 = round(rnorm(100,0.75,0.3),2),
x5 = round(rnorm(100,0.75,0.3),2))

我想创建一个新的数据集,其中包含我选择的 TDT 相关性。为了获得因变量和选定的自变量 (xcor) 与我尝试过的所有其他自变量的相关性:

# getting the numerical variables
numcols <- names(Filter(is.numeric,TDT))

# getting the correlation of y with all x
TDT.y.cor<- TDT[, cor(.SD, y),.SDcols = numcols, by = Time]

# getting the correlation of selected x with all other x
xcor <- c("x2","x3")
TDT.x.cor <- TDT[, cor(.SD, xcor),.SDcols = numcols, by = Time]

但是最后一个给出了错误:

Error in cor(.SD, xcor) : 
'y' must be numeric

所以现在我想创建一个 for 循环。像这样的东西:

xcor <- list ("x2","x3")
for (i in xcor) {
TDT.xcor[[i]].cor <- TDT[, cor(.SD, xcor[[i]]),.SDcols = numcols, by = Time]
}

这不是正确的语法。有什么建议吗?

最佳答案

免责声明此答案使用 manymodelr 的开发者版本我写的。

要获得所有 xs 和 y 之间的相关性,我们可以使用:

manymodelr::get_var_corr(Filter(is.numeric,TDT),
comparison_var = "y",get_all = TRUE)

这会产生:

   Comparison_Var Other_Var      p_value Correlation    lower_ci  upper_ci
1 y Id 0.7660224000 0.03013023 -0.16727786 0.2252155
2 y norm 0.5323952847 0.06316715 -0.13492501 0.2564040
3 y x2 0.7032924284 -0.03855859 -0.23321046 0.1590642
4 y x3 0.4898005278 0.06985644 -0.12832239 0.2626704
5 y x4 0.2702013263 0.11131634 -0.08700408 0.3011500
6 y x5 0.0009658689 0.32510267 0.13746236 0.4902174

仅针对选定变量(即 x 和几个 xs)执行以下操作:

manymodelr::get_var_corr(Filter(is.numeric,TDT),
comparison_var = "x2",get_all = FALSE,other_vars = c("x4","x5"))
Comparison_Var Other_Var p.value Correlation lower_ci upper_ci
1 x2 x4 0.5593246 -0.0590762 -0.25256366 0.1389543
2 x2 x5 0.1787881 0.1355323 -0.06255102 0.3233427

您可以保存结果并获取其他统计信息,例如摘要输出。

编辑:要使用特定变量,可以使用支持如下组合的变体 get_var_corr_(第一列可以被丢弃):

get_var_corr_(filter_df) %>% 
filter(Comparison_Var %in% c("x2","y") & Other_Var %in% c("x4","x3"))
.id Comparison_Var Other_Var p.value Correlation lower_ci upper_ci
1 Var2 y x3 0.4898005 0.06985644 -0.12832239 0.2626704
2 Var2 x2 x3 0.6239815 -0.04961512 -0.24365870 0.1482477
3 Var2 y x4 0.2702013 0.11131634 -0.08700408 0.3011500
4 Var2 x2 x4 0.5593246 -0.05907620 -0.25256366 0.1389543

关于r - 使用 for 循环仅获取选定变量的相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56671281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com