Install packages

install.packages("tidyverse", repos = "https://cloud.r-project.org")
## 
## The downloaded binary packages are in
##  /var/folders/5_/389qrkvs1sd7nkp792bslx5r0000gn/T//RtmphaUIQk/downloaded_packages
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.1     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
install.packages("psych", repos = "https://cloud.r-project.org")
## 
## The downloaded binary packages are in
##  /var/folders/5_/389qrkvs1sd7nkp792bslx5r0000gn/T//RtmphaUIQk/downloaded_packages
library(psych)
## 
## Attaching package: 'psych'
## 
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
install.packages("knitr",repos = "https://cloud.r-project.org")
## 
## The downloaded binary packages are in
##  /var/folders/5_/389qrkvs1sd7nkp792bslx5r0000gn/T//RtmphaUIQk/downloaded_packages
library("knitr")
install.packages("kableExtra",repos = "https://cloud.r-project.org")
## 
## The downloaded binary packages are in
##  /var/folders/5_/389qrkvs1sd7nkp792bslx5r0000gn/T//RtmphaUIQk/downloaded_packages
library("kableExtra")
## 
## Attaching package: 'kableExtra'
## 
## The following object is masked from 'package:dplyr':
## 
##     group_rows
install.packages("robustbase",repos = "https://cloud.r-project.org")
## 
## The downloaded binary packages are in
##  /var/folders/5_/389qrkvs1sd7nkp792bslx5r0000gn/T//RtmphaUIQk/downloaded_packages
library(robustbase)
install.packages("apaTables", repos = "https://cloud.r-project.org")
## 
## The downloaded binary packages are in
##  /var/folders/5_/389qrkvs1sd7nkp792bslx5r0000gn/T//RtmphaUIQk/downloaded_packages
library(apaTables)
install.packages("modelsummary", repos = "https://cloud.r-project.org")
## 
## The downloaded binary packages are in
##  /var/folders/5_/389qrkvs1sd7nkp792bslx5r0000gn/T//RtmphaUIQk/downloaded_packages
library("modelsummary")
## 
## Attaching package: 'modelsummary'
## 
## The following object is masked from 'package:psych':
## 
##     SD
library("gt")

Download data

data <- read_csv("Genderu2.csv")
## Rows: 999 Columns: 27
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): Institution Name
## dbl (26): Academic_ranking, Faculty_total, Faculty_female, Faculty _male, Ec...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Filtering the data for only the variables that we are looking for.

Removing extra blank space

data2 <- data[-(99:999),]
data3 <- data2[,-(4:17)]
data4 <- data3[,-(5:6)]
data5 <- data4[,-6]
dataf <- data5[,-(7:9)]

Creating a summary of statistics

summary_table <- describe(dataf)
table1 <- knitr::kable(summary_table, 
             "html",
             caption = "Summary Statistics US Universities",
             digits = 2) %>%
footnote(general = "N = 98 ") %>% 
  kable_styling(font_size = 8)
table1
Summary Statistics US Universities
vars n mean sd median trimmed mad min max range skew kurtosis se
Institution Name* 1 98 49.50 28.43 49.5 49.50 36.32 1 98 97 0.00 -1.24 2.87
Academic_ranking 2 98 47.81 27.83 48.5 47.97 34.84 1 98 97 -0.04 -1.22 2.81
Faculty_total 3 98 1902.86 1045.56 1685.0 1787.07 776.88 341 6344 6003 1.44 3.02 105.62
StemDegreesGranted_total 4 98 834.92 594.97 659.5 772.15 386.96 59 2329 2270 0.97 -0.22 60.10
Student_faculty_ratio 5 98 15.24 5.03 16.0 15.31 4.45 5 27 22 -0.18 -0.73 0.51
AcceptanceRate_NumberAdmits_divided_by_NumberApplicants 6 98 48.38 23.66 51.0 48.66 26.69 6 93 87 -0.15 -1.10 2.39
ProfSalary_average 7 98 137104.16 25784.60 131251.5 134985.83 24438.44 85824 202464 116640 0.70 -0.08 2604.64
Note:
N = 98

Creating a Correlation Matrix

datacor <- dataf[,-1]
datacort <- cor(datacor)
apa.cor.table(datacort,
              filename = "cortable1.doc",
              table.number = )
