名称(x)<-值中的 gam 函数出错:“名称”属性必须与向量的长度相同

2023-12-29

我正在使用mgcv包根据一些环境协变量对臭氧污染浓度进行建模。该模型采用以下形式:

model1 <- gam(O3 ~ s(X, Y, bs = "tp", k = 10) + wd + s(date, bs = "cc", k = 100) + district,
              data = mydata, family = gaussian(link ="log"),
              na.action = "na.omit", method = "REML")

这是协变量的结构:

> str(mydata)
'data.frame': 7100 obs. of  286 variables:
 $ date            : Date, format: "2016-01-01" "2016-01-01" "2016-01-01" ...
 $ O3              : num  0.0141 0.0149 0.0102 0.0159 0.0186 ...
 $ district        : Factor w/ 10 levels "bc","bh","dl",..: 1 8 7 8 2 6 4 4 10 2 ...
 $ wd              : Factor w/ 16 levels "E","ENE","ESE",..: 13 13 13 13 13 2 9 9 11 13 ...
 $ X               : num  0.389 0.365 1 0.44 0.892 ...
 $ Y               : num  0.311 0.204 0.426 0.223 0.162 ...

我被困在

R 中的错​​误:“名称”属性 [1] 必须与向量 [0] 的长度相同。

我尝试通过删除术语来找出问题所在s(date, bs = "cc", k = 100)从公式来看,它可以很好地发挥作用。日期字段似乎有问题。

我不太确定如何解决这个问题。任何建议都会很大 赞赏!


The date变量不会自动转换为数值变量;你需要自己做这件事。我通常按​​如下方式处理此类信息

mydata <- transform(mydata, ndate = as.numeric(date),
                    nyear  = as.numeric(format(date, '%Y')),
                    nmonth = as.numeric(format(date, '%m')),
                    doy    = as.numeric(format(date, '%j')))

然后我可以选择通过多种方式对时间分量进行建模:

  1. 趋势基于ndate of nyear使用非循环样条,或
  2. 循环模式基于nmonth or doy(一年中的某一天),或
  3. 趋势和周期模式的结合

从您的问题中不清楚您的数据是否仅限于一年。如果数据跨越多年,那么您不能只使用循环样条ndate多变的。您将需要一个very复杂的标准样条线(选项 1)或包括两个样条线,一个用于年份之间部分,一个用于年内部分(选项 3)。

如果您的数据超过多年,那么我会将模型设置为

O3 ~ s(X, Y, bs = "tp", k = 10) + wd + s(doy, bs = 'cc', k = 20) +
     s(ndate, bs = "tp", k = 50) + district

也许s(nyear, .... )就足够了而不是s(ndate, .... ).

这种时间分量的分解非常有用,因为与单个更复杂的平滑相比,通过两个简单的、经过良好估计的平滑通常可以更好地拟合序列。它还允许您测试年内和之间的影响。

如果您需要季节性周期随趋势变化,那么张量积会很有帮助:

O3 ~ s(X, Y, bs = "tp", k = 10) + wd +
     te(doy, ndate, bs = c('cc','tp'), k = c(20,50)) + district

对于循环样条,您可能还需要设置knots参数,特别是如果您的数据没有完全跨越一年中的全部天数等。doy我会用knots = list(doy = c(0.5, 366.5))因为这使得 12 月 31 日和 1 月 1 日的估计值略有不同。为了nmonth这更重要,否则 12 月和 1 月将获得相同的拟合值。我用:knots = list(nmonth = c(0.5, 12.5)).

这里的想法是1 and 12反映相应月份的中旬,并且0.5 and 12.5第一个月和最后一个月的开始和结束,我们可能期望是相同的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

