R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

R-ohjelmointi

Logistinen regressio

Sisällys Mikä on logistinen regressio? Hieman teoriaa Vedonlyöntisuhde Vetosuhde Vetosuhteen tilastollinen testaaminen Logistinen malli Logistinen regressio R:ssä Aineisto Mallin sovittaminen Mallin sopivuuden mittarit Mallin tulosten tulkinta Mallin tulosten esittäminen Mallin ennusteiden muuntaminen todennäköisyyksiksi Ennustemallin toimivuuden arviointi Mallin valinta Mallien sovittaminen Mallien vertailu Automaattiset menetelmät Erikoistapauksia Ehdollinen logistinen regressio Firthin harhattomampi menetelmä Harrellin lrm-funktio Tulosten visuaalinen […]

Tags: , , ,

Posted in Note to self, R-ohjelmointi | No Comments »

Laajennuspaketti drc: EC50-arvon määrittäminen

Effective concentration 50% (EC50)-arvolla mitataan esimerkiksi lääkeaineiden vaikutusta. EC50-arvo on lääkeaineen konsentraatio, jolla saadaan aikaan puolet vaikutuksen maksimiarvosta. EC50-arvon lähisukulainen on effective dose (ED50), joka taas vastaa konsentraatiota, jolla saadaan vaste 50 %:ssa altistetuista kohteista, esimerkiksi potilaista. Yleensä ED50-arvoa käytetään hyödyllisistä, tavoitelluista terapeuttisista vaikutuksista. Jos tutkitaan aineiden myrkyllisyyksiä, käytetään arvoa LD50, joka vastaa konsentraatiota, jossa […]

Tags: ,

Posted in Grafiikka, R-ohjelmointi | No Comments »

Logistisen regression ongelmatilanteita ja niiden ratkaisuja

Logistinen regressio on esimerkiksi epidemiologian tilastollinen perustyökalu. Katsahdetaanpa seuraavassa kahteen usein vastaan tulevaan ongelmaan ja niiden mahdollisiin ratkaisuihin. Ongelma 1: separaatio Tavanomainen logistinen regressio ajautuu ongelmiin erityisesti tilanteessa, jossa aineistossa on jonkin selittävän muuttujan suhteen selkeä separaatio. Separaatio tarkoittaa tilannetta, jossa jollakin (kategorisen) selittävän muuttujan arvolla tai selittäjien yhdistelmällä esiintyy vain toista vastemuuttujan arvoa. Separaation […]

Tags:

Posted in R-ohjelmointi, Yleistä | No Comments »

Shiny-appletti tiedostojen yhdistelemiseen

Toistuvasti nousee esille tarve yhdistellä tiedostoja jonkin yhdistävän kentän perusteella. Operaatiosta käytetään eri kielissä tai tuotteissa eri nimityksiä: Esimerkiksi R:ssä on merge, SQL:ssä puolestaan JOIN ja Excelissä VLOOKUP (PHAKU). Excelin VLOOKUP vastaa oikeastaan R:n match()-funktion tarjoamia mahdollisuuksia, mutta juuri tällaisia tarpeita varten kehitin pienen Shiny-applikaation. Shiny on R:n päälle rakennettu laajennuspaketti, jolla on mahdollista toteuttaa […]

Tags: , ,

Posted in R-ohjelmointi | No Comments »

KHO:n vuosikirjapäätökset

Korkein hallinto-oikeus (KHO) valvoo alempien viranomaisten lainkäytön oikeellisuutta, ja se käyttää ylintä tuomiovaltaa hallintolakiin liittyvissä asioissa. KHO julkaisee julkisia päätöksiään muun muassa vuosikirjapäätöksinä. Vuosikirjapäätökset ovat nykyisin kyseltävissä REST API:n kautta. Aineisto on julkaistu CC BY 4.0 -lisenssillä, ja tarkempiin käyttöehtoihin voi tutustua Oikeusministeriön, Aalto-yliopiston ja Edita Publishing Oy:n kehittämä Semanttinen Finlex datapalvelun käyttöehdot-sivulla. Katsotaanpa millaisia […]

