Reading the csv


launch <- read.csv("challenger2.csv")
launch

Calculating the temp manually

b <- cov(launch$temperature, launch$distress_ct) / var(launch$temperature)
b
[1] -0.03364796

Estimating alpha manually

a <- mean(launch$distress_ct) - b * mean(launch$temperature)
a
[1] 2.814585

Calculating the correlation with different methods, first default:

r <- cov(launch$temperature, launch$distress_ct,) /
       (sd(launch$temperature) * sd(launch$distress_ct))
r
[1] -0.3359996

Calculating the correlation with different methods, spear method:

r <- cov(launch$temperature, launch$distress_ct, method = "spearman") /
       (sd(launch$temperature) * sd(launch$distress_ct))
r
[1] -3.897924
cor(launch$temperature, launch$distress_ct)
[1] -0.3359996

computing the slope using correlation

r * (sd(launch$distress_ct) / sd(launch$temperature))
[1] -0.3903492

confirming the regression line using the lm function

model <- lm(distress_ct ~ temperature, data = launch)
model

Call:
lm(formula = distress_ct ~ temperature, data = launch)

Coefficients:
(Intercept)  temperature  
    2.81458     -0.03365  
summary(model)

Call:
lm(formula = distress_ct ~ temperature, data = launch)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.0649 -0.4929 -0.2573  0.3052  1.7090 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  2.81458    1.24629   2.258   0.0322 *
temperature -0.03365    0.01815  -1.854   0.0747 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.7076 on 27 degrees of freedom
Multiple R-squared:  0.1129,    Adjusted R-squared:  0.08004 
F-statistic: 3.436 on 1 and 27 DF,  p-value: 0.07474

creating SMR function

reg <- function(y, x) {
  x <- as.matrix(x)
  x <- cbind(Intercept = 1, x)
  b <- solve(t(x) %*% x) %*% t(x) %*% y
  colnames(b) <- "estimate"
  print(b)
}

examine the launch data

str(launch)
'data.frame':   29 obs. of  4 variables:
 $ distress_ct         : int  0 1 0 0 0 0 0 0 1 1 ...
 $ temperature         : int  66 70 69 68 67 72 73 70 57 63 ...
 $ field_check_pressure: int  50 50 50 50 50 50 100 100 200 200 ...
 $ flight_num          : int  1 2 3 4 5 6 7 8 9 10 ...

test regression model with simple linear regression

reg(y = launch$distress_ct, x = launch[2])
               estimate
Intercept    2.81458456
temperature -0.03364796

use regression model with multiple regression

reg(y = launch$distress_ct, x = launch[2:4])
                          estimate
Intercept             2.239817e+00
temperature          -3.124185e-02
field_check_pressure -2.586765e-05
flight_num            2.762455e-02

confirming the multiple regression result using the lm function

model <- lm(distress_ct ~ temperature + field_check_pressure + flight_num, data = launch)
model

Call:
lm(formula = distress_ct ~ temperature + field_check_pressure + 
    flight_num, data = launch)

Coefficients:
         (Intercept)           temperature  field_check_pressure  
           2.240e+00            -3.124e-02            -2.587e-05  
          flight_num  
           2.762e-02  
summary(model)

Call:
lm(formula = distress_ct ~ temperature + field_check_pressure + 
    flight_num, data = launch)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.65003 -0.24414 -0.11219  0.01279  1.67530 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)  
(Intercept)           3.527093   1.307024   2.699   0.0142 *
temperature          -0.051386   0.018341  -2.802   0.0114 *
field_check_pressure  0.001757   0.003402   0.517   0.6115  
flight_num            0.014293   0.035138   0.407   0.6887  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.565 on 19 degrees of freedom
Multiple R-squared:   0.36, Adjusted R-squared:  0.259 
F-statistic: 3.563 on 3 and 19 DF,  p-value: 0.03371

The model performs slightly better on the challenger2 dataset.

