使用 lm 对独特因子组合的子集进行回归

2024-02-01

我想对由分组变量的独特组合定义的子集自动执行简单的多元回归。我有一个数据框,其中包含多个分组变量 df1[1:6] 和一些自变量 df1[8:10] 以及响应 df1[7]。

这是数据的摘录。

structure(list(Surface = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("NiAu", "Sn"), class = "factor"), Supplier = structure(c(1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L), .Label = c("A", "B"), class = "factor"), ParticleSize = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("3", "5"), class = "factor"), T1 = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L), .Label = c("130", "144"), class = "factor"), T2 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "200", class = "factor"), O2 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "1300", class = "factor"), Shear = c(56.83, 67.73, 78.51, 62.61, 66.78, 60.89, 62.94, 76.34, 70.56, 70.4, 54.15), Gap = c(373, 450, 417, 450, 406, 439, 439, 417, 439, 441, 417), Clearance = c(500.13, 509.85, 495.97, 499.55, 502.66, 505.33, 500.32, 503.28, 507.44, 500.5, 498.39), Void = c(316, 343, 89, 247, 271, 326, 304, 282, 437, 243, 116)), .Names = c("Surface", "Supplier", "ParticleSize","T1", "T2", "O2", "Shear", "Gap", "Clearance", "Void"), class = "data.frame", row.names = c(NA, -11L))

使用 unique(df1[1:6]) 返回分组变量的 5 个因子组合。所以我应用 lm() 函数的子集应该有 5 个。 我的电话看起来像这样

df1.fit.by<-with(df1,by(df1,df1[,1:6], function(x) lm(Shear~Gap+Clearance+Void,data=x)))
sapply(df1.fit.by,coef)

问题 1:它返回一个包含 16 个列表条目的列表。显然,它计算了前六个分组变量的所有可能的因素组合。 (摘录中V5+V6只有一个水平,而V1:4有两个水平。导致2^4=16)但它应该只使用数据中真实存在的因子组合。所以我认为 by() 不是实现这一目标的正确函数。有什么建议么?
问题 2:我发现引用列索引比引用变量名更容易。所以我最初尝试以 lm(df1[7]~df1[8]+df1[9]) 的方式使用 lm() 函数。那没有成功。因为我总是访问整个 df1 数据帧而不是子集。因此,我可能应该将因子组合的行索引传递给 lm() 函数,而不是完整的数据帧。

我认为问题 1 和问题 2 的解决方案在某种程度上是相关的,并使用另一个子集函数来解决。如果有人能尝试解释我的错误在哪里,那就太好了。如果可能的话,我会坚持使用标准包,因为我想提高对 R 的理解。谢谢

编辑:变量赋值中的一个小错误


你可以使用plyr包裹:

require(plyr)
list_reg <- dlply(df1, .(Surface, Supplier, ParticleSize, T1, T2), function(df) 
  {lm(Shear~Gap+Clearance+Void,data=df)})
#We have indeed five different results
length(list_reg)
#That's how you check out one particular regression, in this case the first
summary(list_reg[[1]])

功能dlply需要一个data.frame(这就是 d... 代表的意思),就你而言df1,并返回一个列表(这就是 .l... 所代表的),在您的情况下由五个元素组成,每个元素包含一个回归的结果。

在内部,您的df1根据指定的列分为五个子data.frames.(Surface, Supplier, ParticleSize, T1, T2)和函数lm(Shear~Gap+Clearance+Void,data=df)应用于每个子数据帧。

为了更好地感受什么dlply确实如此,只需致电

list_sub_df <- dlply(df1, .(Surface, Supplier, ParticleSize, T1, T2))

你可以查看每个子数据帧lm将被应用到。

最后只是一个一般性说明:paper http://vita.had.co.nz/papers/plyr.html软件包作者 Hadley Wickham 的文章确实很棒:即使您最终不会使用他的软件包,了解拆分-应用-组合方法仍然非常好。

EDIT:

我刚刚进行了快速搜索,正如预期的那样,之前已经对此进行了更好的解释,因此请务必阅读此内容SO https://stackoverflow.com/questions/7523427/ddply-with-lm-function post.

EDIT2:

