2016-04-18 8 views
1

Beim Versuch, eine Tabelle der Statistiken zu erstellen, stoße ich auf ein Problem mit dem Wert summary.lm r.squared.Zusammenfassen und lm Modellfehler

erste, las ich in meiner Daten aus einer CSV-

df <- as.data.frame(read.csv("BCO.csv", header = TRUE, stringsAsFactors = FALSE)) 
df <- df[,2:4] 

dann begann ich auf die Trends suchen ...

CLDD_trend <- ddply(df, .(STATION_NAME), function(z)coef(lm(CLDD_yr ~ year, data = z))) 

hier ist, wo ich in ein Problem laufen lasse ...

CLDD_rsq <- ddply(df, .(STATION_NAME), summarise, rsq = summary(lm(CLDD_yr ~ year))$r.squared) 

ich diese Störung erhalte ...

Error: invalid term in model formula 

hier ist der Kopf von 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 

und der Leiter der 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 

mein Ziel, eine neue Spalte CLDD_trend anhängen, die die Ergebnisse des r.squared Teil enthält der Zusammenfassungsfunktion.

stat <- cbind(CLDD_trend[,1&3], CLDD_rsq$rsq) 

Können Sie sehen, wo der Fehler in meinem Modell ist? Ich bin ratlos.

+1

ich es ist, weil Sie die Daten an den Film nicht liefern. Sie könnten sowohl den coef als auch den rsq vom selben ddply run bekommen, wenn Sie das wollten. Auch read.csv gibt ein data.frame zurück, so dass Sie as.data.frame nicht ausführen müssen. –

+0

Die Daten werden an lm genauso geliefert wie in der vorherigen Zeile. Vielleicht bin ich verwirrt darüber, was Sie meinen. Wie würden Sie die ddply-Läufe kombinieren? – c0ba1t

Antwort

1

Es stellte sich heraus, dass ich einen Konflikt mit dplyr und plyr hatte.

Ich löste das Problem, indem

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) 
1

Dies ist, wie die beiden Statistiken mit einem einzigen Durchlauf denken zu extrahieren

CLDD_trend <- ddply(df, .(STATION_NAME), function(z){ 
    mod <- lm(CLDD_yr ~ year, data = z) 
    c(coef(mod), rsq = summary(mod)$r.squared 
})