Naučte se R: praktický seznam zdrojů

Když si často hrajete s analýzou dat a Excel vás již štve, naučte se R. V tomto článku najdete bezplatné kurzy, knížky a další zdroje, které vám s tím pomohou.

Interaktivní kurzy

Nejjednodušší začátek. Nemusíte nic instalovat a přímo v prohlížeči se naučíte, jak si v R hrát s daty.

  • DataCamp s šesti kapitolkami a 61 praktickými kroky. Zabere vám to maximálně dvě hodiny a naučíte se hodně. Kurz od belgických borců, co vyvíjejí R Fiddle.
  • Try R je ještě popisnější a delší. Původně tento kurz fungoval placeně na Code School, ale starý O'Reilly to zasponzoroval, a máte to zadarmo!.
  • Swirl použijete, až budete R mít spuštěné. Pak si můžete vybrat z několika kurzů, které rovnou v R zvládnete. Na swirl spoléhá také Coursera v rámci některých svých lekcí.

Online kurzy

Na Courseře jsem dělal kurzy Computing for Data Analysis a Data Analysis. Oba doporučuji.

Obecných statistických online kurzů je více. Já jsem prošel kurzem Statistics One z Princetonu a zkoušel jsem Statistics: Making Sense of Data z Univerzity v Torontu. Kurz Passion Driven Statistics se mi moc nelíbil, navíc se pracovalo v SASu.

České knihy o R

Česky psané zdroje jsou velmi krátké a výstižné.

Manuály a knížky

Máte v kanceláři nástěnku? Pak si na ni vylepte cheat sheet o R (PDF, 6 stránek).

Do knihovničky či čtečky si pak vložte:

I když si z těchto odkazů žádný nedočtete (chování návštěvníků tohoto blogu už znám…), aspoň si nebudete moci stěžovat, že se nemáte kam obrátit. Pokud byste byli i přesto ztraceni, můžete vyzkoušet R for Dummies. Já jsem z této edice zkoušel jen Statistics for Dummies a hodilo se to — statistici vám většinou nejsou schopni normální řečí vysvětlit, k čemu různé statistiky slouží.

Jste-li čtyřnohá kočka, čtěte vám přizpůsobený tutoriál.

Instalace R

Ať již budete dělat jakýkoliv kurz nebo číst kteroukoliv z knih, donutí vás nainstalovat si program R k sobě. Raději je tedy předběhněte.

Potřebujete jádro R (verze pro Windows, Mac i Linux/Android; na iTunes vidím i něco pro iOS) a prostředí RStudio (Windows, Mac, Linux/Android), ve kterém se dobře pracuje.

R pro webovou analytiku

Data z Google Analytics nahrajete do R, připojíte k nim svá interní data nebo chytře zanalyzujete, a fáze 3 je zisk.

Pro pravidelnou inspiraci slouží agregátor R-bloggers.

Pokud vás napadne další užitečný zdroj, přispějte do komentářů.

Aktualizováno 25.2.2015 o swirl, R for cats a videa od Google.

