小编Mes*_*eso的帖子

model.frame.default中的错误:变量长度不同

在使用mgcv包运行gam模型时,我遇到了一条奇怪的错误消息,我无法理解:

"model.frame.default中的错误(公式=死亡~pm10 +滞后(resid1,1)+:变量长度不同(找到'Lag(resid1,1)')".

模型1中使用的观察数量与偏差残差的长度完全相同,因此我认为此误差与数据大小或长度的差异无关.

我在网上找到了一个相当有关的错误信息在这里,但后没有得到充分的答案,因此它是不利于我的问题.

可重复的示例和数据如下:

library(quantmod)
library(mgcv) 
require(dlnm)

df <- chicagoNMMAPS
df1 <- df[,c("date","dow","death","temp","pm10")] 
df1$trend<-seq(dim(df1)[1]) ### Create a time trend
Run Code Online (Sandbox Code Playgroud)

运行模型

model1<-gam(death ~ pm10 + s(trend,k=14*7)+ s(temp,k=5),
data=df1, na.action=na.omit, family=poisson)
Run Code Online (Sandbox Code Playgroud)

获得偏差残差

resid1 <- residuals(model1,type="deviance")
Run Code Online (Sandbox Code Playgroud)

为模型1添加一天滞后偏差

model1_1 <- update(model1,.~.+ Lag(resid1,1),  na.action=na.omit)

model1_2<-gam(death ~ pm10 + s(trend,k=14*7)+ s(temp,k=5) + Lag(resid1,1), data=df1, 
na.action=na.omit, family=poisson)
Run Code Online (Sandbox Code Playgroud)

这两个模型都产生了相同的错误消息.

r gam quantmod mgcv

18
推荐指数
2
解决办法
13万
查看次数

一个图中的多个时间序列

我有几年的时间序列,我需要在一个图表中绘制.最大的系列平均值为340,最小值为245,最大值为900.最小系列的平均值为7,最小值为-28,最大值为31.其余系列的值均为6到700.该系列经历了多年的常规年度和季节性模式,直到突然出现一个月的温度升高,随后死亡人数大大增加.

我无法提供任何实际数据,但我已经模拟了以下数据并尝试了下面的代码,该代码基于此处的示例代码http://www.r-bloggers.com/multiple-y-axis-in-ar-情节/.但情节并没有产生我想要的东西.我有以下问题

  1. 在情节中,很难清楚地描述任何系列和重要事实隐藏在细节中.我怎样才能更好地呈现这些数据?
  2. Y轴具有不同的长度.我怎么能有相同长度的轴?我很感激有关如何改进此代码并提供更好的情节的任何想法和建议.我模拟的数据并不反映我的数据,因为我无法模拟反映极端天气事件时期的极端值.

非常感谢

temp<- rnorm(365, 5, 10)
mort<- rnorm(365, 300, 45)
poll<- rpois(365,  lambda=76)
date<-seq(as.Date('2011-01-01'),as.Date('2011-12-31'),by = 1)
df<-data.frame(date,mort,poll,temp)

windows(600,600)
par(mar=c(5, 12, 4, 4) + 0.1)

with(df, {
  plot(date, mort, axes=F, ylim=c(170,max(mort)), xlab="", ylab="",type="l",col="black", main="")
  points(date,mort,pch=20,col="black")
  axis(2, ylim=c(170,max(mort)),col="black",lwd=2)
  mtext(2,text="Mortality",line=2)

})

par(new=T)
plot(date, poll, axes=F, ylim=c(45,max(poll)), xlab="", ylab="", 
     type="l",col="red",lty=2, main="",lwd=1)
axis(2,  ylim=c(45,max(poll)),lwd=1,line=3.5)
points(date, poll,pch=20)
mtext(2,text="PM10",line=5.5)

par(new=T)
plot(date,  temp, axes=F, ylim=c(-28,max(temp)), xlab="", ylab="", 
     type="l",lty=3,col="brown", main="",lwd=1)
axis(2, ylim=c(-28,max(temp)),lwd=1,line=7)

points(date,  temp,pch=20)
mtext(2,text="Temperature",line=9)

axis(1,pretty(range(date),10))
mtext("date",side=1,col="black",line=2)
Run Code Online (Sandbox Code Playgroud)

plot r time-series

11
推荐指数
3
解决办法
4万
查看次数

在ggplot中对齐图例文本

我很难将图例文本对齐到左侧.

library(ggplot2)
library(reshape2)
o3<- rnorm(1827, 50, 10)
NO2<- rnorm(1827, 35, 7)
NOx<- rnorm(1827, 45, 10)
pm25<- rnorm(1827, 15, 4)
date<-seq(as.Date('2000-01-01'),as.Date('2004-12-31'),by = 1)
df<-data.frame(date,o3,NO2,NOx,pm25)
meltdf <- melt(df,id="date")
Run Code Online (Sandbox Code Playgroud)

使用此代码,对齐自动向左

ggplot(meltdf, aes(x = date, y = value, colour =variable)) + geom_smooth() + stat_smooth(method = "gam")
Run Code Online (Sandbox Code Playgroud)

