#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