名称(x)<-值中的 gam 函数出错:“名称”属性必须与向量的长度相同 的相关文章

  • 将从数据透视表包生成的数据透视表转换为数据帧

    我正在尝试制作一个数据透视表pivottabler包裹 我想将数据透视表对象转换为数据框 以便我可以将其转换为数据表 带有 DT 并在 Shiny 应用程序中渲染它 以便可以下载 library pivottabler pt qpvt mt
  • R data.table:在当前测量之前对出现次数进行计数

    我有一组在几天内进行的测量结果 测量次数通常为 4 任何测量中可以捕获的数字范围为 1 5 在现实生活中 给定测试集 范围可能高达 100 或低至 20 我想每天计算每个值在当天之前发生的次数 让我用一些示例数据来解释 test data
  • R - 对矩阵的每行/列应用具有不同参数值的函数

    我试图将函数应用于矩阵的每一行或每一列 但我需要为每一行传递不同的参数值 我以为我熟悉 lapply mapply 等 但可能还不够 举个简单的例子 gt a lt matrix 1 100 ncol 10 gt a 1 2 3 4 5 6
  • 使用示例代码继续在 ggplot2 中遇到错误“loop_apply”未从当前命名空间(plyr)解析”

    我今天一直遇到这个错误 我已经从 github 下载了 plyr 但它仍然不起作用 安装 plyr 后 我重新启动了 R studio 甚至我的电脑 看来问题可能是由于 R 解析对外部 DLL 的引用的方式发生了变化 正如线程中途提到的he
  • 按元素名称组合/合并列表

    我有两个列表 其元素的名称部分重叠 我需要将其逐个元素合并 组合成一个列表 gt lst1 lt list integers c 1 7 letters letters 1 5 words c two strings gt lst2 lt
  • R tidyr regex:从字符列中提取有序数字

    假设我有一个像这样的数据框 df lt data frame x c This script outputs 10 visualizations This script outputs 1 visualization This script
  • 三角形内的热图

    考虑以下示例 triangle lines lt data frame X c 0 0 1 1 0 5 0 5 Y c 0 0 0 0 1 1 grp c 1 2 1 3 2 3 df lt matrix c c 0 2 0 5 0 8 c
  • 将一个 Rmarkdown 文档中的代码块插入到另一个 Rmarkdown 文档中

    我一直在举办一些小型 R 教程 研讨会 我将 挑战脚本 保存在 Rmarkdown 文档中 它们包含自由文本和 R 代码块 一些代码块是预先填充的 例如 为了设置数据集以供以后使用 而一些代码块则供与会者在研讨会期间填写代码 对于每个挑战脚
  • 在r中的数据框中循环线性回归输出

    我有一个下面的数据集 我想在其中对每个国家和州进行线性回归 然后绑定数据集中的预测值 添加另外三列后的最终数据框 我已经对一个国家和一个地区进行了此操作 但想对每个国家和地区进行此操作 并将预测值 上限值和下限值放回到cbind的数据集中
  • 在 R 中绘制 3D 数据

    我有一个 3D 数据集 data data frame x rep c 0 1 0 2 0 3 0 4 0 5 each 5 y rep c 1 2 3 4 5 5 data z runif 25 min data x data y 0 1
  • 如何创建具有特定于每个方面的标题和副标题的分面图?

    生成一个图 该图与每列的单独图相结合 带有标题和副标题 以及每个图的垂直线 我使用直方图创建了带有垂直线的列 library ggplot2 library gridExtra library tidyr actualIris lt dat
  • 获得各州的边界

    编辑7 经过相当多的帮助后 我已经能够得到一张接近我需要的结果的地图 但我仍然需要在地图上显示州边界 但我无法弄清楚 为了制作一个合适的可重现示例 我需要链接到数据集 因为输出太大 为了使事情变得简单 我只对三个状态进行子集化 但边界线不显
  • 在 Rdata 中保存矩阵并更新 Rdata 文件

    我有一个矩阵 mat lt matrix data 1 30 ncol 10 nrow 3 我想将其保存到 Rdata save mat file m Rdata 然后加载回来 m lt load m Rdata 然后看看它的内容 m 1
  • R 中的数据转换

    我需要以不同的方式查看数据框中的数据 问题就在这里 我有一个数据框如下 Person Item BuyOrSell 1 a B 1 b S 1 a S 2 d B 3 a S 3 e S 我需要把它改造成这样 显示该人在单个项目上进行的所有
  • Python:如何转换日期时间格式? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将时间转换为字符串 https stackoverflow com questions 4855406 how to convert a time to a string I have a变量如下
  • 从上一列中减去一列

    样本数据 dfData lt data frame ID c 1 2 3 4 5 DistA c 10 8 15 22 15 DistB c 15 35 40 33 20 DistC c 20 40 50 45 30 DistD c 60
  • 使用 dplyr 通过管道删除空列

    我有一个宽格式的参与者问卷答复数据框 每列代表一个特定的问题 项目 数据框看起来像这样 id lt c 1 2 3 4 Q1 lt c NA NA NA NA Q2 lt c 1 4 5 Q3 lt c NA 2 3 4 Q4 lt c 2
  • dplyr:评估错误:对象“。”在 gamlss 中找不到,但在 lm、gam、glm 方法中都很好

    语境 tidyverse and dplyr环境 工作流程 我希望了解如何解决以下问题 这是我在尝试处理回归结果集合时遇到的 这个最小的可重复性显示了问题 mtcars gt gamlss mpg hp wt disp data gt mo
  • HQL 中的日期比较(不带时间戳)

    我必须比较 hibernate hql 查询中的两个日期 我在 java bean 中使用 java util Date 并在 mysql 数据库中使用时间戳作为数据类型 select t from Task t where t modif
  • 反应式形式的 NgbDatepicker:设置初始值

    这可能是我一段时间以来处理过的最令人沮丧的问题之一 一般来说 日期 尤其是 NgbDatepicker 在 Angular 中处理起来有点麻烦 我正在 Angular 8 中针对反应 式表单实现 NgbDatepicker 我的问题的要点是