然而,以下是alignemt到中心.

ggplot(meltdf, aes(x = date, y = value, colour =variable)) + 
      geom_smooth() + stat_smooth(method = "gam") +
      scale_color_discrete(name="Pollutant" ,labels = c(expression(O[3]),
                                expression(NO[2]),
                                expression(NO[x]),
                                expression(PM[2.5]))) 
Run Code Online (Sandbox Code Playgroud)

我怎么能用最后一个脚本实现左对齐?

r ggplot2

8
推荐指数
1
解决办法
1万
查看次数

如何在mgcv中设置基准尺寸的最小值?

使用mgcv的惩罚样条,我希望在示例数据中获得10 /年的有效自由度(EDF)(整个期间为60).

library(mgcv)
library(dlnm) 
df <- chicagoNMMAPS

df1<-subset(df, as.Date(date) >= '1995-01-01') 

mod1 <-gam(resp ~ s(time,bs='cr',k=6*15, fx=F)+ s(temp,k=6, bs='cr') + as.factor(dow) 
,family=quasipoisson,na.action=na.omit,data=df1) 
Run Code Online (Sandbox Code Playgroud)

在示例数据中,由edf测量的时间的基本维度为56.117,小于每年10.

summary(mod1)


Approximate significance of smooth terms:
           edf Ref.df     F p-value    
s(time) 56.117 67.187 5.369  <2e-16 ***
s(temp)  2.564  3.204 0.998   0.393    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.277   Deviance explained = 28.2%
GCV score = 1.1297  Scale est. = 1.0959    n = 2192
Run Code Online (Sandbox Code Playgroud)

手动我将通过提供如下的平滑参数来更改edf a

mod1$sp

 s(time) …
Run Code Online (Sandbox Code Playgroud)

r gam

7
推荐指数
1
解决办法
1297
查看次数

提取GAM的估计值

我是R的新手,目前正在读一本书"广义的添加模型",一本R by Wood(2006)的介绍,并经历了一些练习,特别是关于空气污染和死亡的部分,这是我感兴趣的领域.使用mgcv包我运行以下模型.

library(gamair) 
library(mgcv) 
data(chicago) 

ap1<-gam(death ~ pm10median + so2median + o3median +s(time,bs="cr",k=200)+ s(tmpd,bs="cr"), data=chicago,family=poisson)
Run Code Online (Sandbox Code Playgroud)

如何提取pm10median的效果估计值和x的95%CI并将输出导出为CSV或任何其他选项?

r gam mgcv

5
推荐指数
1
解决办法
5976
查看次数

如何在R中创建比值比和95%CI图

我估计了比值比,相应的95%CI的六种污染物超过4个滞后期.如何创建一个类似于R中附图的垂直图?下图是在SPSS中创建的.生成该图的示例数据如下:

lag pollut  or  lcl ucl
0   CO  0.97    0.90    1.06
0   PM10    1.00    0.91    1.09
0   NO  0.97    0.92    1.02
0   NO2 1.01    0.89    1.15
0   SO2 0.97    0.85    1.11
0   Ozone   1.00    0.87    1.15
1   CO  1.03    0.95    1.10
1   PM10    0.93    0.86    1.01
1   NO  1.01    0.97    1.06
1   NO2 1.08    0.97    1.20
1   SO2 0.94    0.84    1.04
1   Ozone   0.94    0.84    1.04
2   CO  1.09    1.02    1.16
2   PM10    1.04    0.96    1.13
2   NO  1.04    1.00 …
Run Code Online (Sandbox Code Playgroud)

plot r

4
推荐指数
1
解决办法
1万
查看次数

删除多个重复集并保留一个

我有多个重复的ID - 日期集,并希望删除除第一个之外的所有重复集.我怎么能这样做?论坛上没有一个例子为我的案例提供了一个有效的例子.根据提供的输出数据,我希望保留以下内容:

1     767 10-dec-97   1
2     767 10-dec-97   2
3     767 10-dec-97   3
4     767 10-dec-97   4
9   19025 11-dec-97   1
10  19025 11-dec-97   2
11  19025 11-dec-97   3
18  27452 16-apr-95   1
19  27452 16-apr-95   2
20  27452 16-apr-95   3
21  27452 16-apr-95   4
Run Code Online (Sandbox Code Playgroud)

示例数据如下:

structure(list(id = c(767L, 767L, 767L, 767L, 9271L, 9271L, 9271L, 
9271L, 19025L, 19025L, 19025L, 162749L, 162749L, 162749L, 183446L, 
183446L, 183446L, 27452L, 27452L, 27452L, 27452L, 84002L, 84002L, 
84002L, 84002L, 276172L, 276172L, 276172L, 276172L), date …
Run Code Online (Sandbox Code Playgroud)

r duplicates

0
推荐指数
1
解决办法
91
查看次数

标签 统计

r ×7

gam ×3

mgcv ×2

plot ×2

duplicates ×1

ggplot2 ×1

quantmod ×1

time-series ×1