## 
## 
## Means, standard deviations, and correlations with confidence intervals
##  
## 
##   Variable                                                   M     SD  
##   1. Academic_ranking                                        0.10  0.67
##                                                                        
##   2. Faculty_total                                           0.16  0.53
##                                                                        
##                                                                        
##   3. StemDegreesGranted_total                                0.27  0.47
##                                                                        
##                                                                        
##   4. Student_faculty_ratio                                   0.28  0.62
##                                                                        
##                                                                        
##   5. AcceptanceRate_NumberAdmits_divided_by_NumberApplicants 0.27  0.66
##                                                                        
##                                                                        
##   6. ProfSalary_average                                      -0.19 0.71
##                                                                        
##                                                                        
##   1            2           3           4             5            
##                                                                   
##                                                                   
##   -.86*                                                           
##   [-.98, -.16]                                                    
##                                                                   
##   -.30         .53                                                
##   [-.89, .67]  [-.50, .94]                                        
##                                                                   
##   .75          -.50        .33                                    
##   [-.15, .97]  [-.93, .52] [-.66, .90]                            
##                                                                   
##   .86*         -.58        .16         .95**                      
##   [.17, .98]   [-.95, .44] [-.75, .86] [.59, .99]                 
##                                                                   
##   -.88*        .61         -.16        -.96**        -.99**       
##   [-.99, -.24] [-.40, .95] [-.86, .75] [-1.00, -.69] [-1.00, -.91]
##                                                                   
## 
## Note. M and SD are used to represent mean and standard deviation, respectively.
## Values in square brackets indicate the 95% confidence interval.
## The confidence interval is a plausible range of population correlations 
## that could have caused the sample correlation (Cumming, 2014).
##  * indicates p < .05. ** indicates p < .01.
## 

Creating histogram for our main and dependent varible

plot(x = dataf$Academic_ranking,
     y = dataf$ProfSalary_average,
     main = "Academic Rankinig on Average ProfSalary",
     xlab = "Academic Ranking",
     ylab = "Average ProfSalary",
     sub = "N = 98| Data is from (IPEDS)",
     frame = TRUE,
     col = "pink")

# Creating a 2nd histogram

plot(x = dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants,
     y = dataf$Academic_ranking,
     main = "Academic Ranking on Acceptance Rate",
     xlab = "Acceptance Rate",
     ylab = "Academic Ranking",
     sub = "N = 98 |Data is from (IPEDS)",
     frame = TRUE,
     col = "pink")

# Creating the regression model using the Robust package

MODEL 1

set.seed(777)

model1 <- lmrob(dataf$Academic_ranking ~ dataf$ProfSalary_average )
summary(model1)
## 
## Call:
## lmrob(formula = dataf$Academic_ranking ~ dataf$ProfSalary_average)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -56.163 -14.769  -1.452  14.395  54.191 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               1.487e+02  8.505e+00   17.48   <2e-16 ***
## dataf$ProfSalary_average -7.385e-04  5.696e-05  -12.96   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 21.95 
## Multiple R-squared:  0.4525, Adjusted R-squared:  0.4468 
## Convergence in 9 IRWLS iterations
## 
## Robustness weights: 
##  8 weights are ~= 1. The remaining 90 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4925  0.8748  0.9508  0.9165  0.9809  0.9989 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         1.020e-03         3.683e-07         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0)
plot(model1)
## recomputing robust Mahalanobis distances
## saving the robust distances 'MD' as part of 'model1'

Adding variables to the model get rid of OVB

model1.2 <- lmrob(log(dataf$Academic_ranking) ~ log(dataf$ProfSalary_average) )
summary(model1.2)
## 
## Call:
## lmrob(formula = log(dataf$Academic_ranking) ~ log(dataf$ProfSalary_average))
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.32200 -0.43354 -0.08175  0.34457  1.12445 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                    34.8797     4.5123   7.730 1.05e-11 ***
## log(dataf$ProfSalary_average)  -2.6391     0.3849  -6.856 6.82e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.5691 
## Multiple R-squared:  0.4126, Adjusted R-squared:  0.4065 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  6 observations c(21,27,35,40,50,98)
##   are outliers with |weight| <= 0.00057 ( < 0.001); 
##  7 weights are ~= 1. The remaining 85 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3064  0.9146  0.9596  0.9224  0.9837  0.9982 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##         1.548e+00         5.000e-01         4.685e+00         1.000e-07 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##         1.000e-07         1.000e-10         1.000e-07         1.000e-10 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##         1.020e-03         2.222e-11         5.000e-01         5.000e-01 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0)

