Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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 多因素分组数据框架的回归_R_Sorting_Statistics_Dataframe_Regression - Fatal编程技术网

R 多因素分组数据框架的回归

R 多因素分组数据框架的回归,r,sorting,statistics,dataframe,regression,R,Sorting,Statistics,Dataframe,Regression,我正在编写回归脚本。 我有一个data.frame,大约有130列,其中一列(我们称之为X列)需要对所有其他100个数值列进行回归 在计算回归之前,我需要按4个因素对数据进行分组:myDat$Recipe、myDat$Step、myDat$Stage、和myDat$Prod,同时仍保留为回归附加的其他~100列和行数据。然后我需要对每列~X列进行回归,并打印出带有列名的R^2值。这是我到目前为止尝试过的,但它变得过于复杂,我知道一定有更好的方法 rm(list=ls()) myDat <

我正在编写回归脚本。 我有一个data.frame,大约有130列,其中一列(我们称之为X列)需要对所有其他100个数值列进行回归

在计算回归之前,我需要按4个因素对数据进行分组:
myDat$Recipe
myDat$Step
myDat$Stage
、和
myDat$Prod
,同时仍保留为回归附加的其他~100列和行数据。然后我需要对每列~X列进行回归,并打印出带有列名的R^2值。这是我到目前为止尝试过的,但它变得过于复杂,我知道一定有更好的方法

 rm(list=ls())
 myDat <- read.csv(file="C:/Users/Documents/myDat.csv",              header=TRUE, sep=",")

for(j in myDat$Recipe)
{
  myDatj <- subset(myDat, myDat$Recipe == j) 
  for(k in myDatj$Step)
  {
    myDatk <- subset(myDatj, myDatj$Step == k) 
    for(i in myDatk$Stage)
    {
      myDati <- subset(myDatk, myDatk$Stage == i)
      for(m in myDati$Prod)
      {
        myDatm <- subset(myDati, myDati$Prod == m)
          if(is.numeric(myDatm[3,i]))  
          {     
          fit <- lm(myDatk[,i] ~ X, data=myDatm) 
          rsq <- summary(fit)$r.squared
            {
              writeLines(paste(rsq,i,"\n"))
           }  
         }
      }
    }
  }  
}      
rm(list=ls())

myDat您可以通过组合、和我的软件包来实现这一点(您可以使用
install.packages
安装它们)。首先,需要将所有数值列收集到一个列中:

library(dplyr)
library(tidyr)
tidied <- myDat %>%
    gather(column, value, -X, -Recipe, -Step, -Stage, -Prod)
库(dplyr)
图书馆(tidyr)
整理%
聚集(列、值、-X、-Recipe、-Step、-Stage、-Prod)
要了解它的作用,您可以仔细阅读。(这假设除X、配方、步骤、阶段和产品外的所有列都是数字,因此应在回归中预测。如果不是这样,则需要事先删除它们。如果需要更定制的解决方案,则需要生成问题的可复制示例)

然后执行每个回归,同时按列和四个分组变量分组

library(broom)

regressions <- tidied %>%
    group_by(column, Recipe, Step, Stage, Prod) %>%
    do(mod = lm(value ~ X))

glances <- regressions %>% glance(mod)
库(扫帚)
回归%
分组依据(列、配方、步骤、阶段、产品)%>%
do(mod=lm(值~X))
浏览百分比浏览(mod)
产生的
扫视
数据框将为列、配方、步骤、阶段和产品的每个组合有一行,以及包含每个模型的r平方的
r.squared
列。(它还将包含
adj.r.squared
,以及其他列,如F-test p-value:有关更多信息,请参阅)。运行
coefs%tidy(mod)
可能对您也很有用,因为它将从每次回归中获得系数估计值和p值


类似的用例在中有描述,在的第3.1节中也有介绍。

。您在使用浏览线时是否遇到过以下错误?“数据帧中的错误(r.squared=r.squared,adj.r.squared=adj.r.squared,:object‘fstatistic’not found)”在s3对象上进行了协调和整洁的工作,只是没有一瞥。@JacobOdom我没有遇到过这个问题。是否可能创建一个可复制的示例,并将其作为一个新问题问出来?请在你找到时打电话给我。刚刚发布了它!