Lowess功能和plyr

时间:2014-02-26 00:32:08

标签: r plyr curve-fitting

我正在处理我创建的数据框,并希望将其扩展为包含一个低合适的数据框。我已经能够将lowess曲线添加到我的数据图以及lm拟合但我无法弄清楚如何将lowess值添加到我的数据框。 请原谅我的代码的丑陋,因为我通过蛮力做所有事情(即赞赏简化/效率的建议。)我道歉,因为我不允许发布图像。我有一个lm拟合的散点图,产生一个.7897的R ^ 2和一个低值曲线,它很好地复制了lm拟合的qqplot。当我获得“10”的声望时,我会将其发布用于启发/易于可视化:

##Read in Data
OPM.df <- read.csv("On Peak Mod TMAX.csv", header = TRUE)
 ## Data frame 2008-2012
OPM5.df <- OPM.df[4606:6140,]
##Verify headings
OPM5.df[1,]
SummerOPM5.df <- OPM5.df[month(OPM5.df$Date) >= 6 & month(OPM5.df$Date) <= 9, ]
##@Fit Linear Regression to Data
fitsummerX <- lm(SummerOPM5.df$MaxLoad~SummerOPM5.df$TMAX)
summary(fitsummerX)
##Plot data 
windows()
plot(SummerOPM5.df$TMAX, SummerOPM5.df$MaxLoad, main="Linear Regression Adjusted R-     squared: 0.7897",)
## Add fit lines
abline(fitsummerX, col="red") # regression line (y~x) 
lines(lowess(SummerOPM5.df$TMAX,SummerOPM5.df$MaxLoad), col="blue") # lowess line (x,y)

## plyr augmentation of df
SummerOPM5.df <- ddply(SummerOPM5.df, .(Date, MaxLoad, TMAX, OnPeakTotal), transform,
    Lowess = (lowess(TMAX,MaxLoad)$y))
##Verify headings and values
SummerOPM5.df [1:5,]

这给出了以下内容:

Date        MaxLoad  TMAX OnPeakTotal Lowess
1 2008-06-02    2880 214.0       43307   2880
2 2008-06-03    2860 197.0       43166   2860
3 2008-06-04    2787 172.5       42088   2787
4 2008-06-05    2902 216.5       43333   2902
5 2008-06-06    3078 275.0       45325   3078

Lowess值与MaxLoad

相同

如果我分开运行低位:

Lowess = (lowess(SummerOPM5.df$TMAX,SummerOPM5.df$MaxLoad))

Lowess$y[1:5]

我明白了:

[1] 2522.221 2569.523 2603.625 2622.795 2622.795

矢量按排名顺序排列。 。 我不确定它是否保留了序列,否则我不确定如何将其与我数据框的相应行相符。

建议?

0 个答案:

没有答案