12 komentářů u „Naučte se R: praktický seznam zdrojů

  1. Ahoj,

    prvně bych rád pochválil blog. Dnes jsem na něj narazil poprvé a zítra určitě projdu i další blogposty.

    Za druhé, rád bych se tě zeptal, jaké zdroje by jsi doporučil k analýze dat, které se zpravidla týkají webu, výkonnosti apod. Např. do této skupiny řadím kohortní analýzu retence, RFM segmentaci apod.

    Díky za odpověď. Ať se daří.

  2. pan Jasek stale niecim prekvapi, tesim sa na nejake skolenie.. verim ze nejake o analytike vyskoci. pozdravujem

  3. Pingback: Poznámky z akce II. Prague R Meetup • Dlouhý chvost

  4. Pingback: Datové knížky • Dlouhý chvost

  5. library(shiny)

    # Define UI for application that draws a histogram
    shinyUI(fluidPage(

    # Application title
    titlePanel(„Data o mestach“),

    # Sidebar with a slider input for number of bins
    sidebarLayout(
    sidebarPanel(
    selectInput(„cho­ices“, „Vyberte atribut grafu“, choices = colnames(state­.x77)),
    radioButtons(„far­ba“, label = „Zvolte farbu grafu“, choices = c(„red“, „blue“), selected = „red“),
    numericInput(„ri­adky“, label = „Zadajte rozdelenie v histograme“, value = 12, min = 2, max = 20),
    numericInput(„ri­adkytab“, label = „Pocet riadkov tabulky“, value = 12, min = 1, max = 50)
     ),

    # Show a plot of the generated distribution
    mainPanel(
    plotOutput(„dis­tPlot“),
    tableOutput(„dis­tTable“)
    )
     )
    ))

    library(shiny)

    # Define server logic required to draw a histogram
    shinyServer(fun­ction(input, output) {

    output$distPlot ← renderPlot({

    # draw the histogram with the specified number of bins
    hist(state.x77[,in­put$choices], breaks = input$riadky, col = input$farba, border = ‚white‘)
     })

    output$distTable ← renderTable({

    head(state.x77,in­put$riadkytab)

    })

    })

  6. library(shiny)

    # Define UI for application that draws a histogram
    shinyUI(fluidPage(

    # Application title
    titlePanel(„Data airquality“),

    # Sidebar with a slider input for number of bins
    sidebarLayout(
    sidebarPanel(
    selectInput(„atr1“, „Vyberte atribut“, c(colnames(air­quality))),
    radioButtons(„ra­dio“,„Vyberte farbu grafu“, choices = c(„green“,„ye­llow“)),
    numericInput(„nu­meric“, „Pocet riadkov tabulky“, value = 3, min = 1, max = 100, step = 5),
    textInput(„tex­t“,„Nadpis“, label = „Zadaj nadpis grafu“)
     ),

    # Show a plot of the generated distribution
    mainPanel(
    tableOutput(„dis­tTable“),
    plotOutput(„dis­tPlot“)
    )
     )
    ))

    library(shiny)

    # Define server logic required to draw a histogram
    shinyServer(fun­ction(input, output) {

    output$distPlot ← renderPlot({

    x ← airquality[, input$atr1]
    y ← airquality[,5]
    boxplot(x~y, col = input$radio, main= input$text, xlab = input$atr1, ylab = „Month“)

    })
    output$distTable ← renderTable({
    tail(airquality, input$numeric)
     })

    })

  7. library(shiny)

    # Define UI for application that draws a histogram
    shinyUI(fluidPage(

    # Application title
    titlePanel(„Data Quakes“),

    # Sidebar with a slider input for number of bins
    sidebarLayout(
    sidebarPanel(
    selectInput(„a­tr1“,„Vyberte atribut c.1“, c(colnames(qu­akes))),
    selectInput(„atr2“, „Vyberte atribut c.2“, c(colnames(qu­akes))),
    radioButtons(„ra­dio“, „Vyberte farbu grafu“, choices = c(„green“,„ye­llow“,„black“), selected = „green“),
    numericInput(„nu­meric“, „Zadajte hrubku bodov“, value = 1, min = 1, max = 3)

    ),

    # Show a plot of the generated distribution
    mainPanel(
    textOutput(„dis­tText“),
    plotOutput(„dis­tPlot“)
    )
     )
    ))

    library(shiny)

    shinyServer(fun­ction(input, output) {
    output$distText ← renderText({pas­te(„Atribut1:“,in­put$atr1,"",„A­tribut2:“,input$a­tr2,"",„Farba grafu:“, input$radio,"",„Hrub­ka bodov:“, input$numeric)})

    output$distPlot ← renderPlot({
    x ← quakes[, input$atr1]
    y ← quakes[, input$atr2]
    plot(x~y, main = ‚Graf‘, xlab= input$atr1, ylab = input$atr2, col = input$radio, lwd = input$numeric)

    })
    })

  8. #nelinearna rovnica
    curve(5*sin(x), –5, 5 )
    curve(exp(x), add = TRUE, col = ‚red‘)

    f = function(x) 5*sin(x)-exp(x)
    uniroot(f,lower=-4,upper=-2, tol=1e-4)
    uniroot(f,lower=0,up­per=1, tol=1e-4)
    uniroot(f,lower=1,up­per=3, tol=1e-4)

    #celociselne
    library(lpSolve)
    assign.costs ← matrix (c(5, 12, 9, 8, 7, 8, 10, 13, 13, 7, 9,12,11,12,5,­15,16,19,20,11,10,14,10,­13,9), 5, 5)
    lp.assign (assign.costs)
    lp.assign (assign.costs)$so­lution

    #############­########################­########################­##

    #linearna regresia
    predaj = c(9,5,18,14,1­0,12,7,11,5,16,16,11)
    cena = c(18,24,9,15,­17,16,20,15,22,14,15,19)
    mydata = data.frame(pre­daj,cena)
    model = lm(predaj~cena, data = mydata)
    plot(mydata)
    abline(model)

    mydata2 = data.frame(cena = c(5,10,25))
    mydata2$predaj = predict(model, newdata = mydata2)
    mydata2

    #sustava linearnych rovnic
    A = matrix(nrow = 3, ncol = 3, data = c(4,2,5,3,2,3,0,–2,1))
    B = c(4,0,–2)
    solve(A,B)

    #############­########################­##########
    #Viacnasobna regresia
    seplength = iris$Sepal.Length
    petlength = iris$Petal.Length
    sepwidth = iris$Sepal.Width

    fit = lm(seplength~pe­tlength)
    plot(seplength,pe­tlength, xlab = ‚sep‘, ylab = ‚pet‘, main = ‚plot‘)
    plot(petlength,sep­width, xlab = ‚pet‘, ylab = ‚sep‘, main = ‚plot2‘)

    data = data.frame(se­plength = 5.8, sepwidth = 3)
    predictdata = predict(fit, newdata = data)
    predictdata

    #############­########################­#########
    #linearne programovanie
    library(lpSolveAPI)
    lpmodel = make.lp(0,2)
    lp.control(lpmodel, sense = „max“)
    set.objfn(lpmodel, c(50,40))
    add.constrain­t(lpmodel, c(2,3), „<=“, 1500)
    add.constrain­t(lpmodel, c(2,1), „<=“, 1000)
    lpmodel

    solve(lpmodel)
    get.objective(lpmo­del)
    get.variables(lpmo­del)

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *