小编ags*_*udy的帖子

R中基于时间和日期的时间序列平均值

我有一个时间序列,我想每1小时自动执行一次平均值.我的数据包括温度和date_time(时间戳)
我不想要移动平均线,我想平均为1,2,3,4 ......,因为数据的频率通常是一天2分钟.

 temperature    date_time
1     -1.52 2007-09-29 00:00:08
2     -1.48 2007-09-29 00:02:08
3     -1.46 2007-09-29 00:04:08
4     -1.56 2007-09-29 00:06:08
5     -1.64 2007-09-29 00:08:08
6     -1.75 2007-09-29 00:10:08
7     -1.74 2007-09-29 00:12:08
8     -2.02 2007-09-29 00:14:08
9     -2.02 2007-09-29 00:16:08
10    -1.90 2007-09-29 00:18:08
11    -1.66 2007-09-29 00:20:08
12    -1.80 2007-09-29 00:22:08
13    -1.68 2007-09-29 00:24:08
14    -1.81 2007-09-29 00:26:08
15    -1.77 2007-09-29 00:28:08
16    -1.83 2007-09-29 00:30:08
17    -1.84 2007-09-29 00:32:08
18    -1.93 2007-09-29 00:34:08
19    -1.62 2007-09-29 …
Run Code Online (Sandbox Code Playgroud)

average r time-series xts

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

在r中通过组自己的功能进行优化

我想在我自己的函数上按组应用优化:

这是一个可重复的数据集:

data <- data.frame(ID=c(1,1,1,2,2,3,3),C=c(1,1,1,2,2,3,4),
                   Lambda=c(0.5),s=c(1:7),   
                   sigma_S=c(0.5,0.4,0.3,0.7,0.4,0.5,0.8),
                   d=c(20,30,40,50,60,70,80), 
                   sigma_B=0.3,t=5,Rec=0.5,r=0.05)
Run Code Online (Sandbox Code Playgroud)

我的函数定义如下(函数很简单,我只想了解方法):

  TestMSE <- function(LR)
  {
    d <- data
    D <- LR + d$s
    mse(d$C, D)   # mse is from the Metrics Package
   }

optimize(TestMSE,lower = 0.1, upper =1.5)
Run Code Online (Sandbox Code Playgroud)

我尝试使用ddply函数:

test <-  ddply(data,"ID",summarise, optimize(TestMSE,lower = 0.1, upper =1.5))
Run Code Online (Sandbox Code Playgroud)

但是应用ddply函数我收到了所有组的相同解决方案,尽管子组存在差异.

谢谢.

optimization r plyr

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

在R中使用optim

我正在尝试使用R中的optim函数来优化模型中的三个参数,但无法弄清楚如何使用"优化"函数来搜索一系列值.我尝试使用for循环来做这个,这是我尝试中最成功的但是由于某种原因似乎停在355的值,理想情况下我想尝试更高的组合.除此之外,我尝试编写多次调用optim的函数,尝试向量化并尝试将列表值放入optim中的"par"参数中,但是所有这些尝试都产生了错误消息

"unable to evaluate at initial parameters".
Run Code Online (Sandbox Code Playgroud)

很长的任何人都知道如何使用optim函数搜索参数的一系列值,因为"优化"函数会???

任何帮助或指示将非常感谢!!!

我的代码看起来像:它是相应比例的三个最大似然函数,然后是三次尝试使用optim!

rm(list=ls())

load('Dat.RData')

mean(dat)
var(dat)


loglike<-function(par,dat,scale)
{ ptp<-dat[1:length(dat)-1]
  ptp1<-dat[2:length(dat)]

  r<-par['r']
  k<-par['k']
  sigma<-par['sigma']

  if(scale=='log')
  {
    return(sum(dnorm(log(ptp1)-log(ptp)*exp(r-(ptp/k)),mean=0,sd=sigma,log=T)))
  }

  if (scale=='sqrt')
  {
    return(sum(dnorm(sqrt(ptp1)-sqrt(ptp)*exp(r-(ptp/k)),mean=0,sd=sigma,log=T)))
  }

  if (scale=='linear')
  {
    return(sum(dnorm(ptp1-ptp*exp(r-(ptp/k)),mean=0,sd=sigma,log=T)))
  }
}

sqrts<-c()
for(i in 1:4000){
  sqrts[i]<-optim(par=c(r=i,k=i,sigma=i),fn=loglike,dat=dat,scale='sqrt',method='Nelder-Mead',control=list(fnscale=-1))

}

logs<-c()
for(i in 1:4000){
  logs[i]<-optim(par=c(r=i,k=i,sigma=i),fn=loglike,dat=dat,scale='log',method='Nelder-Mead',control=list(fnscale=-1))

}

lins<-c()
for(i in 1:4000){
  lins[i]<-optim(par=c(r=i,k=i,sigma=i),fn=loglike,dat=dat,scale='linear',method='Nelder-Mead',control=list(fnscale=-1))

}
Run Code Online (Sandbox Code Playgroud)

非常感谢!!

r

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

从大向量中删除字符串列表的有效方法

我正在使用visual studio 2012(windows),我正在尝试编写一个高效的c ++函数来从一个大的字符串向量中删除一些单词.

我正在使用stl算法.我是一名c ++初学者,所以我不确定这是最好的方法.这就是我所做的:

#include <algorithm>
#include <unordered_set>
using std::vector;

vector<std::string> stripWords(vector<std::string>& input, 
                               std::tr1::unordered_set<std::string>& toRemove){ 
     input.erase(
         remove_if(input.begin(), input.end(), 
                     [&toRemove](std::string x) -> bool {
                         return toRemove.find(x) != toRemove.end();
                     }));
     return input;
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,它不会遍历所有输入向量.

这是我如何测试我的代码:

vector<std::string>  in_tokens;
in_tokens.push_back("removeme");
in_tokens.push_back("keep");
in_tokens.push_back("removeme1");
in_tokens.push_back("removeme1");
std::tr1::unordered_set<std::string> words;
words.insert("removeme");
words.insert("removeme1");
stripWords(in_tokens,words);
Run Code Online (Sandbox Code Playgroud)

c++ stl

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

计算固定间隔中可变数量坐标的值的平均值

我想计算固定间隔(例如2)的坐标(第1列)的值(第2列)的平均值.但是,具有值的坐标的数量是可变的.我也想尝试不同大小的窗户.

数据示例(标签分隔)

2  3
2  4
2  5
3  1
4  2
5  1
5  2
6  8
Run Code Online (Sandbox Code Playgroud)

窗口大小为2的所需输出(我们每移动两个X值)

x  mean  window
2  3.25  2-3
3  3.25  2-3
4  1.66  4-5
5  1.66  4-5
6  8     6-7
Run Code Online (Sandbox Code Playgroud)

感谢您的时间和帮助!

aggregate r

-2
推荐指数
1
解决办法
688
查看次数

标签 统计

r ×4

aggregate ×1

average ×1

c++ ×1

optimization ×1

plyr ×1

stl ×1

time-series ×1

xts ×1