Предоставляет ли R возможность построения таблицы anova, разбивая ее по управляющей переменной?

#r #summary

#r #Краткие сведения

Вопрос:

Я новичок в R и DataScience, поэтому мне нужна ваша помощь в довольно простом вопросе.

Я пытаюсь настроить таблицу anova для приведенной ниже регрессии:

 glm(car1~lnBTA:industry prod:industry BETA:industry ROA:industry age:industry, family = binomial(link = "logit"), data = df2)

 

Как вы можете видеть, есть управляющая переменная «industry», когда я запускаю summary(), я получил результат, который выглядит так:

 Coefficients:
                         Estimate Std. Error z value Pr(>|z|)   
(Intercept)              3.335031   1.819230   1.833  0.06677 . 
lnBTA:industrybanking   -0.167698   0.134638  -1.246  0.21293   
lnBTA:industryinsurance  0.231744   0.345148   0.671  0.50194   
industrybanking:prod    -0.810295   1.765389  -0.459  0.64624   
industryinsurance:prod   0.623879   2.939748   0.212  0.83193   
industrybanking:BETA    -0.576087   0.606819  -0.949  0.34244   
industryinsurance:BETA  -4.389630   1.455596  -3.016  0.00256 **
industrybanking:ROA      0.003612   0.040308   0.090  0.92860   
industryinsurance:ROA   -0.158213   0.089857  -1.761  0.07829 . 
industrybanking:age     -0.002211   0.003730  -0.593  0.55330   
industryinsurance:age   -0.015225   0.014741  -1.033  0.30169
 

Я хотел бы увидеть таблицу anova, в которой есть 5 строк для переменных и 8 столбцов для результатов, по 4 для каждой отрасли. Как я могу это получить?

Комментарии:

1. Не могли бы вы скопировать и вставить желаемый результат в вопрос? Также включите примеры данных для работы. Вы можете использовать dput для предоставления выборочных данных.

Ответ №1:

Предоставляет ли R возможность построения таблицы anova, разбивая ее по управляющей переменной?

Да, это так.

Как я могу это получить (5 строк для переменных и 8 столбцов для результатов, по 4 для каждой отрасли)?

Вы можете получить это так:

 library(stringr)
mod <- glm(car1~lnBTA:industry prod:industry BETA:industry ROA:industry age:industry, family = binomial(link = "logit"), data = df2)
allres <- as.data.frame(summary(mod)$coefficients)
allres$names1 <- as.character(rownames(allres))
allres$names1[1] <- "Intercept:Intercept"
allres$names1[2] <- "industrybanking:lnBTA"   
allres$names1[3] <- "industryinsurance:lnBTA"

allres$names2 <- str_split_fixed(allres$names1, ":", 2)[,1]
allres$names3 <- str_split_fixed(allres$names1, ":", 2)[,2]
rownames(allres) <- NULL

pt1res <- allres[1,]     # new dataframe with intercept - if you need it for something later
pt2res <- allres[c(2,4,6,8,10),] # new dataframe with results for industrybanking   
pt3res <- allres[c(3,5,7,9,11),] # new dataframe with results for industryinsurance   


newres <- merge(pt2res, pt3res, by="names3") # merging the two dataframes
newres