如果您想直接使用列号,请尝试此(取自此SO https://stackoverflow.com/questions/3784187/how-to-use-string-variables-to-create-variables-list-for-ddply post):

 list_reg <- dlply(df1, names(df1[, 1:5]), function(df) 
      {lm(Shear~Gap+Clearance+Void,data=df)})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 lm 对独特因子组合的子集进行回归 的相关文章

  • mongodb - 检索数组子集

    看似简单的任务对我来说是一个挑战 我有以下 mongodb 结构 services TCP80 data status 1 delay 3 87 ts 1308056460 status 1 delay 2 83 ts 1308058080
  • 准备编程竞赛的缩写和函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • R 中的聚类分析:确定最佳聚类数

    如何选择最佳的聚类数量来进行 k 均值分析 绘制以下数据的子集后 多少个簇比较合适 如何进行聚类树突分析 n 1000 kk 10 x1 runif kk y1 runif kk z1 runif kk x4 sample x1 lengt
  • 如何在 R 中绘制预测的子集?

    我有一个简单的 R 脚本来根据文件创建预测 自 2014 年以来就有数据记录 但我在尝试实现以下两个目标时遇到了困难 仅绘制预测信息的子集 从 11 2017 开始 以特定格式包含月份和年份 即 6 月 17 日 这是链接到dataset
  • R CMD 检查警告:在文档对象中使用的函数/方法...但不在代码中

    我正在写一个包 但一个持久的R CMD check警告阻止我完成包裹并将其发布到 CRAN 我用roxygen2对于内联文档 尽管这可能不是错误的根本原因 如果您知道如何删除此警告 我很可能可以找到一种方法来使用roxygen2 如何删除警
  • 用于不规则时间序列的滚动窗口函数,可以处理重复项

    我有以下数据框 grp nr yr 1 A 1 0 2009 2 A 2 0 2009 3 A 1 5 2009 4 A 1 0 2010 5 B 3 0 2009 6 B 2 0 2010 7 B NA 2011 8 C 3 0 2014
  • R:install.packages 中出现错误:无法打开连接

    我试图安装 RINDSEL 包 但无法安装它 并且不断收到以下错误 install packages 中出错 无法打开连接 我从以下位置下载了该软件包 rindsel 1 0 2 zip 综合养殖平台 http old ibpdev net
  • 如何拆分 data.frame -> 将合并应用于子集 -> 合并到 data.frame 中

    我真的不知道如何在不使用 for 循环的情况下实现这一目标 x lt c a b c d gt x 1 a b c d data lt data frame x c a b a b c a a b c d name c one one tw
  • 为“facet_wrap”中的每列创建边框和标题

    我想在每个方面周围放置带有标签和标题的黑色边框facet wrap 与此类似的东西 样本数据 library tidyverse mtcars gt mutate gear factor gear levels c 4 3 5 gt ggp
  • 如何在R中绘制仪表图表?

    如何在 R 中绘制以下图 Red 30 Yellow 40 Green 30 Needle at 52 所以这里有一个完整的ggplot解决方案 注意 从原始帖子中编辑 在仪表中断处添加数字指示器和标签 这似乎是OP在评论中所要求的 如果不
  • 如何使用 RODBC 将数据帧保存到数据库生成的主键表

    我想使用 R 脚本将数据框输入到数据库中的现有表中 并且希望数据库中的表具有顺序主键 我的问题是 RODBC 似乎不允许主键约束 这是创建我想要的表的 SQL CREATE TABLE dbo results ID INT IDENTITY
  • ggplot2 中的小时刻度

    我正在处理就寝时间和醒来时间 因此我想创建一个具有 24 小时 x 轴的图表 从第一天中午 12 点开始 到第二天中午 12 点结束 这意味着晚上 11 59 之后 它应该再次从 0 开始 同样的问题 仅涉及数字 我想创建一个从 10 到
  • 带有 geom_errorbar 的position_dodge

    我有以下代码 require ggplot2 pd lt position dodge 0 3 ggplot dt aes x Time y OR colour Group geom errorbar aes ymin CI lower y
  • mclapply 调用应该嵌套吗?

    正在筑巢parallel mclapply是个好主意吗 require parallel ans lt mclapply 1 3 function x mclapply 1 3 function y y x unlist ans Outpu
  • 如何安装和管理多个版本的 R 包

    我正在开发一个使用 R 进行可重现计算的框架 我正在努力解决的一个问题是 某些 R 代码可能在包的 X Y Z 版本中完美运行 但是为什么你在 3 年后尝试重现它 这些包已经更新了 一些功能发生了变化 代码不再运行 此问题还会影响使用包的
  • 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
  • 使用 RMySQL 会干扰 RPostgreSQL

    我有一个 R 脚本 我想从 MySQL 数据库中提取一些数据 然后从 PostgreSQL 数据库中提取一些数据 但是 从 RMySQL 加载 MySQL 驱动程序会阻止我从以下位置加载 PostgreSQL 驱动程序 PostgreSQL
  • 绘制具有数据子集的图层时,因子水平的顺序会发生变化

    我试图控制图例中项目的顺序ggplot2我查找了其他一些类似的问题 并发现了如何更改我正在绘制的因子变量的水平顺序 我正在绘制 12 月 1 月 7 月和 6 月 4 个月的数据 如果我只对所有月份执行一个绘图命令 它会按预期工作 图例中排
  • R:为什么 kable 不在 for 循环内打印?

    我正在使用 rmarkdown 和 Latex 编写报告 我需要使用打印一组表格knitr kable 但在 for 循环内时不会打印 这是我的代码 title project title author Mr Author date 201
  • ggplot堆叠条 - 隐藏标签但保留标签位置

    我在 ggplot 中有一个堆积条形图 其中 geom text 标签位于每个条形的中心 我想隐藏小条上的标签 以便图表看起来不会过于拥挤 我可以使用下面的代码来完成此操作 但它会弄乱标签的位置 正如您在下面的链接图片中看到的那样 它们不再

随机推荐

  • SeriesCollection 和 FullSeriesCollection 之间的区别

    我正在尝试清理一些自动生成的代码 并且我对 Excel 中的系列功能相当陌生 所以在许多网站 论坛中我发现人们使用更多SeriesCollection而不是我生成的代码使用FullSeriesCollection 我的代码正在过滤一些内容
  • 没有 Docker 的 Gitlab-runner

    我已经在 ubuntu 16 04 上安装了 gitlab runner 我已经设置了 Executor shell 我的项目托管在 gitlab com 上 有一个非常简单的 yaml 配置文件 dev script pwd I am n
  • 从 Spring WS 拦截器获取请求参数

    我将 Jaxb 2 与 Spring WS 一起使用 并且我有一个针对特定有效负载的拦截器 并且它工作正常 这里我的要求是从拦截器的handleRequest方法中读取请求参数 我知道这应该是相当简单的 但是无法找到读取请求参数的方法 目前
  • fstream 文件结尾问题

    我正在读取多个文件 这些文件大约有 300 个 由于某种原因 如果我将循环设置为运行超过 3 次迭代 则应该迭代每一行的 while 循环将变得无限 我的问题是 我是否忘记在 while 循环中包含一些内容 现在我只是尝试一次读取一行 最终
  • Android + 字符串

    谁能告诉我 Android 中的 toString 是什么以及如何使用它 作为例子将受到高度赞赏 toString http download llnw oracle com javase 6 docs api java lang Obje
  • SQL 中的特殊字符转义

    Oracle 有没有一种简单的方法来转义 SQL 语句中的特殊字符 即 我看到了这个link http orafaq com faq how does one escape special characters when writing s
  • php://输入返回空

    我有骨干应用程序 当模型更新时 PUT 请求会发送到我的服务器 客户端看起来不错 但在服务器端 PHP 我遇到了一些麻烦 当我第一次在 PHPStorm 中测试这个请求时 file get contents php input 返回我所期望
  • 使用 jQuery 确定相对路径

    我在顶级域下的子文件夹中安装了几个 WordPress 站点 http www mydomain com site a http www mydomain com site a http www mydomain com site b ht
  • 节点 - 将 jest 与 esm 包一起使用

    我想知道如何合并esm包裹https www npmjs com package esm https www npmjs com package esm在节点后端使用笑话 我尝试设置一个安装文件require esm and require
  • 谷歌分析 4 与 React

    我一直在尝试在我的应用程序中将 React ga 包与 google Analytics 4 一起使用 测量 ID 不适用于它 并且我可以使用的 google Analytics 4 中没有跟踪代码 拜托 我需要帮助 import Reac
  • jquery根据背景图像名称选择元素

    我正在尝试选择一个具有特定背景图像的 div 这是我迄今为止所拥有的 不工作 对我做错了什么有什么想法吗 我正在尝试遵循 jQuery 文档 var markerShadow0 div background image url http w
  • 在电子邮件中发送内嵌图像

    通过电子邮件将图像作为正文中的嵌入图像发送时遇到问题 图像文件显示为附件 这没问题 但内联图像部分仅显示为红色 x 这是我到目前为止所拥有的 LinkedResource inline new LinkedResource filePath
  • 如何使用 mox 模拟类属性?

    我有一堂课 class MyClass object property def myproperty self return hello Using mox http code google com p pymox and py test
  • AS3:调用静态类方法 - 类和方法名称是字符串

    我有一个丑陋的问题 我有两个字符串变量 className 和 staticMethod 存储类的名称以及我必须调用的静态方法 package import flash display Sprite import flash utils g
  • 如何显示定义的值

    在一些 doxygen 文档中 我想显示 define 而不是标签本身 例如 在一个 C 文件中我有 define REPEAT N TIMES 10 现在我想在我的文档中显示 该动作进行10次 如果我使用 ref REPEAT N TIM
  • 无符号函数必须返回一些东西吗?

    嘿 我正在做一个练习 我必须用 C 编写一个无符号函数 我有一个问题 我是否必须因为函数的类型而返回一些东西 还是可以选择的 在正常使用中 任何声明返回值的函数都应该返回一个值 这很大程度上是一个良好的编程实践的问题 未能返回值通常是错误的
  • 从 Java 类生成 JSON 模式

    我有一个 POJO 类 public class Stock int id String name Date date 是否有任何注释或开发框架 API 可以将 POJO 转换为 JSON 模式 如下所示 id type int name
  • 如何获取 Qt 应用程序的当前工作目录路径?

    我正在使用 Qt 库用 C 编写程序 我想获取我的程序的当前工作目录 我找到了QDir 当前路径 and QCoreApplication applicationDirPath 函数 但它们返回应用程序可执行文件所在的目录 我不想获取包含应
  • 选择许多三层深度

    我可以使用 SelectMany 展平集合中子集合的结果 a list of Foos a Foo contains a List of Bars var source new List
  • 使用 lm 对独特因子组合的子集进行回归

    我想对由分组变量的独特组合定义的子集自动执行简单的多元回归 我有一个数据框 其中包含多个分组变量 df1 1 6 和一些自变量 df1 8 10 以及响应 df1 7 这是数据的摘录 structure list Surface struc