Skip to content

Instantly share code, notes, and snippets.

View PirateGrunt's full-sized avatar
💭
coding

Brian Fannin PirateGrunt

💭
coding
View GitHub Profile
@PirateGrunt
PirateGrunt / MRMR Triangle constructor
Created January 24, 2013 14:56
MRMR Triangle constructor
#==================================================================================================
# User-friendly constructor
# This is a giant pile of code which basically does the following:
# * Ensure that we have a proper date for the loss period start
# * Ensure that we have a column for the development lag
# * Once those have been established, create columns for loss period start and end, create a column
# for development period (based on lubridate Period class), compute the evaluation date.
Triangle = function(TriangleData
, TriangleName
, LossPeriodType = "accident"
@PirateGrunt
PirateGrunt / ClusteredDevelopmentLags
Last active December 13, 2015 19:09
Clustered development lags
data(NAIC)
bigCompany = as.character(NAIC[which(NAIC$CumulativePaid == max(NAIC$CumulativePaid)),"GroupName"])
df.BigCo = subset(NAIC, GroupName == bigCompany)
df.UpperTriangle = subset(df.BigCo, DevelopmentYear <=1997)
MeasureName = colnames(df.UpperTriangle)[5:10]
MeasureMeta = data.frame(MeasureName = as.character(MeasureName), Cumulative = as.character(c(rep("Cumulative", 2), rep("Neither", 4))))
rm(MeasureName)
#File created 1/31/13
#contains R code to
#-read in Kaggle Competition Titanic Data csv file
#-create a simple logistic regression model
#-make predictions on training and test data
#-write out test predictions to csv file
#
#Replace the <your path here> with the full path to your copy of train and test csv files.
###################################################################################
@PirateGrunt
PirateGrunt / gist:5152102
Created March 13, 2013 13:37
T/SQL to generate starting and ending dates for annual, semi-annual and quarterly periods.
/* udfBeginningOfYear **********************************************************/
IF OBJECT_ID (N'udfBeginningOfYear') IS NOT NULL
DROP FUNCTION udfBeginningOfYear
GO
CREATE FUNCTION udfBeginningOfYear (@DateIn datetime)
RETURNS datetime
AS
BEGIN
@PirateGrunt
PirateGrunt / gist:5152111
Created March 13, 2013 13:38
Test calculation of start and end period udfs.
DECLARE @TestDate datetime
SET @TestDate = CAST('08-15-2000' AS datetime)
SELECT dbo.udfBeginningOfYear(@TestDate) AS BeginningOfYear
, dbo.udfEndOfYear(@TestDate) AS EndOfYear
, dbo.udfBeginningOfSemi(@TestDate) AS BeginningOfSemi
, dbo.udfEndOfSemi(@TestDate) AS EndOfSemi
, dbo.udfBeginningOfQuarter(@TestDate) AS BeginningOfQuarter
, dbo.udfEndOfQuarter(@TestDate) AS EndOfQuarter
@PirateGrunt
PirateGrunt / gist:5529844
Created May 7, 2013 02:18
Examples of how to get ggplot and lm style function calls.
someFunction = function(y, data = NULL)
{
arguments <- as.list(match.call())
y = eval(arguments$y, data)
sum(y)
}
myData = data.frame(A = c(1,2,3), B = c(10,9,8))
someFunction(A, data=myData)
@PirateGrunt
PirateGrunt / gist:5767596
Created June 12, 2013 17:56
Example of how the dollar sign reference in a dataframe doesn't require the whole name.
myData = data.frame(State = c("NY","NY", "TX", "TX")
, Premium = c(100,200,150,75)
, Loss = c(80,175,80,80))
myData
moreData = data.frame(Premium = myData$P, Loss = myData$L)
moreData
rm(moreData)
colNames = c("Premium", "Loss")
sourceFiles = "https://raw.github.com/PirateGrunt/MRMR/master/R/NAIC.R"
dummy = lapply(paste0(myDirectory, sourceFiles), source)
rm(myDirectory, sourceFiles, dummy)
dfAuto = GetNAICData(dataSetName = "comAuto_pos.csv")
dfWC = GetNAICData(dataSetName = "wkcomp_pos.csv")
dfGL = GetNAICData(dataSetName = "othliab_pos.csv")
dfProd = GetNAICData(dataSetName = "prodliab_pos.csv")
@PirateGrunt
PirateGrunt / AnotherOLS.R
Created July 9, 2013 13:04
Another view of ordinary regression
# Get a set of "error" terms
set.seed(1234)
N = 100
E = rnorm(N, mean = 0, sd = 2)
lnLike = function(x, mu, sigma)
{
n = length(x)
lnLike = -n / 2 * log(2*pi)
lnLike = lnLike - n/2 * log(sigma ^2)
kids1 = as.array(c("Bob", "Joe"))
kids2 = as.array(c("Steve", "Beth", "Kim"))
setClass("person", representation(name="character", age="numeric", children = "list"))
setMethod(
f = "[",
signature="person",
definition=function(x,i,j,...,drop=TRUE){
initialize(x, name=x@name[i], age = x@age[i], children = list(x@children[i]))