LS0tCnRpdGxlOiAiWW91c3NlZi1NTFItQWN0aXZpdHktNyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyMjIFJlYWRpbmcgdGhlIGNzdiAKYGBge3J9CgpsYXVuY2ggPC0gcmVhZC5jc3YoImNoYWxsZW5nZXIyLmNzdiIpCmxhdW5jaApgYGAKCgojIyMgQ2FsY3VsYXRpbmcgdGhlIHRlbXAgbWFudWFsbHkgCmBgYHtyfQpiIDwtIGNvdihsYXVuY2gkdGVtcGVyYXR1cmUsIGxhdW5jaCRkaXN0cmVzc19jdCkgLyB2YXIobGF1bmNoJHRlbXBlcmF0dXJlKQpiCmBgYAoKCiMjIyBFc3RpbWF0aW5nIGFscGhhIG1hbnVhbGx5IApgYGB7cn0KYSA8LSBtZWFuKGxhdW5jaCRkaXN0cmVzc19jdCkgLSBiICogbWVhbihsYXVuY2gkdGVtcGVyYXR1cmUpCmEKCmBgYAoKIyMjIENhbGN1bGF0aW5nIHRoZSBjb3JyZWxhdGlvbiB3aXRoIGRpZmZlcmVudCBtZXRob2RzLCBmaXJzdCBkZWZhdWx0OiAKYGBge3J9CnIgPC0gY292KGxhdW5jaCR0ZW1wZXJhdHVyZSwgbGF1bmNoJGRpc3RyZXNzX2N0LCkgLwogICAgICAgKHNkKGxhdW5jaCR0ZW1wZXJhdHVyZSkgKiBzZChsYXVuY2gkZGlzdHJlc3NfY3QpKQpyCmBgYAojIyMgQ2FsY3VsYXRpbmcgdGhlIGNvcnJlbGF0aW9uIHdpdGggZGlmZmVyZW50IG1ldGhvZHMsIHNwZWFyIG1ldGhvZDogCmBgYHtyfQpyIDwtIGNvdihsYXVuY2gkdGVtcGVyYXR1cmUsIGxhdW5jaCRkaXN0cmVzc19jdCwgbWV0aG9kID0gInNwZWFybWFuIikgLwogICAgICAgKHNkKGxhdW5jaCR0ZW1wZXJhdHVyZSkgKiBzZChsYXVuY2gkZGlzdHJlc3NfY3QpKQpyCmBgYApgYGB7cn0KY29yKGxhdW5jaCR0ZW1wZXJhdHVyZSwgbGF1bmNoJGRpc3RyZXNzX2N0KQoKYGBgCgojIyMgY29tcHV0aW5nIHRoZSBzbG9wZSB1c2luZyBjb3JyZWxhdGlvbgoKCmBgYHtyfQpyICogKHNkKGxhdW5jaCRkaXN0cmVzc19jdCkgLyBzZChsYXVuY2gkdGVtcGVyYXR1cmUpKQpgYGAKCiMjIyBjb25maXJtaW5nIHRoZSByZWdyZXNzaW9uIGxpbmUgdXNpbmcgdGhlIGxtIGZ1bmN0aW9uCgoKYGBge3J9Cm1vZGVsIDwtIGxtKGRpc3RyZXNzX2N0IH4gdGVtcGVyYXR1cmUsIGRhdGEgPSBsYXVuY2gpCm1vZGVsCgpgYGAKCmBgYHtyfQpzdW1tYXJ5KG1vZGVsKQpgYGAKCiMjIyBjcmVhdGluZyBTTVIgZnVuY3Rpb24gCmBgYHtyfQpyZWcgPC0gZnVuY3Rpb24oeSwgeCkgewogIHggPC0gYXMubWF0cml4KHgpCiAgeCA8LSBjYmluZChJbnRlcmNlcHQgPSAxLCB4KQogIGIgPC0gc29sdmUodCh4KSAlKiUgeCkgJSolIHQoeCkgJSolIHkKICBjb2xuYW1lcyhiKSA8LSAiZXN0aW1hdGUiCiAgcHJpbnQoYikKfQpgYGAKCiMjIyBleGFtaW5lIHRoZSBsYXVuY2ggZGF0YQoKYGBge3J9CnN0cihsYXVuY2gpCgpgYGAKCiMjIyB0ZXN0IHJlZ3Jlc3Npb24gbW9kZWwgd2l0aCBzaW1wbGUgbGluZWFyIHJlZ3Jlc3Npb24KYGBge3J9CnJlZyh5ID0gbGF1bmNoJGRpc3RyZXNzX2N0LCB4ID0gbGF1bmNoWzJdKQoKYGBgCgoKIyMjIHVzZSByZWdyZXNzaW9uIG1vZGVsIHdpdGggbXVsdGlwbGUgcmVncmVzc2lvbgoKYGBge3J9CnJlZyh5ID0gbGF1bmNoJGRpc3RyZXNzX2N0LCB4ID0gbGF1bmNoWzI6NF0pCgpgYGAKCiMjIyBjb25maXJtaW5nIHRoZSBtdWx0aXBsZSByZWdyZXNzaW9uIHJlc3VsdCB1c2luZyB0aGUgbG0gZnVuY3Rpb24KYGBge3J9Cm1vZGVsIDwtIGxtKGRpc3RyZXNzX2N0IH4gdGVtcGVyYXR1cmUgKyBmaWVsZF9jaGVja19wcmVzc3VyZSArIGZsaWdodF9udW0sIGRhdGEgPSBsYXVuY2gpCm1vZGVsCmBgYAoKYGBge3J9CnN1bW1hcnkobW9kZWwpCmBgYAojIyMgVGhlIG1vZGVsIHBlcmZvcm1zIHNsaWdodGx5IGJldHRlciBvbiB0aGUgY2hhbGxlbmdlcjIgZGF0YXNldC4gCgoKCg==