Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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
在model.frame.default(Terms,newdata,na.action=na.action,xlev=object$xlevels)中不断获取错误:因子sub有新的级别_R_Regression - Fatal编程技术网

在model.frame.default(Terms,newdata,na.action=na.action,xlev=object$xlevels)中不断获取错误:因子sub有新的级别

在model.frame.default(Terms,newdata,na.action=na.action,xlev=object$xlevels)中不断获取错误:因子sub有新的级别,r,regression,R,Regression,我试图根据人力资源数据做一个线性回归。我不断得到错误,我的因子subc有了新的水平 我是超级新手,所以如果我犯了任何明显的错误,我道歉!提前谢谢你,我真的迷路了,绝望了 这是我用来这样做的代码。Dat是我的数据帧名称,commons和techs是指类似于CloseFriendsG1的其他列 commons<-grep("^C",rownames(dat),value=TRUE) type_q=rep("Common",dim(dat)[1]) type_q[techs]="Technica

我试图根据人力资源数据做一个线性回归。我不断得到错误,我的因子subc有了新的水平

我是超级新手,所以如果我犯了任何明显的错误,我道歉!提前谢谢你,我真的迷路了,绝望了

这是我用来这样做的代码。Dat是我的数据帧名称,commons和techs是指类似于CloseFriendsG1的其他列

commons<-grep("^C",rownames(dat),value=TRUE)
type_q=rep("Common",dim(dat)[1])
type_q[techs]="Technical"
dat$totals<-rowSums(dat[,techs])+rowSums(dat[,commons])
head(dat)
set.seed(2016)
Train=sample(1:156,110,replace=FALSE)
ModTrain<-lm(totals~.,data=dat[Train,])
ModTest<-predict(ModTrain,newdata=dat[-Train,])``


commons添加一点解释,您的列
id
很可能是一个唯一的条目,当您执行
totals~。
时,您将针对除
totals
之外的所有列进行回归。如果每个
id
因子只有一个观察值,则无法对其进行估计,且回归为。。胡说八道:

da = data.frame(id=factor(1:10),x=runif(10),y=runif(10),z=runif(10))
trn = 1:5
mod = lm(y ~ .,data=da[trn,])

summary(mod)

Call:
lm(formula = y ~ ., data = da[trn, ])

Residuals:
ALL 5 residuals are 0: no residual degrees of freedom!

Coefficients: (2 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.48208         NA      NA       NA
id2          0.11749         NA      NA       NA
id3          0.01146         NA      NA       NA
id4         -0.29586         NA      NA       NA
id5          0.34529         NA      NA       NA
x                 NA         NA      NA       NA
z                 NA         NA      NA       NA
您可以在进行模型拟合时将其删除:

mod = lm(y ~ .,data=da[trn,-1])
predict(mod,da[-trn,])
        6         7         8         9        10 
0.2992070 1.2727160 0.7789787 0.6585381 0.4227041 

例如,使用
lm(totals~,data=dat[Train,-1])
lm(totals~,data=dat[Train,!grepl(“subc”,colname(dat)))
。id是否在用于预测的data.frame中并不重要。

您可以将
sub
作为一个预测器来实现。从数据框中删除
sub