Posted in Note to self, R-ohjelmointi, Skriptit | No Comments »

Simppeli ”tankkipeli”

R-bloggers -aggregaattorissa oli postaus parabolisen ballistisen yhtälön ratkaisemisesta R:llä. Se muistutti mieleeni nostalgiset hetket tietokonepelien Gorillas ja Scorched Earth parissa. Pakkohan se oli kokeilla, miten vaikeaa tuollaisen pelin tekeminen R:llä olisi! Pelin koodi on Githubissa, ja tarvittavat funktiot voidaan noutaa suoraan sieltä: library(RCurl) script <- getURL("https://raw.githubusercontent.com/jtuimala/Rtanks/master/Rtanks3.R", ssl.verifypeer = FALSE) eval(parse(text = script)) Tämän jälkeen peli […]

Tags:

Posted in Grafiikka, R-ohjelmointi | No Comments »

Simppeli sääntökone

Olen jo pitkään tarvinnut useampaankin paikkaan sääntökonetta. Siis sellaista, jolla vaikkapa tutkimusprojektin yhteistyökumppani voi helposti määritellä erilaisia aineiston suodatussääntöjä. Eräs perinteiden työkalu, jolla sääntöjä määritellään on Java-pohjainen Drools. On olemassa joitakin paketteja, joilla Droolsia voi käyttää R:stä [1, 2, 3], mutta niiden kehitys ja ylläpito näyttää olleen jäissä jo muutamia vuosia. Muita vaihtoehtoja ovat esimerkiksi […]

Tags: ,

Posted in R-ohjelmointi | No Comments »

Lineaarisen mallin nopea sovittaminen

Tavanomainen lineaarinen regressio sovitetaan R:ssä komennolla lm(). Jos sovitettava malli sisältää enemmän kuin yhden selittävän muuttujan, on malli kätevintä sovittaa kaava-rajapintaa käyttäen, esimerkiksi lm(y ~ x1 + x2, data=dat), jossa y ~ x1 + x2 on siis se kaava, joka spesifioi sovitettavan mallin. Kaavassa ~ -merkin vasemmalla puolella on ennustettava vastemuuttuja ja sen oikealla puolella […]

Posted in R-ohjelmointi | No Comments »

Kuvatiedoston tyypin tunnistaminen

Tämä(kin) postaus sai alkunsa pieleen menneestä visualisoinnista. Yritin alunperin tuottaa R:llä GIF-animaatioon tarvittavia kuvia, mutta onnistuin luomaan samaan kansioon joukon sekalaisia, eri tiedostomuodoissa olevia kuvatiedostoja, joissa ei tietenkään ollut edes tiedostopäätteitä. Piti siis selvittää, mitä kuvia oikein tulikaan generoitua… ImageMagick tunnistaa laajan valikoiman erilaisia kuvatyyppejä vaivatta. Koska se löytyi koneelta, kutsuin sitä suoraan R:stä kullekin […]

Posted in Note to self, R-ohjelmointi, Skriptit | No Comments »

Apufunktiot uusien pakettien asentamiseen

Kirjoitin aiemmin funktiosta, jolla voi ladata kaikki paketit esimerkiksi CRANin pakettikirjastosta. Uusi githubinstall-paketti kuitenkin laajentaa latausmahdollisuuden Githubinkin puolelle. Tällaista pakettien peilausmahdollisuutta tarvitaan esimerkiksi CRAN-repositoryn perustamiseen tai paikallisen miniCRAN:n perustamiseen. Paketin githubinstall funktio githubinstall:::gh_update_package_list sisältää linkin tiedostoon, johon Githubissa sijaitsevat R-pakettien sijainnit on kerätty (https://raw.githubusercontent.com/hoxo-m/gepuro-task-views-copy/master/package_list.txt). CRAN:n ja muiden vakio-repositoryjen paketit saadaan selville available.packages() -funktiolla. Jaoin pakettienlataustoiminnallisuuden […]

Posted in R-ohjelmointi | No Comments »