MODEL 2 ADDING Acceptance rate

model2 <- lmrob(dataf$Academic_ranking ~ dataf$ProfSalary_average + dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants)
options(scipen =999)
summary(model2)
## 
## Call:
## lmrob(formula = dataf$Academic_ranking ~ dataf$ProfSalary_average + dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -56.307 -14.281  -1.085  15.535  55.506 
## 
## Coefficients:
##                                                                   Estimate
## (Intercept)                                                   108.13347042
## dataf$ProfSalary_average                                       -0.00053926
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants   0.27529940
##                                                                 Std. Error
## (Intercept)                                                    17.88799835
## dataf$ProfSalary_average                                        0.00009183
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants   0.12396073
##                                                               t value
## (Intercept)                                                     6.045
## dataf$ProfSalary_average                                       -5.872
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants   2.221
##                                                                   Pr(>|t|)    
## (Intercept)                                                   0.0000000292 ***
## dataf$ProfSalary_average                                      0.0000000630 ***
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants       0.0287 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 21.95 
## Multiple R-squared:  0.4731, Adjusted R-squared:  0.462 
## Convergence in 8 IRWLS iterations
## 
## Robustness weights: 
##  10 weights are ~= 1. The remaining 88 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4903  0.8810  0.9528  0.9174  0.9837  0.9980 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##      1.5476400000      0.5000000000      4.6850610000      0.0000001000 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##      0.0000001000      0.0000000001      0.0000001000      0.0000000001 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##      0.0010204082      0.0000003683      0.5000000000      0.5000000000 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0)
plot(model2)
## recomputing robust Mahalanobis distances
## saving the robust distances 'MD' as part of 'model2'

MODEL 3 ADDING faculty total

model3 <- lmrob(dataf$Academic_ranking ~ dataf$ProfSalary_average + dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants + dataf$Faculty_total)

Options(scipen = 999) force r to use scientific notation

options(scipen =999)
summary(model3)
## 
## Call:
## lmrob(formula = dataf$Academic_ranking ~ dataf$ProfSalary_average + dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants + 
##     dataf$Faculty_total)
##  \--> method = "MM"
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -37.463 -13.704  -1.134  13.386  47.460 
## 
## Coefficients:
##                                                                  Estimate
## (Intercept)                                                   90.05655436
## dataf$ProfSalary_average                                      -0.00031125
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants  0.40681970
## dataf$Faculty_total                                           -0.01026702
##                                                                Std. Error
## (Intercept)                                                   17.07592127
## dataf$ProfSalary_average                                       0.00009754
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants  0.11800970
## dataf$Faculty_total                                            0.00196334
##                                                               t value
## (Intercept)                                                     5.274
## dataf$ProfSalary_average                                       -3.191
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants   3.447
## dataf$Faculty_total                                            -5.229
##                                                                  Pr(>|t|)    
## (Intercept)                                                   0.000000851 ***
## dataf$ProfSalary_average                                         0.001927 ** 
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants    0.000849 ***
## dataf$Faculty_total                                           0.000001026 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 20.11 
## Multiple R-squared:  0.5849, Adjusted R-squared:  0.5717 
## Convergence in 8 IRWLS iterations
## 
## Robustness weights: 
##  4 weights are ~= 1. The remaining 94 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.5569  0.9050  0.9564  0.9312  0.9877  0.9989 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##      1.5476400000      0.5000000000      4.6850610000      0.0000001000 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##      0.0000001000      0.0000000001      0.0000001000      0.0000000001 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##      0.0010204082      0.0000003683      0.5000000000      0.5000000000 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0)
plot(model3)
## recomputing robust Mahalanobis distances
## saving the robust distances 'MD' as part of 'model3'

Model 4 ADDING student faculty ratio

model4 <- lmrob(dataf$Academic_ranking ~ dataf$ProfSalary_average + dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants + dataf$Faculty_total + dataf$Student_faculty_ratio)
summary(model4)
## 
## Call:
## lmrob(formula = dataf$Academic_ranking ~ dataf$ProfSalary_average + dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants + 
##     dataf$Faculty_total + dataf$Student_faculty_ratio)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -35.3090 -14.0619  -0.8785  12.7334  48.2431 
## 
## Coefficients:
##                                                                  Estimate
## (Intercept)                                                   113.9418680
## dataf$ProfSalary_average                                       -0.0004071
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants   0.4687232
## dataf$Faculty_total                                            -0.0099065
## dataf$Student_faculty_ratio                                    -0.9581177
##                                                                Std. Error
## (Intercept)                                                    24.9143573
## dataf$ProfSalary_average                                        0.0001274
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants   0.1107790
## dataf$Faculty_total                                             0.0019371
## dataf$Student_faculty_ratio                                     0.6196780
##                                                               t value
## (Intercept)                                                     4.573
## dataf$ProfSalary_average                                       -3.196
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants   4.231
## dataf$Faculty_total                                            -5.114
## dataf$Student_faculty_ratio                                    -1.546
##                                                                 Pr(>|t|)    
## (Intercept)                                                   0.00001478 ***
## dataf$ProfSalary_average                                          0.0019 ** 
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants 0.00005445 ***
## dataf$Faculty_total                                           0.00000168 ***
## dataf$Student_faculty_ratio                                       0.1255    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 19.35 
## Multiple R-squared:  0.5977, Adjusted R-squared:  0.5804 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  6 weights are ~= 1. The remaining 92 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.5140  0.8983  0.9509  0.9263  0.9836  0.9986 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##      1.5476400000      0.5000000000      4.6850610000      0.0000001000 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##      0.0000001000      0.0000000001      0.0000001000      0.0000000001 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##      0.0010204082      0.0000003683      0.5000000000      0.5000000000 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0)
plot(model4)
## recomputing robust Mahalanobis distances
## saving the robust distances 'MD' as part of 'model4'

# Model 5

model5 <- lmrob(dataf$Academic_ranking ~ dataf$ProfSalary_average + dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants + dataf$Faculty_total + dataf$Student_faculty_ratio + dataf$StemDegreesGranted_total)
summary(model5)
## 
## Call:
## lmrob(formula = dataf$Academic_ranking ~ dataf$ProfSalary_average + dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants + 
##     dataf$Faculty_total + dataf$Student_faculty_ratio + dataf$StemDegreesGranted_total)
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -37.1168 -12.8992  -0.4985  11.8133  50.2387 
## 
## Coefficients:
##                                                                  Estimate
## (Intercept)                                                   109.0186561
## dataf$ProfSalary_average                                       -0.0004293
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants   0.4304703
## dataf$Faculty_total                                            -0.0054040
## dataf$Student_faculty_ratio                                    -0.0551855
## dataf$StemDegreesGranted_total                                 -0.0149373
##                                                                Std. Error
## (Intercept)                                                    22.5609830
## dataf$ProfSalary_average                                        0.0001152
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants   0.1089483
## dataf$Faculty_total                                             0.0016713
## dataf$Student_faculty_ratio                                     0.5919082
## dataf$StemDegreesGranted_total                                  0.0026226
##                                                               t value
## (Intercept)                                                     4.832
## dataf$ProfSalary_average                                       -3.727
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants   3.951
## dataf$Faculty_total                                            -3.233
## dataf$Student_faculty_ratio                                    -0.093
## dataf$StemDegreesGranted_total                                 -5.696
##                                                                  Pr(>|t|)    
## (Intercept)                                                   0.000005377 ***
## dataf$ProfSalary_average                                         0.000334 ***
## dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants    0.000152 ***
## dataf$Faculty_total                                              0.001699 ** 
## dataf$Student_faculty_ratio                                      0.925921    
## dataf$StemDegreesGranted_total                                0.000000146 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 17.35 
## Multiple R-squared:  0.6701, Adjusted R-squared:  0.6522 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  6 weights are ~= 1. The remaining 92 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3819  0.8959  0.9522  0.9228  0.9862  0.9985 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##      1.5476400000      0.5000000000      4.6850610000      0.0000001000 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##      0.0000001000      0.0000000001      0.0000001000      0.0000000001 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##      0.0010204082      0.0000003683      0.5000000000      0.5000000000 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0)
plot(model5)
## recomputing robust Mahalanobis distances
## saving the robust distances 'MD' as part of 'model5'

Model 6 Log-Log model

Changing the model to a log - log to get the all the changens in %

model6 <- lmrob( log(dataf$Academic_ranking) ~ log(dataf$ProfSalary_average) + log(dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants) + log(dataf$Faculty_total) + log(dataf$Student_faculty_ratio) + log(dataf$StemDegreesGranted_total))
summary(model6)
## 
## Call:
## lmrob(formula = log(dataf$Academic_ranking) ~ log(dataf$ProfSalary_average) + 
##     log(dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants) + 
##     log(dataf$Faculty_total) + log(dataf$Student_faculty_ratio) + log(dataf$StemDegreesGranted_total))
##  \--> method = "MM"
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.06524 -0.31054 -0.03974  0.23550  0.94913 
## 
## Coefficients:
##                                                                    Estimate
## (Intercept)                                                        18.75030
## log(dataf$ProfSalary_average)                                      -1.07886
## log(dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants)  0.52462
## log(dataf$Faculty_total)                                           -0.44636
## log(dataf$Student_faculty_ratio)                                   -0.10585
## log(dataf$StemDegreesGranted_total)                                -0.10484
##                                                                    Std. Error
## (Intercept)                                                           5.43620
## log(dataf$ProfSalary_average)                                         0.44053
## log(dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants)    0.13536
## log(dataf$Faculty_total)                                              0.11325
## log(dataf$Student_faculty_ratio)                                      0.28049
## log(dataf$StemDegreesGranted_total)                                   0.08365
##                                                                    t value
## (Intercept)                                                          3.449
## log(dataf$ProfSalary_average)                                       -2.449
## log(dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants)   3.876
## log(dataf$Faculty_total)                                            -3.942
## log(dataf$Student_faculty_ratio)                                    -0.377
## log(dataf$StemDegreesGranted_total)                                 -1.253
##                                                                    Pr(>|t|)    
## (Intercept)                                                        0.000850 ***
## log(dataf$ProfSalary_average)                                      0.016219 *  
## log(dataf$AcceptanceRate_NumberAdmits_divided_by_NumberApplicants) 0.000199 ***
## log(dataf$Faculty_total)                                           0.000158 ***
## log(dataf$Student_faculty_ratio)                                   0.706761    
## log(dataf$StemDegreesGranted_total)                                0.213280    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Robust residual standard error: 0.4694 
## Multiple R-squared:  0.6201, Adjusted R-squared:  0.5994 
## Convergence in 11 IRWLS iterations
## 
## Robustness weights: 
##  5 observations c(21,27,35,50,98) are outliers with |weight| = 0 ( < 0.001); 
##  6 weights are ~= 1. The remaining 87 ones are summarized as
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01154 0.91110 0.96140 0.92060 0.98570 0.99890 
## Algorithmic parameters: 
##        tuning.chi                bb        tuning.psi        refine.tol 
##  1.54764000000000  0.50000000000000  4.68506100000000  0.00000010000000 
##           rel.tol         scale.tol         solve.tol          zero.tol 
##  0.00000010000000  0.00000000010000  0.00000010000000  0.00000000010000 
##       eps.outlier             eps.x warn.limit.reject warn.limit.meanrw 
##  0.00102040816327  0.00000000002222  0.50000000000000  0.50000000000000 
##      nResample         max.it       best.r.s       k.fast.s          k.max 
##            500             50              2              1            200 
##    maxit.scale      trace.lev            mts     compute.rd fast.s.large.n 
##            200              0           1000              0           2000 
##                   psi           subsampling                   cov 
##            "bisquare"         "nonsingular"         ".vcov.avar1" 
## compute.outlier.stats 
##                  "SM" 
## seed : int(0)

Creating a side by side table for all of our models

SBST <- list("Model 1" = model1,
               "Model 2" = model2,
               "Model 3" = model3,
               "Model 4" = model4,
               "Model 5" = model5,
             "Model 6" = model6)
modelsummary(SBST,
             fmt = 5,
             stars = TRUE,
             output = "table5.docx")