如何处理线性模型的数据中重复的名称?

问题描述 投票:0回答:1

我尝试建立线性回归模型,但一直得到错误 "Error in terms. formula( formula, data = data) : duplicated name 'Adjusted' in data frame using '.'。

data <- c("IMOEX.ME","TGKA.ME", "TGKD.ME", "TGKB.ME", "FEES.ME", "VTBR.ME", "TGKDP.ME", "HYDR.ME", "TGKN.ME", "RSTI.ME", "MRKV.ME", "IRAO.ME", "OGKB.ME", "MRKP.ME", "TGKBP.ME", "UPRO.ME", "CBOM.ME", "SBER.ME", "ENRU.ME", "SNGS.ME", "MRKZ.ME", "TTLK.ME", "AFKS.ME", "MRKC.ME", "GAZP.ME", "RGSS.ME", "SNGSP.ME", "MOEX.ME", "USBN.ME", "ALRS.ME", "MAGN.ME", "MSNG.ME", "ROSN.ME", "RUAL.ME", "DASB.ME", "GTLC.ME", "KUZB.ME", "RSTIP.ME", "NLMK.ME", "MRKY.ME", "AFLT.ME", "MRKU.ME", "SIBG.ME", "SBERP.ME", "APTK.ME", "ACKO.ME", "GRNT.ME", "TATN.ME", "MRKS.ME", "MTLR.ME", "MTSS.ME", "RASP.ME", "YKEN.ME", "ODVA.ME", "UNAC.ME", "RTKM.ME", "DSKY.ME", "LIFE.ME", "RUSP.ME", "NMTP.ME", "LKOH.ME", "MTLRP.ME", "MSRS.ME", "RBCM.ME", "NVTK.ME", "NKNCP.ME", "LPSB.ME", "YKENP.ME", "POLY.ME", "SIBN.ME", "ISKJ.ME", "KCHE.ME", "TRMK.ME", "FESH.ME", "DIOD.ME", "CHMF.ME", "RTSBP.ME", "TORSP.ME", "YNDX.ME", "TATNP.ME", "TCSG.ME", "RTSB.ME", "AMEZ.ME", "MSST.ME", "SAREP.ME", "TASBP.ME", "SARE.ME", "KRKOP.ME", "PRFN.ME", "MGNT.ME", "KZOSP.ME", "SELG.ME", "MRSB.ME", "RLMN.ME", "TORS.ME", "MOBB.ME", "SAGO.ME", "CNTLP.ME", "STSB.ME", "DVEC.ME", "WTCMP.ME", "BSPB.ME", "RTKMP.ME", "OBUV.ME", "WTCM.ME", "GMKN.ME", "PLZL.ME", "STSBP.ME", "RUGR.ME", "MAGEP.ME", "LSRG.ME", "ASSB.ME", "LNTA.ME", "NKNC.ME", "FIVE.ME", "RLMNP.ME", "KTSBP.ME", "MVID.ME", "KRSBP.ME", "UTAR.ME", "ZVEZ.ME", "SAGOP.ME", "PIKK.ME", "AGRO.ME", "MRKK.ME", "ROLO.ME", "YAKG.ME", "HIMCP.ME", "BANEP.ME", "PHOR.ME", "MAGE.ME", "KRSB.ME", "TANL.ME", "TUZA.ME", "KMAZ.ME", "VLHZ.ME", "GTRK.ME", "KLSB.ME", "KZOS.ME", "QIWI.ME", "VGSBP.ME", "CNTL.ME", "IRGZ.ME", "BLNG.ME", "IRKT.ME", "KTSB.ME", "LVHK.ME", "BISVP.ME", "AQUA.ME", "JNOS.ME", "KCHEP.ME", "VGSB.ME", "SELGP.ME", "ARSA.ME", "TUCH.ME", "RZSB.ME", "KAZT.ME", "SFIN.ME", "MSTT.ME", "PMSBP.ME", "RNFT.ME", "NKSH.ME", "BANE.ME", "TASB.ME", "YRSBP.ME", "SVAV.ME", "PRTK.ME", "GCHE.ME", "JNOSP.ME", "MGTSP.ME", "ABRD.ME", "AKRN.ME", "RUSI.ME", "PMSB.ME", "KGKCP.ME", "MISBP.ME", "TRNFP.ME", "GEMA.ME", "KMEZ.ME", "ROSB.ME", "KGKC.ME", "VSYD.ME", "KAZTP.ME", "EELT.ME", "VRSBP.ME", "ALBK.ME", "NFAZ.ME", "AVAN.ME", "ROST.ME", "RAVN.ME", "VSYDP.ME", "KRKNP.ME", "VRSB.ME", "NSVZ.ME", "NKHP.ME", "CHEP.ME", "UWGN.ME", "BELU.ME", "VJGZP.ME", "NAUK.ME", "IGSTP.ME", "VZRZP.ME", "KROT.ME", "YRSB.ME", "VJGZ.ME", "LNZL.ME", "CHGZ.ME", "KBTK.ME", "MISB.ME", "GAZA.ME", "BRZL.ME", "LNZLP.ME", "VSMO.ME", "KUBE.ME", "MFGSP.ME", "ELTZ.ME", "RDRB.ME", "GAZAP.ME", "UKUZ.ME", "KROTP.ME", "TRCN.ME", "IGST.ME", "ZILL.ME", "MGTS.ME", "KBSB.ME", "HALS.ME", "PAZA.ME", "NNSBP.ME", "UNKL.ME", "MFGS.ME", "KRKN.ME", "CHMK.ME", "URKZ.ME", "SZPR.ME", "UCSS.ME", "ALNU.ME", "RTGZ.ME", "MGNZ.ME", "CHKZ.ME", "NNSB.ME", "OMZZP.ME", "DZRD.ME", "DZRDP.ME", "TNSE.ME", "RKKE.ME", "KOGK.ME", "PRMB.ME")

