Я запустил регрессионную модель в R, используя функцию lm. Результирующая таблица ANOVA дает мне F-значение для каждого коэффициента (что на самом деле не имеет смысла для меня). То, что я хотел бы знать, является t-статом для каждого коэффициента и его соответствующего значения p. Как мне это получить? Сохраняется ли она функцией или требует дополнительных вычислений?

Вот код и вывод:

library(lubridate)
library(RCurl)
library(plyr)

[in] fit <- lm(btc_close ~ vix_close + gold_close + eth_close, data = all_dat)

# Other useful functions 
coefficients(fit) # model coefficients
confint(fit, level=0.95) # CIs for model parameters 
anova(fit) # anova table 

[out]
Analysis of Variance Table

Response: btc_close
           Df   Sum Sq  Mean Sq  F value Pr(>F)    
vix_close   1 20911897 20911897 280.1788 <2e-16 ***
gold_close  1    91902    91902   1.2313 0.2698    
eth_close   1 42716393 42716393 572.3168 <2e-16 ***
Residuals  99  7389130    74638                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Если мои знания статистики служат мне правильно, эти f-значения не имеют смысла. Теоретически, я должен получить F-значение для модели и T-значение для каждого коэффициента.

6
zsad512 29 Авг 2017 в 19:04

5 ответов

Лучший ответ

Вы можете попробовать это:

   summary(fit)
2
Bechir Barkallah 29 Авг 2017 в 16:14

Вот пример с комментариями о том, как вы можете извлечь только t-значения.

# Some dummy data
n <- 1e3L
df <- data.frame(x = rnorm(n),
                 z = rnorm(n))
df$y <- with(df, 0.01 * x^2 + z/3)

# Run regression
lr1 <- lm(y ~ x + z, data = df)

# R has special summary method for class "lm"
summary(lr1)

Call:
lm(formula = y ~ x + z, data = df)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.010810 -0.009025 -0.005259  0.003617  0.096771 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 0.0100122  0.0004313  23.216   <2e-16 ***
x           0.0008105  0.0004305   1.883     0.06 .  
z           0.3336034  0.0004244 786.036   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.01363 on 997 degrees of freedom
Multiple R-squared:  0.9984,    Adjusted R-squared:  0.9984 
F-statistic: 3.09e+05 on 2 and 997 DF,  p-value: < 2.2e-16

# Now, if you only want the t-values
summary(lr1)[["coefficients"]][, "t value"]

(Intercept)           x           z 
  23.216317    1.882841  786.035718 
10
sindri_baldur 17 Июн 2020 в 09:02

Как уже ответил Бенджамин, я бы посоветовал использовать broom::tidy() для приведения объекта модели к аккуратному фрейму данных. Столбец статистики будет содержать соответствующую статистику теста и легко доступен для построения с ggplot2.

0
Seanosapien 5 Апр 2018 в 10:32

Вы можете использовать это

summary(fit)$coefficients[,3]

Чтобы извлечь только t-значения

0
Mohammed 23 Сен 2019 в 20:55

Суммарные (подходящие) $ коэффициенты [, 4] для p-значений

суммарные (подходящие) $ коэффициенты [, 3] для t-значений

1
Mayank Agrawal 7 Май 2020 в 18:15