# Aufgabe 5 throttle <- read.csv("throttle.csv") lambda_ignore <- 1 / mean(throttle$Failure) lambda_discard <- 1 / mean(throttle$Failure[throttle$Censored == 0]) lambda_censored <- sum(1 - throttle$Censored) / sum(throttle$Failure) c("ignore" = 1 / lambda_ignore, "discard" = 1 / lambda_discard, "censored" = 1 / lambda_censored) # Aufgabe 6 lamps <- read.table("LAMPS.dat", header = FALSE) intervals <- sapply(as.character(lamps[,1]), function(x) strsplit(x,"-")) lamp_data <- rbind(c(0, 950, 0), cbind(apply(do.call(rbind, intervals), 2, as.numeric), lamps[,2]), c(2100, NA, 0)) colnames(lamp_data) <- c("lower", "upper", "observations") rownames(lamp_data) <- paste("interval", seq_along(lamp_data[,1])) gof_test <- function(data, distributionfunc, r, alpha = 0.05){ N <- sum( data[,"observations"] ) T_chi_square <- sum( (data[,"observations"] - N * diff( c(distributionfunc(data[,"lower"]), 1) ) ) ^ 2 / (N * diff( c(distributionfunc(data[,"lower"]), 1) ) ) ) return( list( p_value = 1 - pchisq(T_chi_square, df = length(data[,"lower"]) - r - 1), decision = as.numeric(T_chi_square > qchisq(1 - alpha, df = length(data[,"lower"]) - r - 1) ) ) ) } test_exponential <- function(lambda, data){ distributionfunc <- function(x) pexp(x, rate = lambda) gof_test(data, distributionfunc, 1)$p_value } optimize(test_exponential, data = lamp_data, interval = 1 / rev( range(lamp_data[-1, "lower"]) ), maximum = TRUE)$objective test_normal <- function(params,data){ distributionfunc <- function(x) pnorm(x, mean = params[1], sd = params[2]) -gof_test(data, distributionfunc, 2)$p_value } -optim(c( mean(rep.int(lamp_data[,"lower"], lamp_data[,"observations"])), sd(rep.int(lamp_data[,"lower"], lamp_data[,"observations"])) ), test_normal, data = lamp_data)$value test_lognormal <- function(params,data){ distributionfunc <- function(x) plnorm(x, meanlog = params[1], sdlog = params[2]) -gof_test(data, distributionfunc, 2)$p_value } log_mean <- mean(log(rep.int(lamp_data[,"lower"], lamp_data[,"observations"]))) -optim(c(log_mean, sqrt( mean( (log(rep.int(lamp_data[,"lower"], lamp_data[,"observations"])) - log_mean) ^ 2) ) ), test_lognormal, data = lamp_data)$value