Price <- list()
for(ticker in data){ 
  Price[[ticker]] <- diff(na.approx(get.hist.quote(instrument = ticker, start = "2019-02-01", end = "2020-02-01", quote = "Adj", compression = "d", retclass = "ts")))
}

model <- lm(IMOEX.ME ~ ., data = Price)

Error in terms.formula(formula, data = data) : duplicated name 'Adjusted' in data frame using '.'

我希望独立变量的名称是在 data.

谢谢你

r linear-regression
1个回答
0
投票

价格 "是一个 list 的单列。 我们可能需要将其转换为单个数据集,然后使用 lm

library(zoo)
library(tseries)
out <- do.call(cbind, Price)
lm(IMOEX.ME ~ ., out)

#Call:
#lm(formula = IMOEX.ME ~ ., data = out)

#Coefficients:
#(Intercept)      TGKA.ME      TGKD.ME      TGKB.ME      FEES.ME      VTBR.ME     TGKDP.ME      HYDR.ME      TGKN.ME      RSTI.ME  
#  6.975e+00    4.925e+03   -9.209e+04    3.761e+05    5.784e+02   -2.384e+03   -9.942e+04    4.875e+02   -2.689e+05   -1.005e+02  
#    MRKV.ME      IRAO.ME      OGKB.ME      MRKP.ME     TGKBP.ME      UPRO.ME      CBOM.ME      SBER.ME      ENRU.ME      SNGS.ME  
# -2.493e+04    1.339e+02    5.340e+01    4.831e+03   -1.558e+05   -2.509e+02    1.028e+02    5.262e+00    3.061e+02    3.244e-01  
#    MRKZ.ME      TTLK.ME      AFKS.ME      MRKC.ME      GAZP.ME      RGSS.ME     SNGSP.ME      MOEX.ME      USBN.ME      ALRS.ME  
# -1.375e+04   -1.347e+02    1.739e+01    1.548e+01    6.688e+00   -1.414e+03   -1.506e+01   -3.463e+00    1.642e+03   -9.883e+00  
#    MAGN.ME      MSNG.ME      ROSN.ME      RUAL.ME      DASB.ME      GTLC.ME      KUZB.ME     RSTIP.ME      NLMK.ME      MRKY.ME  
#  8.915e+00    8.698e+01    8.998e-01   -7.661e+00   -1.385e+03   -1.485e+03    4.157e+03   -9.878e+01    2.705e+00   -1.063e+03  
#    AFLT.ME      MRKU.ME      SIBG.ME     SBERP.ME      APTK.ME      ACKO.ME      GRNT.ME      TATN.ME      MRKS.ME      MTLR.ME  
#  1.179e+01    4.604e+03    9.900e+02   -4.931e+00   -7.929e+01    4.086e+01   -1.121e+00    6.132e-01    7.561e+02    1.509e+00  
#    MTSS.ME      RASP.ME      YKEN.ME      ODVA.ME      UNAC.ME      RTKM#.ME      DSKY.ME      LIFE.ME      RUSP.ME      NMTP.ME  
# -7.056e+00    3.739e-01    1.065e+03    6.917e+02    1.226e+03   -6.642e+00    6.437e+00   -8.723e+00    5.490e+02   -6.122e+01  
 #   LKOH.ME     MTLRP.ME      MSRS.ME      RBCM.ME      NVTK.ME     NKNCP.ME      LPSB.ME     YKENP.ME      POLY.ME      SIBN.ME  
 # ...

