相同的 R 代码不适用于 2 个不同的 .csv 文件但具有相同的数据结构

Same R code not working with 2 different .csv files but same data structure

您好,我有两段代码,它们在做同样的事情,一段是使用 R 附带的数据集,另一段是我创建的 .csv 文件,除了更多的列外,代码没有任何变化在具有不同名称的 .csv 文件上,但由于某种原因我得到了错误的输出

此代码的 csv 文件位于此处 https://github.com/juandavidlozano/Data_1/blob/main/high_northell.csv

这是第一个代码

library(plyr)
library(readr)
library(dplyr)
library(caret)
library(ggplot2)
library(repr)

dat <- economics

drops <- c("date")
dat <- dat[ , !(names(dat) %in% drops)]


cols = c('pce', 'pop', 'psavert', 'uempmed')

pre_proc_val <- preProcess(dat[,cols], method = c("center", "scale"))


dat[,cols] = predict(pre_proc_val, dat[,cols])




###### Linear Regression


number_days = 10

dat <- as.data.frame(dat)
new_cols <- c('Intercept', paste0(cols, '_predict'))
dat[new_cols] <- NA

inds <- nrow(dat) - number_days




dat[(number_days+1):nrow(dat), new_cols] <- do.call(rbind, lapply(seq(inds), function(x) {
  lr = lm(unemploy ~ uempmed + psavert + pop + pce, data = dat[x:(x + number_days - 1), ])
  t(lr$coefficients)
}))

dat 数据框看起来像这样

前 10 行有一些 NA,这是因为变量 number_days 它使前 X 行留空,然后用线性回归模型的系数填充它的最后 X 天数据等等。

这个数据框是正确的,所有列都有值。

第二个密码就是这个

library(plyr)
library(readr)
library(dplyr)
library(caret)
library(ggplot2)
library(repr)

dat<-read.csv("high_northell.csv", header = TRUE, stringsAsFactors=FALSE)

drops <- c("date")
dat <- dat[ , !(names(dat) %in% drops)]


cols = c("state_covid_death","kantar_state_tv_daily","VIX", "interest_urgent_care","CPI","SPY",                       
         "kantar_state_digital_daily", "Flu_indicator","covid_cases",               
         "Search.Cost","Display.Cost")

pre_proc_val <- preProcess(dat[,cols], method = c("center", "scale"))


dat[,cols] = predict(pre_proc_val, dat[,cols])




###### Linear Regression

number_days = 10

dat <- as.data.frame(dat)
new_cols <- c('Intercept', paste0(cols, '_predict'))
dat[new_cols] <- NA

inds <- nrow(dat) - number_days

dat[(number_days+1):nrow(dat), new_cols] <- do.call(rbind, lapply(seq(inds), function(x) {
  lr = lm(Total.Visits~ state_covid_death + kantar_state_tv_daily + VIX+    interest_urgent_care+   CPI+    SPY +kantar_state_digital_daily+    Flu_indicator   + covid_cases+  Search.Cost+    Display.Cost, data = dat[x:(x + number_days - 1), ])
  t(lr$coefficients)
}))

如您所见,代码相同,但由于某些原因,在这种情况下 dat 数据框有些列填充了 NA,有些列填充了 NA 和数据,该数据框应该看起来像顶部的,除前 X 行外的所有列都应填写。

这是第二个代码的图片数据数据帧

任何有关导致此问题的原因的帮助?

由于奇异性,线性回归未能定义一些变量。

对于给定的 10 天子集,这些变量在所有天都是恒定的,因此这些变量是完全多重共线性的,并且 X'X 矩阵是奇异的。