随机推荐

  • WooCommerce 4.0 电子邮件、管理订单和感谢页面上的自定义结账和 ACF 字段值

    我很难将自定义字段值打印到电子邮件通知 订单管理和感谢页面 我浏览了 StackOverflow 尝试了我找到的每一个答案 但不幸的是不起作用 我无法找出问题所在 我试图传递附加结账字段的值 它只打印带有空白值的强标签 并且在电子邮件中没有
  • 是否可以重写 C# 中的构造函数?

    派生类中是否可以重写基类的构造函数 如果是这样 如何实现以及在什么用例中这是实用的 如果没有 为什么不呢 不 你不能重写构造函数 这个概念在 C 中没有任何意义 因为构造函数根本就不是多态调用的 您总是声明您要构造哪个类 以及构造函数的参数
  • PowerShell 从 GitHub API 下载 Zip 文件

    我想编写一个 PowerShell 脚本来按照以下说明下载 ZIP 格式的 GitHub 存储库 https docs github com en rest reference repos contents https docs githu
  • 不允许 kubernetes mysql chown 操作

    我目前正在试验 Kubernetes 并在我本地运行的 ESX 基础设施上安装了一个小型集群 我使用 Project Atomic 和 Fedora 安装了两个从属节点和一个主节点 集群全部安装良好并且似乎正在运行 然而 我首先想让一个 M
  • 如何在 Express 服务器启动时运行函数?

    我似乎无法弄清楚如何让我的 Express 服务器在服务器启动时运行一个简单的功能 调用在服务器启动时运行的函数的适当位置以及正确的语法在哪里 我的路线文件中的功能为exports myFunction function code here
  • 如何在 C# 中实现 C++ 风格的函数指针?,不使用委托

    我正在学习 C 中的指针 很好奇是否可以在 C 中使用 C 风格的函数指针 是的 我知道 C 对于函数指针有其自己的等效概念 称为委托 但我只是想知道是否可以在 C 中使用指针而不使用委托来实现相同的效果 如果在 C 中使用指针是完全合法的
  • 带冒号的 Lua 函数

    我在完全理解 lua 语法时遇到问题 因此虽然这个答案可能很简单 但也许一些权威参考文献将帮助我和其他人进一步学习 function blah and function classname blah Aubergine18 的帖子涵盖了答案
  • Typesense:超出错误超时

    我正在使用 Reactjs 并且在将数据从 Firestore 同步到 Typesense 时遇到问题 我正在关注这个文档 https typesense org docs guide firebase full text search h
  • isEqual 并不总是适用于 NSIndexPath?我可以用什么来代替它?

    我有一些代码依赖于比较两个 NSIndexPaths 并根据它们的相等性或不相等性执行不同的代码 使用 isEqual 大多数时候它可以正常工作 但有时却不能 我已使用调试器控制台在代码执行期间测试两个索引路径 它们对我来说看起来相同 这是
  • 具有对角切割视图的自定义按钮背景

    I want to set background as shown in image 例如 我尝试过很多教程 https medium com adinugroho create diagonal cut view in android 5
  • 找出 CDATA 在 lxml 元素中的位置?

    我需要解析和重建解析器使用的文件格式 该解析器所使用的语言只能被慷慨地描述为 XML 我意识到符合标准的 XML 并不关心 CDATA 或空白 但不幸的是这个应用程序要求我关心两者 我在用着lxml etree因为它非常擅长保存 CDATA
  • 如何在 Python 中获取 URL 的基址?

    我正在尝试确定 URL 的基础 或除页面和参数之外的所有内容 我尝试使用 split 但是有没有比将其分成几部分更好的方法 有没有办法删除最后一个 中的所有内容 鉴于这种 http 127 0 0 1 asdf login php http
  • 仅使用 2 列键的第二列对 data.table 进行子集化,使用二分搜索而不是矢量扫描

    我最近发现了二分搜索data table 如果表按多个键排序 是否可以仅在第二个键上搜索 DT data table x sample letters 1e7 T y sample 1 25 1e7 T rnorm 1e7 setkey D
  • 如何消除 python3 等式运算符的弃用警告?

    虽然标题可以理解为三个问题 但实际问题描述起来很简单 在 Linux 系统上 我安装了 python 2 7 3 并且希望收到有关 python 3 不兼容性的警告 因此 我的代码片段 tester py 好像 usr bin python
  • C 数组循环

    是否可以仅循环具有赋值的元素 而不是循环遍历数组的每个元素 在下面的示例中 我只想循环遍历三个元素 而不是循环遍历数组中的每个元素 我有什么选择 我讨厌循环遍历数千个元素 因为只有少数元素是根据某些逻辑分配的 main int i intA
  • 为什么字符串需要用初始值初始化?

    我有一根绳子lx String我想稍后在代码中设置该值 但出现错误unconstrained subtype not allowed need initialization provide initial value or explicit
  • java int比较

    Java 如何知道 评估两个的比较int values 例如 int a 5 int b 10 如何评价是否a gt b or a b or a lt b 请给出详细的解释 JVM 解释如下指令 icmpge Compare Greater
  • 按行和列的总和对 pandas 数据透视表进行排序

    我有 例如 这个数据框 COLUMN1 COLUMN2 VALUE 0 0102 1020 1 1 0102 1220 8 2 0102 1210 2 3 0103 1020 1 4 0103 1210 3 5 0103 1222 8 6
  • 最佳实践以及如何在客户端的 C# 包装器中支持不同版本的 REST API

    我编写了一个 C 包装器来支持我们公司项目的 REST API 然而 这些 API 现在正在发生变化 在 URL 可能在 URL 中引入版本号 以及它期望和返回的数据对象方面 我想知道在我的 c 包装器中支持不同版本的 REST API 的
  • 名称(x)<-值中的 gam 函数出错:“名称”属性必须与向量的长度相同

    我正在使用mgcv包根据一些环境协变量对臭氧污染浓度进行建模 该模型采用以下形式 model1 lt gam O3 s X Y bs tp k 10 wd s date bs cc k 100 district data mydata fa