如何解决相同的 R 代码不适用于 2 个不同的 .csv 文件,但数据结构相同
嗨,我有两段代码,它们在做同样的事情,一个是使用 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])
###### Linear Regression
number_days = 10
dat <- as.data.frame(dat)
new_cols <- c('Intercept','_predict'))
dat[new_cols] <- NA
inds <- nrow(dat) - number_days
dat[(number_days+1):nrow(dat),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,])
t(lr$coefficients)
}))
如您所见,代码相同,但在这种情况下 dat
数据框出于某种原因有些列填充了 NA,有些列填充了 NA 和此处和那里的数据,此数据框应如下所示在顶部,应填充除前 X 行之外的所有列。
这是第二个代码的图片数据框
对导致此问题的原因有任何帮助吗?
解决方法
由于奇异性,线性回归无法定义一些变量。
对于给定的 10 天子集,这些变量在所有日子里都是常数,因此这些变量是完全多重共线的,并且 X'X 矩阵是奇异的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。