0
投票

通过添加以下内容解决问题 colnames(Price[[ticker]]) <- NULLif 循环。

maindata1 <- c("IMOEX.ME","TGKA.ME", "TGKD.ME", "TGKB.ME", "FEES.ME", "VTBR.ME", "TGKDP.ME", "HYDR.ME", "TGKN.ME", "RSTI.ME", "MRKV.ME", "IRAO.ME", "OGKB.ME", "MRKP.ME", "TGKBP.ME", "UPRO.ME", "CBOM.ME", "SBER.ME", "ENRU.ME", "SNGS.ME", "MRKZ.ME", "TTLK.ME", "AFKS.ME", "MRKC.ME", "GAZP.ME", "RGSS.ME", "SNGSP.ME", "MOEX.ME", "USBN.ME", "ALRS.ME", "MAGN.ME", "MSNG.ME", "ROSN.ME", "RUAL.ME", "DASB.ME", "GTLC.ME", "KUZB.ME", "RSTIP.ME", "NLMK.ME", "MRKY.ME", "AFLT.ME", "MRKU.ME", "SIBG.ME", "SBERP.ME", "APTK.ME", "ACKO.ME", "GRNT.ME", "TATN.ME", "MRKS.ME", "MTLR.ME", "MTSS.ME", "RASP.ME", "YKEN.ME", "ODVA.ME", "UNAC.ME", "RTKM.ME", "DSKY.ME", "LIFE.ME", "RUSP.ME", "NMTP.ME", "LKOH.ME", "MTLRP.ME", "MSRS.ME", "RBCM.ME", "NVTK.ME", "NKNCP.ME", "LPSB.ME", "YKENP.ME", "POLY.ME", "SIBN.ME", "ISKJ.ME", "KCHE.ME", "TRMK.ME", "FESH.ME", "DIOD.ME", "CHMF.ME", "RTSBP.ME", "TORSP.ME", "YNDX.ME", "TATNP.ME", "TCSG.ME", "RTSB.ME", "AMEZ.ME", "MSST.ME", "SAREP.ME", "TASBP.ME", "SARE.ME", "KRKOP.ME", "PRFN.ME", "MGNT.ME", "KZOSP.ME", "SELG.ME", "MRSB.ME", "RLMN.ME", "TORS.ME", "MOBB.ME", "SAGO.ME", "CNTLP.ME", "STSB.ME", "DVEC.ME", "WTCMP.ME", "BSPB.ME", "RTKMP.ME", "OBUV.ME", "WTCM.ME", "GMKN.ME", "PLZL.ME", "STSBP.ME", "RUGR.ME", "MAGEP.ME", "LSRG.ME", "ASSB.ME", "LNTA.ME", "NKNC.ME", "FIVE.ME", "RLMNP.ME", "KTSBP.ME", "MVID.ME", "KRSBP.ME", "UTAR.ME", "ZVEZ.ME", "SAGOP.ME", "PIKK.ME", "AGRO.ME", "MRKK.ME", "ROLO.ME", "YAKG.ME", "HIMCP.ME", "BANEP.ME", "PHOR.ME", "MAGE.ME", "KRSB.ME", "TANL.ME", "TUZA.ME", "KMAZ.ME", "VLHZ.ME", "GTRK.ME", "KLSB.ME", "KZOS.ME", "QIWI.ME", "VGSBP.ME", "CNTL.ME", "IRGZ.ME", "BLNG.ME", "IRKT.ME", "KTSB.ME", "LVHK.ME", "BISVP.ME", "AQUA.ME", "JNOS.ME", "KCHEP.ME", "VGSB.ME", "SELGP.ME", "ARSA.ME", "TUCH.ME", "RZSB.ME", "KAZT.ME", "SFIN.ME", "MSTT.ME", "PMSBP.ME", "RNFT.ME", "NKSH.ME", "BANE.ME", "TASB.ME", "YRSBP.ME", "SVAV.ME", "PRTK.ME", "GCHE.ME", "JNOSP.ME", "MGTSP.ME", "ABRD.ME", "AKRN.ME", "RUSI.ME", "PMSB.ME", "KGKCP.ME", "MISBP.ME", "TRNFP.ME", "GEMA.ME", "KMEZ.ME", "ROSB.ME", "KGKC.ME", "VSYD.ME", "KAZTP.ME", "EELT.ME", "VRSBP.ME", "ALBK.ME", "NFAZ.ME", "AVAN.ME", "ROST.ME", "RAVN.ME", "VSYDP.ME", "KRKNP.ME", "VRSB.ME", "NSVZ.ME", "NKHP.ME", "CHEP.ME", "UWGN.ME", "BELU.ME", "VJGZP.ME", "NAUK.ME", "IGSTP.ME", "VZRZP.ME", "KROT.ME", "YRSB.ME", "VJGZ.ME", "LNZL.ME", "CHGZ.ME", "KBTK.ME", "MISB.ME", "GAZA.ME", "BRZL.ME", "LNZLP.ME", "VSMO.ME", "KUBE.ME", "MFGSP.ME", "ELTZ.ME", "RDRB.ME", "GAZAP.ME", "UKUZ.ME", "KROTP.ME", "TRCN.ME", "IGST.ME", "ZILL.ME", "MGTS.ME", "KBSB.ME", "HALS.ME", "PAZA.ME", "NNSBP.ME", "UNKL.ME", "MFGS.ME", "KRKN.ME", "CHMK.ME", "URKZ.ME", "SZPR.ME", "UCSS.ME", "ALNU.ME", "RTGZ.ME", "MGNZ.ME", "CHKZ.ME", "NNSB.ME", "OMZZP.ME", "DZRD.ME", "DZRDP.ME", "TNSE.ME", "RKKE.ME", "KOGK.ME", "PRMB.ME")

Price <- list()
for(ticker in maindata1){ 
  Price[[ticker]] <- (diff(na.spline(get.hist.quote(instrument = ticker, start = "2019-01-01", end = "2020-02-21", quote = "Adj", compression = "d", retclass = "ts"))))
  colnames(Price[[ticker]]) <- NULL
  }

© www.soinside.com 2019 - 2024. All rights reserved.