Skip to content

Instantly share code, notes, and snippets.

View EconometricsBySimulation's full-sized avatar

Francis Smart EconometricsBySimulation

View GitHub Profile
@EconometricsBySimulation
EconometricsBySimulation / gist:d0af8273f15b6ccb85a4
Last active September 12, 2023 04:23
Rapidly sample from arbitrary pdf
I recently found myself in need of a function to sample randomly from an arbitrarily defined probability density function. An excellent post by Quantitations shows how to accomplish this using some of Rs fairly sophisticated functional approximation tools such as integrate and uniroot. The only problem with this excellent post was that the machine cost was enormous with samples of 1000 draws taking 10 seconds on my machine and repeated samples of 100,000+ draws (which I was after) clearly being unworkable.
Thus I decided to take my own crack at it. First let us review the basics of drawing random variables from non-uniform distributions. The standard method I think most algorithms use works as follows:
Assumptions
1. You can draw pseudo-random uniform variable u
2. You can integrate the pdf to construct a cdf
$$p = F(x) = \int_{-\infty}^\infty f(x) dx$$
3. You can invert the cdf in order to solve for p
$$G(F(x))=F^{-1}(F(x))=F^{-1}(p)=x$$
@EconometricsBySimulation
EconometricsBySimulation / readGoogleSheet.R
Last active August 29, 2015 14:06
Read Google Spreadsheet into R
# This set of functions comes entirely form Andrie on stackoverflow
# http://stackoverflow.com/questions/22873602/importing-data-into-r-from-google-spreadsheet
readGoogleSheet <- function(url, na.string="", header=TRUE){
stopifnot(require(XML))
# Suppress warnings because Google docs seems to have incomplete final line
suppressWarnings({
doc <- paste(readLines(url), collapse=" ")
})
if(nchar(doc) == 0) stop("No content found")
@EconometricsBySimulation
EconometricsBySimulation / ebola.R
Last active August 29, 2015 14:06
Analysis of Ebola data
# First let's load some libraries
require('XML'); require('reshape2'); require('ggplot2')
require('magrittr') # See
# http://goo.gl/Wj5F87
# I have borrowed Andrie's code from stackoverflow
# http://goo.gl/noYVo7
source("http://goo.gl/w64gfp")
# Load in the google spreadsheet
@EconometricsBySimulation
EconometricsBySimulation / cubes.R
Created September 10, 2014 00:25
Easy Bordered Cubes in R
library('rgl'); library('magrittr')
cube <- function(x=0,y=0,z=0, bordered=TRUE,
filled = TRUE, lwd=2, scale=1,
fillcol = gray(.95),
bordercol ='black', ...) {
mycube <- cube3d()
# Reduce size to unit
# adapted from John Fox's numbers2words function
require(magrittr); require(Rmpfr)
make.digits <- function(x) {
# This is a function breaks an input number x into the positive (left)
# and negative(right) elements and returns these as numbers
x <- toString(x)
negative <- substr(x,1,1)=="-"
if (negative) x <- substring(x,2)
rm(list=ls())
library(data.table)
library(dplyr)
library(ggplot2)
library(scales)
setwd('Z:/Data/FEC')
dsum <- function(...) dplyr::summarize(...)
rm(list=ls())
library(data.table)
library(dplyr)
library(ggplot2)
setwd('Z:/Data/FEC')
dsum <- function(...) dplyr::summarize(...)
to.data.table <- function(x) {(class(x) <- class(data.table())) ;x}
# Estimating Weekly consumption from periodic purchasing data
library(dplyr)
library(data.table)
library(reshape)
library(tidyr)
library(ggplot2)
# Day Purchase

emailto: psteiner@umd.edu student: Francis Smart fsmart@gmail.com EDMS769G

# Text Network graph
#           Student Ability _______________________
#            /           |                         \_____
#          /             |  Public/Private Transport     \
#         ↓              ↓     ↓                          ↘
txt2 month
<<NO TEXT FOUND FOR SPECIFIED DATE>> 12
apoo od f n@N2enuo ttc aEon0t 0THOTesv1t tioil0,s ct'en O1t"to i cdCert.piawob Cd epEoRu gE h oIl i t coerdee VtR sou'eoet n crnrho C .ik/e lkreigypMn Rf s troCokeecT 0es nCoc4 oDn O oerlisd lo'ontom/ei i9Ir,2hgu,bt n/r kr20ta wtontl iriiC e Paots eu 0e12y1esenp tcaat )n eniTseon 4tE2l oCotoaN0 encuRi n eu e nrsroidNcinwp -t iECr9( gep2. k oiRub01gT'n1i Irmn ecT T.0'pbCu" 0w pt"Fso.f rdneeTs UW.nnl/s2tt uneTk't itri,ig nO.eth tere0eci 0 a pl( ' "rtvlbOntuftfr tn Onyn t1n10thtt i d eoe a rHc CtdorltCniwmfbao9 rdC vtecf pl nTOahf10ornet wueotoT o .s 12
<<NO TEXT FOUND FOR SPECIFIED DATE>> 12