我正在尝试探索mgcv包中的" gam“函数与gam包中的”gam“函数的不同之处。但是,我不能在一个R会话中同时运行两个gam函数。我认为如果我以mgcv::gam或gam::gam作为前缀,它将能够运行正确的函数,但看起来我必须分离mgcv才能运行gam包中的gam函数。 library(ISLR)
library(mgcv)
library(gam)
# I get an error message when it runs this
gam.m3 <- gam::gam(wage~s(year,4)+s(age,5)+education,data=Wage)
# N
我需要在R中运行两个不同的脚本,而不需要重新启动会话。在第一种情况下,我使用包mgcv,在第二种情况下,我需要gam。我编写了一个脚本,它分离并删除包mgcv,并安装和加载gam。但是,在我想运行gam()函数之后,我仍然会收到一个错误,告诉我没有找到mgcv。我将其解释为寻找用于安装mgcv包的R.
这是一辆MWE:
install.packages(paste(path.pkgs,'mgcv_1.8-7.zip',sep=''),repos=NULL)
require(mgcv)
## FIRST SCRIPT ##
det
我正在使用rpy2与mgcv进行通信,以获得gam预测。
我可以通过使用mgcv获得一个gam,但是当我尝试使用预测方法时,它与错误一起出错:
NameError:未定义名称“预测”
以下是我的密码。
import pandas as pd
import numpy as np
from rpy2.robjects.packages import importr
import rpy2.robjects as ro
import pandas.rpy.common as com
from rpy2.robjects import pandas2ri
pandas2ri.activa
我正在R中查看R包,我想知道如何根据新的数据更新模型。例如,假设我有以下数据,并且我有兴趣拟合一个三次回归样条。
# Load library.
library(mgcv)
# Set seed.
set.seed(2022)
# Data
x <- seq(10, 100, by = 10)
y <- sort(runif(10))
我可以使用mgcv::s()函数对模型进行拟合,以转换我的预测变量,其中bs = "cr"表示文档中所示的三次回归样条(即?mgcv::s)。
# Fit.
model <- mgcv::gam(y ~ s(x, bs =
几年前的描述了如何提取用于绘制拟合gam模型的平滑分量的数据。它是有效的,但只有当有一个平滑的变量时。我有多个平滑变量,不幸的是,我只能从系列的最后一个变量中提取平滑。下面是一个示例:
library(mgcv)
a = rnorm(100)
b = runif(100)
y = a*b/(a+b)
mod = gam(y~s(a)+s(b))
summary(mod)
plotData <- list()
trace(mgcv:::plot.gam, at=list(c(25,3,3,3)),
#this gets you to the location wher
我试图在mgcv中使用层次化的一般加性模型,使用高斯位置尺度模型族。然而,这一系列函数在尝试拟合时会抛出一个神秘的错误。
遵循最近一篇论文()中关于HGAMs的指导,以及lmvar包编写()中的说明指南。
library(mgcv); library(datasets)
# Using the CO2 dataset for illustration
data <- datasets::CO2
# Changing the 'Plant' factor from ordered to unordered
data$Plant <- factor(data$P
我使用mgcv运行了一个包含大型数据集(超过20,000个案例)的GAMM模型。由于数据点的数量很多,很难在图中的残差点之间看到平滑的线条。是否可以为点和平滑拟合线指定不同的颜色?
下面是一个取自mgcv文档的示例:
library(mgcv)
## simple examples using gamm as alternative to gam
set.seed(0)
dat <- gamSim(1,n=200,scale=2)
b <- gamm(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat)
plot(b$gam, pages=1, residua
我想弄清楚,并在行中使用::符号来拟合mgcv::gam。当我在mgcv::s的模型调用中使用表示法时,我在一件事上绊倒了。下面显示了具有可复制示例/错误的代码。
原因可能是因为我在模型公式中使用了这个表示法,但是我不知道为什么不允许这样做。这可能是关于语法的一些非常具体的东西(我想可能不是特定于mgcv ),但是也许有人可以帮助我理解这个和我对R的理解。
library(mgcv)
dat <- data.frame(x = 1:10, y = 101:110)
# this results in an error: invalid type (list)...
mgcv::gam(y
当使用平滑样条拟合广义加性模型时,stargazer只返回主效果,而不返回在summary(pros.gam)中可以看到的平滑项。观星者也可以退还这些吗?或者,是否有其他函数或包可以完成这项工作?
library(ElemStatLearn)
library(mgcv)
library(stargazer)
pros.gam=gam(lpsa~s(lcavol)+s(lweight)+s(age)+s(lbph)+svi
+s(lcp)+gleason+s(pgg45),data=prostate)
summary(pros.gam) # Table should include the
在使用mgcv软件包对其中一个协变量使用micv平滑函数(来自scam软件包)构建的GAM模型进行预测时,我得到了以下错误:
Error in predict.gam(mod_gam, newdata = dfGAMDev) :
number of items to replace is not a multiple of replacement length
代码:
library(dplyr)
library(ggplot2)
library(car)
library(mgcv)
library(scam)
mod_gam <- gam(Y ~ X1 + X2+
我正在尝试将GAM模型拟合到由两对(x,y)值组成的数据集,即(x1,y1)和(x2,y2),方法是首先拟合第一对,然后移动到第二对。当我在‘for’循环中调用gam函数时,它给出了一个错误“没有足够的(非NA)数据来做任何有意义的事情”。我怀疑这与我构造列的x1、y1、x2和y2标签的方式有关,因为在‘for’循环之外,gam函数可以工作。
谢谢!
library(mgcv)
#> Loading required package: nlme
#> This is mgcv 1.8-26. For overview type 'help("mgcv-package
我试图使用mgcv包在r上使用二项式数据(link=logit)运行GAMs。这是试图描述宽吻海豚的栖息地使用情况,使用存在(1)和缺失(0)数据作为响应和一组环境变量作为预测。
然而,我使用的代码似乎运行良好,但是,当我绘制残差时,只剩下两行不同的代码。我的理解是,在绘制残差的时候,应该有一个均匀的散落在这条线上--然而事实并非如此--任何关于我应该寻找的东西的指导都会非常感激。
下面是使用两个变量示例的输出:
m1<-gam(Presence~s(Dist_Ent_k,k=8)+s(Dist_wall_m,k=5), data=mydata,
family = bi
这样做是可行的:
// Helper that evaluates R expression
let evalS (text:string) =
R.eval(R.parse(namedParams ["text", text ]))
let evalV (text:string) =
(text |> evalS).Value
//run example from page 8 of http://cran.r-project.org/web/packages/mgcv/mgcv.pdf
evalV("""
library(m
在一年中,我有7组24小时的数据。当我拟合一个gam (mgcv::gam)时,我使用by=参数来生成7条不同的拟合线--它会产生一些奇怪的匹配。但是,当我将数据子集到其中一个组并再次运行gam时,不使用by=Group参数,则fit看起来要好得多,也是有意义的。
这是一个玩具例子,在这两个方法之间的变化并不是很大,但是当使用by=参数时,我的实际结果要激烈得多,为什么呢?
require(data.table)
require(mgcv)
require(ggplot2)
## create two groups of data, A & B
dtA <- data.tabl
在情况a中,mgcv R包中的gam代码工作正常。 library(mgcv)
dat <- gamSim(1,n=400,dist="normal",scale=2)
num_knots = nrow(dat)
fit <- gam(y~s(x0, bs = "cr", k = num_knots, m=2),data=dat)
summary(fit) 但是,当我在gam()中添加了参数后,它报告了错误"Model比data有更多的系数“。 fit <- gam(y~s(x0, bs = "cr", k = nu