Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R的面板分析中找到自变量的最佳adstock衰减因子?_R_Optimization_Panel_Regression - Fatal编程技术网

如何在R的面板分析中找到自变量的最佳adstock衰减因子?

如何在R的面板分析中找到自变量的最佳adstock衰减因子?,r,optimization,panel,regression,R,Optimization,Panel,Regression,我正在使用一个面板数据集(210个DMA的24个月数据)。我试图通过最小化固定效应模型的标准误差来优化自变量的adstock衰减因子 在这个特殊的例子中,我想得到一个衰减因子,它使模型“Mkt\u TRx\u norm=b0+b1*Mkt\u TRx\u norm\u prev+b2*SEM+Br\u act\u norm\u adstock”中adstock转换变量“SEM\u Br\u act\u norm”的SE最小化 到目前为止,我已经使用plm在panel formal中加载了数据集,

我正在使用一个面板数据集(210个DMA的24个月数据)。我试图通过最小化固定效应模型的标准误差来优化自变量的adstock衰减因子

在这个特殊的例子中,我想得到一个衰减因子,它使模型“Mkt\u TRx\u norm=b0+b1*Mkt\u TRx\u norm\u prev+b2*SEM+Br\u act\u norm\u adstock”中adstock转换变量“SEM\u Br\u act\u norm”的SE最小化

到目前为止,我已经使用plm在panel formal中加载了数据集,并创建了一个函数来生成adstock值。该函数还对adstock值运行固定效果模型,并返回SE。然后,我使用optimize()查找边界(0,1)内的最佳衰减值。当我的代码返回一个最优值时,我担心会出问题,因为它在所有其他变量上返回相同的最优值(接近1)

我附上了我的数据样本,以及代码的关键部分。如果有人能看看有什么问题,我将不胜感激

#设置面板数据结构
所有数据
# Set panel data structure

alldata <- plm.data (alldata, index = c("DMA", "Month_Num"))

alldata$var <- alldata$SEM_Br_act_norm +0

# Create 1 month time lag for TRx

alldata <- ddply( 
  alldata, .(DMA), transform,
  # This assumes that the data is sorted
  Mkt_TRx_norm_prev = c(NA,Mkt_TRx_norm[-length(Mkt_TRx_norm)]) 
)

# Create adstock function and obtain SE of regression

adstockreg <-function(decay, period, data_vector, pool_vector=0){  
  data_vector <-alldata$var
  pool_vector <- alldata$DMA
  data2<-data_vector
  l<-length(data_vector)
  #if no pool apply zero to vector
  if(length(pool_vector)==1)pool_vector<-rep(0,l)
  #outer loop: extract data to decay from observation i
  for( i in 1:l){
    x<-data_vector[i]
    #inner loop: apply decay onto following observations after i
    for(j in 1:min(period,l)){
      #constrain decay to same pool (if data is pooled)
      if( pool_vector[i]==pool_vector[min(i+j,l)]){data2[(i+j)]<- data2[(i+j)]+(x*(decay)^j)}
    }
  }
  #reduce length of edited data to equal length of initial data
  data2<-data2[1:l]

  #regression - excludes NA values
  alldata <- plm.data (alldata, index = c("DMA", "Month_Num"))
  var_fe <- plm(alldata$Mkt_TRx_norm ~ alldata$Mkt_TRx_norm_prev + data2, data = alldata , model = "within", na.action = na.exclude)
  se <- summary(var_fe)$coefficients["data2","Std. Error"]
  return(se)
}

# Optimize decay for adstock variable

result <- optimize(adstockreg, interval=c(0,1), period = 6)
print(result)