【问题标题】:Delete a row and recalculate R^2删除一行并重新计算 R^2
【发布时间】:2013-03-29 16:32:02
【问题描述】:

我在 R 中编写了以下代码: 用户选择一个包含 2 列(V1 和 V2)的文件,其中包含许多行(行数会因输入文件而异) 该脚本计算 2 个变量之间关系的 rsq。根据输入文件,可以有 10 到 1000 行数据。

我想编写以下代码: 代码应该遍历所有行,一次删除/省略/忽略一行,并计算缺少该行的新 rsq。所以,例如:

有10行数据,总rsq = 0.97 Step1:从方程中去掉第一行数据 再次计算 rsq,但这次是 9 行,得到 rsq = 0.98。
步骤2:重新添加第一行,删除第二行 rsq 再次计算 第三步:重新添加第二行,删除第三行 rsq 再次计算

在每个循环之后,“new rsq”将被放置在被删除行旁边的新列中。

谁能建议如何做到这一点?我在 excel 中对此进行了编码,效果很好,但很麻烦,因此并不理想。

【问题讨论】:

  • 这听起来像是一个引导程序。在这种情况下,您确实需要告诉使用您理解的“总 rsq”,最好是使用代码!这听起来也像是一项家庭作业,所以如果你能围绕它放置一个上下文,它可能会减少我们参与学术不端行为的担忧。
  • 更像是 LOO 估计,不是吗?
  • 您的数据集中大约有多少行?
  • 如果是作业,请提示:newvalue[j]<-some_func(data[-j,])
  • 我可能应该说“jack-knife”而不是“bootstrap”。

标签: r row


【解决方案1】:

你想做这样的事情吗?

# Make some sample data
set.seed(1095)
data <- data.frame( V1 = 1:10 , V2 = sample.int(5 ,10 ,repl = TRUE ) )

# Use sapply to get r2 removing each row at a time
r2 <- sapply( 1:nrow(data) , function(x) ( cor( data[-x,1] , data[-x,2] ) )^2 )
# Combine into a data frame
newdata <- cbind( data , r2 )
newdata
#      V1 V2        r2
#   1   1  5 0.2526316
#   2   2  3 0.4657601
#   3   3  5 0.3204721
#   4   4  5 0.3691612
#   5   5  1 0.5405405
#   6   6  3 0.3769480
#   7   7  3 0.3840426
#   8   8  2 0.3409425
#   9   9  1 0.2725806
#   10 10  3 0.4986702

【讨论】:

  • 嗨,西蒙,谢谢。我认为这正是我所需要的。我已经修改了您的代码以使用我自己的数据并且它运​​行完美。虽然它给出了与我的 .xls 不同的结果,但我会玩一玩。我非常感谢这个论坛提供的意见,尤其是当我无法描述我需要帮助的内容时!
  • @user2224979 欢迎您!检查 excel 正在计算的 r2 的类型。默认情况下,R 使用 Pearsons 积矩相关系数。我不确定Excel是否也这样做?它也可能是 Excel 的舍入/显示问题。基本上,我相信 R,因为帮助页面准确地描述了使用的方法,如果你真的想要,你可以查看源代码。尝试不同的cor 方法,例如cor( data[-x,1] , data[-x,2] , method = "spearman" ) 看看他们合不合算。
  • 干杯西蒙。是的,这就是为什么我热衷于将我必须的 excel 代码移动到 R,因为有了 R,我确切地知道我得到了什么!
  • @user2224979 例如,第一行的值是多少?我看到here R^2 等于 Pearson 的平方,所以也许您只需要平方值?我编辑了代码以反映这一点。
  • 我刚刚将 Excel 中的 =INDEX(LINEST(B2:B11,A2:A11,,TRUE),3,1)=PEARSON(A2:A11,B2:B11)^2 与 R 中的 cor(x, y)^2summary(lm(y ~ x))$r.squared 进行了比较,这四个都给了我相同的结果。 (显然 Excel 数据是单元格 A2:B11 中的 2 行 10 个数字)
猜你喜欢
  • 1970-01-01
  • 2020-08-12
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 2014-04-26
  • 2020-12-05
  • 2013-10-25
  • 1970-01-01
相关资源
最近更新 更多