Проблема с lm и выводом резюме для регрессионного анализа - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь сделать регрессию статистики НХЛ для предикторов с переменными целями, передачами и точками. Тем не менее, наш вывод отличается от желаемого результата. Вместо указанных нами предикторов (целей, передач и очков) мы получаем каждый экземпляр нашего экземпляра нашего перехвата. Смотрите ниже:

urlname <- "https://www.hockey-reference.com/leagues/NHL_2018_skaters.html"
scraped_data <- read_html(urlname)
table.nhl <- html_nodes(scraped_data, "table")

scraped.nhl.data <- as.data.frame(html_table(table.nhl, header = TRUE))
colnames(scraped.nhl.data) = scraped.nhl.data[1, ] # the first row will be the header
scraped.nhl.data = scraped.nhl.data[-1, ]          # removing the first row.
for (i in 1:nrow(scraped.nhl.data)){
  if (scraped.nhl.data[i,1] == "Rk"){
    scraped.nhl.data <- scraped.nhl.data[-i,]
  }
}

pittsburgh <- scraped.nhl.data[scraped.nhl.data$Tm == "PIT", ]
pittsburgmodel <- pittsburgh[, c( "G", "A", "PTS")]
pittsburgmodel <- pittsburgmodel[complete.cases(pittsburgmodel), ]
View(pittsburgmodel)
names(pittsburgmodel) <- c(" goals", "assists", "points")
attach(pittsburgmodel)
fit = lm(games played ~., data = pittsburgmodel)
summary(fit)

Выход

Coefficients: (18 not defined because of singularities)
              Estimate Std. Error    t value Pr(>|t|)    
(Intercept) -3.719e-15  2.835e-15 -1.312e+00    0.247    
assists1     2.000e+00  6.945e-15  2.880e+14   <2e-16 ***
assists10    4.000e+00  6.945e-15  5.759e+14   <2e-16 ***
assists12    1.800e+01  6.945e-15  2.592e+15   <2e-16 ***
assists13    5.000e+00  6.945e-15  7.199e+14   <2e-16 ***
assists2     4.000e+00  6.945e-15  5.759e+14   <2e-16 ***
assists20    2.900e+01  6.945e-15  4.175e+15   <2e-16 ***
assists21    1.100e+01  6.945e-15  1.584e+15   <2e-16 ***
assists22    7.000e+00  6.945e-15  1.008e+15   <2e-16 ***
assists23    4.000e+00  6.945e-15  5.759e+14   <2e-16 ***
assists25    1.300e+01  6.945e-15  1.872e+15   <2e-16 ***
assists26    2.200e+01  6.945e-15  3.168e+15   <2e-16 ***
assists3     2.000e+00  5.305e-15  3.770e+14   <2e-16 ***
assists4     4.000e+00  6.945e-15  5.759e+14   <2e-16 ***
assists42    9.000e+00  6.945e-15  1.296e+15   <2e-16 ***
assists5     3.000e+00  6.945e-15  4.319e+14   <2e-16 ***
assists56    4.200e+01  6.945e-15  6.047e+15   <2e-16 ***
assists58    3.400e+01  6.945e-15  4.895e+15   <2e-16 ***
assists6     2.000e+00  6.945e-15  2.880e+14   <2e-16 ***
assists60    2.900e+01  6.945e-15  4.175e+15   <2e-16 ***
assists8     4.000e+00  6.945e-15  5.759e+14   <2e-16 ***
points1      1.000e+00  6.945e-15  1.440e+14   <2e-16 ***
points10     2.000e+00  8.967e-15  2.231e+14   <2e-16 ***
points12            NA         NA         NA       NA    
points13    -1.000e+00  8.967e-15 -1.115e+14   <2e-16 ***
points14            NA         NA         NA       NA    
points18            NA         NA         NA       NA    
points27            NA         NA         NA       NA    
points29            NA         NA         NA       NA    
points3             NA         NA         NA       NA    
points30            NA         NA         NA       NA    
points31    -1.000e+00  8.967e-15 -1.115e+14   <2e-16 ***
points32            NA         NA         NA       NA    
points38            NA         NA         NA       NA    
points4     -2.000e+00  8.967e-15 -2.231e+14   <2e-16 ***
points48            NA         NA         NA       NA    
points49            NA         NA         NA       NA    
points5             NA         NA         NA       NA    
points51            NA         NA         NA       NA    
points6             NA         NA         NA       NA    
points8             NA         NA         NA       NA    
points89            NA         NA         NA       NA    
points92            NA         NA         NA       NA    
points98            NA         NA         NA       NA    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 6.34e-15 on 5 degrees of freedom
Multiple R-squared:      1, Adjusted R-squared:      1 
F-statistic: 3.72e+30 on 25 and 5 DF,  p-value: < 2.2e-16

Желаемый вывод

                 Estimate     Std. Error      t value   Pr(>|t|)
(Intercept)        value         value          value     value
Goals              value         value          value     value 
Assists            value         value          value     value

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Лучше потратить немного больше времени, чтобы идти вверх по течению и фиксировать информацию в таблице. В этом примере используется пакет XML, потому что, как указано в этом сообщении в блоге , функция XML::readHTMLTable имеет параметр skip, которого html_table, по-видимому, нет ...

Чтение необработанного HTML:

urlname <- "https://www.hockey-reference.com/leagues/NHL_2018_skaters.html"
rr <- readLines(urlname)

Первая попытка чтения: заголовок + пропуск строки 1

library(XML)
h1 <- readHTMLTable(rr, header=TRUE,skip=1)$stats

В данных разбросаны неверные (не числовые) строки, которые, очевидно, являются дополнительными внутренними строками «заголовка». Определите функцию, чтобы найти их:

br  <- function(i,x=h1) { 
    suppressWarnings(which(is.na(as.numeric(as.character(x[[i]])))))
}
badrows <- br(1)

Попробуйте еще раз, пропустив «плохие» строки:

h2 <- readHTMLTable(rr, header=TRUE,skip=c(1,badrows+1))$stats

Определить числовые столбцы как все, кроме этих 4:

numcols <- setdiff(names(h2),c("Player", "Tm", "Pos", "ATOI"))

Преобразовать столбцы, которые должны быть числовыми:

for (i in numcols) {
    h2[[i]] <- as.numeric(as.character(h2[[i]]))
}
0 голосов
/ 13 ноября 2018

До lm

pittsburghmodel$points <- as. numeric(as.character(pittsburghmodel$points)
pittsburghmodel$assists <- as. numeric(as.character(pittsburghmodel$assists)

Кроме того, не используйте команду присоединения и улучшайте использование терминов, избегая использования модели для набора данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...