总结和 lm 模型错误
Summarise and lm model error
在尝试创建 table 统计信息时,我 运行 遇到了 summary.lm r.squared 值的问题。
首先,我从 csv 中读入了数据
df <- as.data.frame(read.csv("BCO.csv", header = TRUE, stringsAsFactors = FALSE))
df <- df[,2:4]
然后我开始关注趋势...
CLDD_trend <- ddply(df, .(STATION_NAME), function(z)coef(lm(CLDD_yr ~ year, data = z)))
这就是我 运行 遇到问题的地方...
CLDD_rsq <- ddply(df, .(STATION_NAME), summarise, rsq = summary(lm(CLDD_yr ~ year))$r.squared)
我收到这个错误...
Error: invalid term in model formula
这里是df的头部
> head(df)
STATION_NAME year CLDD_yr
1 ALBUQUERQUE FOOTHILLS NE NM US 1992 3341
2 ALBUQUERQUE FOOTHILLS NE NM US 1993 4443
3 ALBUQUERQUE FOOTHILLS NE NM US 1994 5319
4 ALBUQUERQUE FOOTHILLS NE NM US 1995 5070
5 ALBUQUERQUE FOOTHILLS NE NM US 1996 5338
6 ALBUQUERQUE FOOTHILLS NE NM US 1997 5105
和CLDD_trend的头
> head(CLDD_trend)
STATION_NAME (Intercept) year
1 ALBUQUERQUE FOOTHILLS NE NM US -185183.485 95.159091
2 ALBUQUERQUE INTERNATIONAL AIRPORT NM US -138428.871 73.121774
3 ALBUQUERQUE VLY NM US -138218.809 72.243478
4 PETROGLYPH NATIONAL MON NM US -95959.130 51.074086
5 SANDIA PARK NM US 7758.845 -3.439124
我的目标是向 CLDD_trend 添加一个新列,其中包含汇总函数 r.squared 部分的结果。
stat <- cbind(CLDD_trend[,1&3], CLDD_rsq$rsq)
你能看出我模型中的错误在哪里吗?我被难住了。
原来我与 dplyr 和 plyr 有某种冲突。
我通过
解决了这个问题
detach()
library(plyr)
df <- as.data.frame(read.csv("BCO.csv", header = TRUE, stringsAsFactors = FALSE))
df <- df[,2:4]
CLDD_trend <- ddply(df, .(STATION_NAME), function(z)coef(lm(CLDD_yr ~ year, data = z)))
CLDD_rsq <- ddply(df, .(STATION_NAME), summarise, rsq = summary(lm(CLDD_yr ~ year))$r.squared)
stat <- cbind(CLDD_trend[,1&3], CLDD_rsq$rsq)
这是如何用一个运行
提取两个统计数据
CLDD_trend <- ddply(df, .(STATION_NAME), function(z){
mod <- lm(CLDD_yr ~ year, data = z)
c(coef(mod), rsq = summary(mod)$r.squared
})
在尝试创建 table 统计信息时,我 运行 遇到了 summary.lm r.squared 值的问题。
首先,我从 csv 中读入了数据
df <- as.data.frame(read.csv("BCO.csv", header = TRUE, stringsAsFactors = FALSE))
df <- df[,2:4]
然后我开始关注趋势...
CLDD_trend <- ddply(df, .(STATION_NAME), function(z)coef(lm(CLDD_yr ~ year, data = z)))
这就是我 运行 遇到问题的地方...
CLDD_rsq <- ddply(df, .(STATION_NAME), summarise, rsq = summary(lm(CLDD_yr ~ year))$r.squared)
我收到这个错误...
Error: invalid term in model formula
这里是df的头部
> head(df)
STATION_NAME year CLDD_yr
1 ALBUQUERQUE FOOTHILLS NE NM US 1992 3341
2 ALBUQUERQUE FOOTHILLS NE NM US 1993 4443
3 ALBUQUERQUE FOOTHILLS NE NM US 1994 5319
4 ALBUQUERQUE FOOTHILLS NE NM US 1995 5070
5 ALBUQUERQUE FOOTHILLS NE NM US 1996 5338
6 ALBUQUERQUE FOOTHILLS NE NM US 1997 5105
和CLDD_trend的头
> head(CLDD_trend)
STATION_NAME (Intercept) year
1 ALBUQUERQUE FOOTHILLS NE NM US -185183.485 95.159091
2 ALBUQUERQUE INTERNATIONAL AIRPORT NM US -138428.871 73.121774
3 ALBUQUERQUE VLY NM US -138218.809 72.243478
4 PETROGLYPH NATIONAL MON NM US -95959.130 51.074086
5 SANDIA PARK NM US 7758.845 -3.439124
我的目标是向 CLDD_trend 添加一个新列,其中包含汇总函数 r.squared 部分的结果。
stat <- cbind(CLDD_trend[,1&3], CLDD_rsq$rsq)
你能看出我模型中的错误在哪里吗?我被难住了。
原来我与 dplyr 和 plyr 有某种冲突。
我通过
解决了这个问题detach()
library(plyr)
df <- as.data.frame(read.csv("BCO.csv", header = TRUE, stringsAsFactors = FALSE))
df <- df[,2:4]
CLDD_trend <- ddply(df, .(STATION_NAME), function(z)coef(lm(CLDD_yr ~ year, data = z)))
CLDD_rsq <- ddply(df, .(STATION_NAME), summarise, rsq = summary(lm(CLDD_yr ~ year))$r.squared)
stat <- cbind(CLDD_trend[,1&3], CLDD_rsq$rsq)
这是如何用一个运行
提取两个统计数据CLDD_trend <- ddply(df, .(STATION_NAME), function(z){
mod <- lm(CLDD_yr ~ year, data = z)
c(coef(mod), rsq = summary(mod)$r.squared
})