在线性回归中使用数据框的列名称作为预测变量

2024-04-16

我正在尝试遍历 data.frame 的所有列名称并使用它们 作为线性回归中的预测变量。

我目前拥有的是:

for (i in 1:11){
for (j in 1:11){
if (i != j ){
  var1 = names(newData)[i]
  var2 = names(newData)[j]
  glm.fit = glm(re78 ~  as.name(var1):as.name(var2), data=newData)
  summary(glm.fit)
  cv.glm(newData, glm.fit, K = 10)$delta[1]
  }
 }
}

其中 newData 是我的 data.frame,总共有 11 列。这段代码给我以下错误:

model.frame.default(formula = re78 ~ as.name(var1), data = newData, 中的错误: 变量“as.name(var1)”的类型(符号)无效

我该如何解决这个问题并使其发挥作用?


看起来您想要使用两个变量的所有组合的模型。这是使用内置的另一种方法mtcars用于说明和使用的数据框mpg作为结果变量。

我们得到两个变量的所有组合(不包括结果变量,mpg在这种情况下)使用combn. combn返回一个列表,其中每个列表元素都是一个包含一对变量名称的向量。然后我们使用map(来自purrr包)为每对变量创建模型并将结果存储在列表中。

We use reformulate来构建模型公式。.x引用回变量名称的向量(每个元素vars)。例如,如果你跑步,reformulate(paste(c("cyl", "disp"),collapse="*"), "mpg"),你可以看到什么reformulate是在做。

library(purrr)

# Get all combinations of two variables
vars = combn(names(mtcars)[-grep("mpg", names(mtcars))], 2, simplify=FALSE)

现在我们要对所有变量对运行回归模型并将结果存储在列表中:

# No interaction
models = map(vars, ~ glm(reformulate(.x, "mpg"), data=mtcars))

# Interaction only (no main effects)
models = map(vars, ~ glm(reformulate(paste(.x, collapse=":"), "mpg"), data=mtcars))

# Interaction and main effects
models = map(vars, ~ glm(reformulate(paste(.x, collapse="*"), "mpg"), data=mtcars))

使用该模型的公式命名每个列表元素:

names(models) = map(models, ~ .x[["terms"]])

使用以下命令创建模型公式paste代替reformulate你可以做(​​改变+ to : or *,取决于您想要包含的交互作用和主效应的组合):

models = map(vars, ~ glm(paste("mpg ~", paste(.x, collapse=" + ")), data=mtcars))

看看如何paste这里正在使用,你可以运行:

paste("mpg ~", paste(c("cyl", "disp"), collapse=" * "))

当模型同时包含主效应和交互作用时,前两个模型如下所示:

models[1:2]
$`mpg ~ cyl * disp`

Call:  glm(formula = reformulate(paste(.x, collapse = "*"), "mpg"), 
    data = mtcars)

Coefficients:
(Intercept)          cyl         disp     cyl:disp  
   49.03721     -3.40524     -0.14553      0.01585  

Degrees of Freedom: 31 Total (i.e. Null);  28 Residual
Null Deviance:        1126 
Residual Deviance: 198.1  AIC: 159.1

$`mpg ~ cyl * hp`

Call:  glm(formula = reformulate(paste(.x, collapse = "*"), "mpg"), 
    data = mtcars)

Coefficients:
(Intercept)          cyl           hp       cyl:hp  
   50.75121     -4.11914     -0.17068      0.01974  

Degrees of Freedom: 31 Total (i.e. Null);  28 Residual
Null Deviance:        1126 
Residual Deviance: 247.6  AIC: 166.3

要评估模型输出,您可以使用以下函数broom包裹。下面的代码返回数据帧,分别包含每个模型的系数和性能统计数据。

library(broom)

model_coefs = map_df(models, tidy, .id="Model")
model_performance = map_df(models, glance, .id="Model")

以下是具有主效应和交互作用的模型的结果:

head(model_coefs, 8)
             Model        term    estimate   std.error statistic      p.value
1 mpg ~ cyl * disp (Intercept) 49.03721186 5.004636297  9.798357 1.506091e-10
2 mpg ~ cyl * disp         cyl -3.40524372 0.840189015 -4.052950 3.645320e-04
3 mpg ~ cyl * disp        disp -0.14552575 0.040002465 -3.637919 1.099280e-03
4 mpg ~ cyl * disp    cyl:disp  0.01585388 0.004947824  3.204212 3.369023e-03
5   mpg ~ cyl * hp (Intercept) 50.75120716 6.511685614  7.793866 1.724224e-08
6   mpg ~ cyl * hp         cyl -4.11913952 0.988229081 -4.168203 2.672495e-04
7   mpg ~ cyl * hp          hp -0.17068010 0.069101555 -2.469989 1.987035e-02
8   mpg ~ cyl * hp      cyl:hp  0.01973741 0.008810871  2.240120 3.320219e-02
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在线性回归中使用数据框的列名称作为预测变量 的相关文章

  • R data.table fread 使用不带标题的命名 colClasses(例如没有 col.names?)

    更新 2016 年 6 月 col names 已添加到 data table 1 9 6 所以问题已经结束 每个人都非常高兴 我想我现在可以将所有 read csv 调用转换为 fread 调用 而不必担心破坏 原问题 使用数据表1 9
  • 合并具有一个共同元素的集合 R

    我有一个这样的列表 lista list lista 1 c 1 2 4 6 8 9 10 11 12 19 32 34 35 36 37 38 lista 2 c 7 8 lista 3 c 13 14 16 26 27 28 29 30
  • mclapply 调用应该嵌套吗?

    正在筑巢parallel mclapply是个好主意吗 require parallel ans lt mclapply 1 3 function x mclapply 1 3 function y y x unlist ans Outpu
  • 自定义 colorRampPalette 中的颜色条

    我定义了一个 colorRampPalette my colors colorRampPalette c light green yellow orange red 如何为其绘制颜色条 图例 项目 最好仅使用基本包 我正在寻找一个充满该颜色
  • 在 R 中使用 gsub 删除尾随空格[重复]

    这个问题在这里已经有答案了 有没有人有一个技巧可以用 gsub 删除变量上的尾随空格 以下是我的数据示例 正如您所看到的 我在变量中同时包含尾随空格和嵌入空格 county lt c mississippi mississippi cany
  • R dplyr过滤多列上的字符串条件

    我有一个 df 例如 df lt read table text v1 v2 v3 v4 v5 1 A B X C 2 A B C X 3 A C C C 4 B D V A 5 B Z Z D header T 如果变量 v2 到 v5
  • Rstudio 命令历史记录

    这些天我经常使用 Rstudio 但最近注意到我的命令不再存储在历史记录中 我不知道这是从什么时候开始的 但可能是在安装最新版本时发生的 关于问题可能是什么的任何想法吗 Thanks 这是我们在 v0 93 73 中引入并在 v0 93 7
  • 如何加速 R for 循环?

    我正在为 R 中 GWmodel 包中的 gwr basic 函数运行以下 for 循环 我需要做的是收集任何给定带宽的估计参数的平均值 代码如下 library GWmodel data DubVoter Dub voter LARent
  • 为什么我必须在每次 R 升级时手动创建目录“~/R/%p-library/%v”?

    每次R升级后 我必须重新安装我使用的软件包 来自源代码 因此必须为新版本重新编译它们 这是一个正确的 可以理解的行为 所以我调用install packages http stat ethz ch R manual R devel libr
  • 如何融合颜色和形状?

    当我有一个超过 6 个值的变量时 我的麻烦就开始了 因为这是 ggplot2 中 scale shape 函数的当前最大值 由于这个问题 我尝试使用另一个变量来解决这个问题 我只是将原始变量的长度包裹起来 这是我的示例代码 dataf lt
  • 带有nearPoints()的动态ggplot图层闪亮

    我熟悉闪亮的基础知识 但在这里遇到了一些困难 我希望能够在单击某个点以突出显示该点时添加 ggplot 图层 我知道 ggvis 可以做到这一点 并且画廊中有一个很好的例子 但我希望能够使用nearPoints 捕获点击作为 ui 输入 我
  • 在单个显示器中绘制多个 jpeg 图像

    我需要在单个组合显示器 或画布 中绘制和显示多个 jpeg 图像 例如 假设我有图像 a b c d jpg 每个图像的大小不同 我想将它们绘制在 2x2 网格的一页上 能够为每个子图设置标题也很好 我一直在彻底寻找解决方案 但不知道如何去
  • 获取所有矩阵列逐元素乘积对的快速方法

    假设我有一个数字matrix set seed 1 mat lt matrix rnorm 1000 ncol 100 我想生成所有向量 它们是中所有唯一向量对的逐元素乘积的结果mat 我们如何改进下面的代码 all pairs lt t
  • 确定向量中是否存在元素的最有效方法

    我有几种算法取决于确定元素是否存在于向量中的效率 在我看来 这 in 这相当于is element 应该是最有效的 因为它只返回一个布尔值 在测试了几种方法之后 令我惊讶的是 这些方法是迄今为止效率最低的 以下是我的分析 随着向量大小的增加
  • R 中的转换会导致文档错误

    每当我运行此代码时 tm map 行都会给我警告消息 警告信息 在 tm map SimpleCorpus docs toSpace 中 转换删除文档 texts lt read csv Data fast food Domino s Do
  • 使用pivot_longer将R中的多列变成一列[重复]

    这个问题在这里已经有答案了 我有一个dfpopulation看起来像这样 未列出所有列和行 Region X1975 X1976 X1977 X2008 National Total 942420 93717 94974 132802 Be
  • R:如何根据规范更改数据框中的列名称

    我有一个数据框 它的开头如下 SM H1455 SM V1456 SM K1457 SM X1461 SM K1462 ENSG00000000419 8 290 270 314 364 240 ENSG00000000457 8 252
  • 对于多项式,获取其所有极值并通过突出显示所有单调部分来绘制它

    有人问我这个有趣的问题 我认为值得将其发布在这里 因为 Stack Overflow 上还没有任何相关线程 假设我有长度为的多项式系数n vector pc 其中次数多项式n 1对于变量x可以以其原始形式表示 pc 1 pc 2 x pc
  • 编写健壮的 R 代码:命名空间、屏蔽和使用 `::` 运算符

    简洁版本 对于那些不想阅读我的 案例 的人来说 这就是本质 最小化新包破坏现有代码 即编写您编写的代码 的机会的推荐方法是什么尽可能坚固 充分利用该功能的推荐方法是什么 命名空间机制 when a just using贡献的软件包 比如在一
  • R lubridate:当地语言的工作日

    如何获取本地语言的工作日和月份 My code library lubridate data lt c 10 02 2015 11 03 2015 data lubri lt dmy data wday data lubri label T

随机推荐

  • 在 uiimageview 中加载大图像时的内存消耗

    我正在使用 UIViewContentModeScaleAspectFit 将大小为 2480 3508 的 UIImage 加载到 UIImageView 中 我在加载此图像时收到内存警告 当我在此 UIImageView 中加载一些此尺
  • 如何从列类型列表中的 pandas DataFrame 中删除空值

    只是期待一个从具有列表值的列中删除空值的解决方案 从某种意义上说 我们已经事先替换了一些字符串 它是列表的字符串表示形式的列 In df color我们只是更换 Blue带空字符串 示例数据框 df pd DataFrame Bird pa
  • Visual Studio 2012 Ultimate 新依赖图错误

    每次使用 Visual Studio 2012 Ultimate 创建新的依赖关系图时 我都会收到此错误 Unable to connect to the specified database An exception occurred a
  • 在Python中插入lxml树时出现属性错误

    我正在尝试将 xml 的小结构注入到现有 xml 文件中的特定位置
  • href 链接不可点击或不可突出显示

    我不完全确定为什么我的 a href 链接不起作用 在某个时间点它起作用了 我对 Z Index 做了一些研究 但这似乎不是问题 也不是我有一个重叠的 div 吗 请访问JSFIDDLE NET https jsfiddle net t9v
  • Ajax 如果超过一个 @mention

    我正在尝试使用 jquery ajax php 制作一个 facebook 和 twitter 风格的提及系统 但如果我尝试 提及多个用户 我就会遇到问题 例如 如果我开始输入如下内容 Hi stack how are you 结果显示 s
  • 将列添加到现有红移表

    我有一个包含超过 30m 条记录的数据库 我需要向数据库添加两个新列 问题是我需要这些列不为空 并且没有默认值 我以为我只需添加这些没有 NOT NULL 约束的列 用数据填充它们 然后添加约束 但 Redshift 不支持这一点 我心里有
  • 如何使用代码在 ios 应用程序中录制屏幕视频?

    就像苹果商店中的 ShowMe 应用程序一样 用户可以绘画并将动作录制为视频 你们知道如何在代码中做到这一点吗 谢谢 我们最近遇到了这个问题 并发现了一篇精彩的文章 其中使用了视图层和媒体框架 在这里查看链接 http codethink
  • Swift 协议只能设置吗?

    为什么我可以毫无错误地执行此操作 var testDto ModelDto modelId 1 testDto objectId 2 当我定义这个时 protocol DataTransferObject var objectType Dt
  • 浮动操作按钮不显示矢量资源

    I m trying to setup a vector asset into a fab But the result is like this As you can see the vector is there but way dow
  • 有没有办法在Oracle表的指定位置添加列? [复制]

    这个问题在这里已经有答案了 考虑一下我在 Oracle 10G 中创建的初始表 CUSTOMER ID ACC NO ACC BALANCE 100 200 1000 101 150 4000 102 350 2000 103 450 25
  • FFmpeg - 找不到 ExecuteBinaryResponseHandler - Android/Java

    我正在尝试制作一个用于反应原生的模块 它将把视频变成 gif 我对 android studios java 几乎没有经验 但我很想了解更多 我在用这个图书馆 https github com WritingMinds ffmpeg and
  • React Native 箭头函数和“if”语句

    我刚刚接受了箭头函数的教育 以及当您开始使用子函数时它们如何帮助提高可见性React Native 和全局可访问的对象 https stackoverflow com questions 50209526 react native and
  • gdb:“未加载符号表”

    尝试在 gdb 中添加断点时 我不断收到此错误消息 我使用这些命令来编译 gcc g main c utmpib2 c o main o and cc g main c utmpib2 c o main o and also g g mai
  • 升级到 RN 0.68 后 APK 中缺少 index.android.bundle

    将我们的 RN 应用程序升级到 RN 0 68 后 我们在发布版本中遇到错误 FATAL EXCEPTION create react context Process com app PID 15057 java lang RuntimeE
  • 应用程序的私有文件

    我想创建一个文件来存储一些只能由我的应用程序访问的数据 外部用户不应该能够访问该文件或对其进行任何更改 我将在文件中存储一个密钥 该密钥可能由我的应用程序访问需要时随时使用应用程序 使用Environment getDataDirector
  • Meteor如何调用Meteor.methods()中定义的方法?

    我将方法分配给 Meteor 服务器 如下所示 在 bootstrap js 中 Meteor startup function Meteor methods foo function return 1 bar function QUEST
  • Direct2D 位图画笔拉长

    我必须在屏幕外位图上绘制形状 但是当我尝试渲染位图时遇到一个奇怪的问题 这就是图像的显示方式 这就是我查看位图的方式 以下是我用来创建位图画笔的代码 const auto size renderTarget gt GetSize const
  • 内容更改时停止文本小部件滚动

    我有一个带有滚动条的文本小部件 看起来像这样 self myWidget Text root self myWidget configure state DISABLED self myWidget pack self myWidgetSc
  • 在线性回归中使用数据框的列名称作为预测变量

    我正在尝试遍历 data frame 的所有列名称并使用它们 作为线性回归中的预测变量 我目前拥有的是 for i in 1 11 for j in 1 11 if i j var1 names newData i var2 names n