R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

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 […]

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 […]

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 […]

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 […]

Posted in R-ohjelmointi | No Comments

Pieni päivitys tekstinlouhintafunktioihin – OCR

Olen aiemmin kirjoitellut useasti tekstinlouhinnasta, ja näissä kirjoituksissa esitellyt funktiot löytyvät GitHub repositorysta. Funktiokokonaisuuteen on nyt lisätty Optical Character Recognition (OCR) toiminnallisuus, jota on periaatteellisesti aiemmin esitylty toisessa postauksessa. OCR voidaan tehdä R:llä yksinkertaisesti seuraavasti. Ladataan ensin tarvittavat funktiot, ja tarvittaessa asennetaan puuttuvat paketit: source("https://raw.githubusercontent.com/jtuimala/TextMining/master/tm-functions.R") load(url("https://github.com/jtuimala/TextMining/raw/master/fintm-data.RData"))   installAndInitialize() initiateTesseract() Tämän jälkeen ympäristö on käyttökunnossa. Ladataan […]

Posted in Aiheeton | 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 […]

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 […]

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