Guest User

Untitled

a guest
Jan 26th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. # Library Loading
  2. library("RPostgreSQL");
  3. library("car");
  4.  
  5. # Connect to Database
  6. pgDrv <- dbDriver("PostgreSQL")
  7. dbh <- dbConnect(pgDrv, host="localhost", dbname="dnsmonitor", user="dnsmon", password="tooEasy")
  8.  
  9. # Retrieve Statistics from DB
  10. stats <- dbGetQuery(dbh, "select client.id, client.ip, sum(queries) as queries, sum(nx) as nx, sum(answers) as answers, sum(errors) as errors, count(distinct day) as days_active
  11. from client
  12. inner join client_stats on client.id = client_stats.client_id
  13. where ip BETWEEN '10.1.0.0' and '10.1.0.255'
  14. group by client.id, client.ip having count(distinct day) > 20")
  15.  
  16. # Close the Database Connection and free variables
  17. dbDisconnect(dbh)
  18. rm(dbh)
  19. rm(pgDrv)
  20.  
  21. # Queries will be "x"
  22. x <- stats$queries
  23. x.minusmean = x - mean(x)
  24. x.minusmeansq = x.minusmean ^ 2
  25.  
  26. # NX Records will be "y"
  27. y <- stats$nx
  28. y.minusmean = y - mean(y)
  29. y.minusmeansq = y.minusmean ^ 2
  30.  
  31. # Standard Deviations
  32. sd.x = sd(x);
  33. sd.y = sd(y);
  34.  
  35. # Build the Table as in #5
  36. dns <- data.frame( x, y, row.names = stats$ip )
  37. dns$x_mean <- x.minusmean
  38. dns$x_meansq <- x.minusmeansq
  39. dns$y_mean <- y.minusmean
  40. dns$y_meansq <- y.minusmeansq
  41. # Calculate Cor. Coef. Numerator.
  42. dns$product = x.minusmean * y.minusmean
  43. # Z-Scores
  44. dns$x_zscore = abs(x.minusmean) / sd.x
  45. dns$y_zscore = abs(y.minusmean) / sd.y
  46.  
  47. # Removing Outliers:
  48. normal <- subset(dns, y_zscore <= 3, select = c( x, y ))
  49.  
  50. # Scatter Plot
  51. plot( x, y, xlab="Queries", ylab="NX Responses",
  52. main="DNS Queries and NX Responses")
  53.  
  54. # Regression Line
  55. regression <- lm( y ~ x )
  56. regLine( regression, col="red" )
  57.  
  58. # Regression line without outliers:
  59. regression_normal <- lm( normal$y ~ normal$x )
  60. regLine( regression_normal, col = "green" )
Add Comment
Please, Sign In to add comment