if (!require("tidyverse"))
  install.packages("tidyverse")
## Loading required package: tidyverse
## Warning: package 'tidyverse' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tidyverse)
library(dplyr)
library(ggplot2)

mydata <- read.csv("https://raw.githubusercontent.com/drkblake/Data/main/Educ_Income_2022.csv")
head(mydata,10)
##    GEOID          County     State PctCollege FamIncome
## 1  47001 Anderson County Tennessee       24.5     75637
## 2  47003  Bedford County Tennessee       17.1     71159
## 3  47005   Benton County Tennessee       11.1     65800
## 4  47007  Bledsoe County Tennessee       10.3     59695
## 5  47009   Blount County Tennessee       26.0     85194
## 6  47011  Bradley County Tennessee       23.9     75270
## 7  47013 Campbell County Tennessee       12.9     61629
## 8  47015   Cannon County Tennessee       17.5     71000
## 9  47017  Carroll County Tennessee       19.8     68542
## 10 47019   Carter County Tennessee       21.1     61776
# Specify the DV and IV
mydata$DV <- mydata$FamIncome #Edit YOURDVNAME
mydata$IV <- mydata$PctCollege #Edit YOURIVNAME

# Look at the DV and IV
ggplot(mydata, aes(x = FamIncome)) + geom_histogram(color = "black", fill = "#1f78b4")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(mydata, aes(x = PctCollege)) + geom_histogram(color = "black", fill = "#1f78b4")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

# Creating and summarizing an initial regression model called myreg, and checking for bivariate outliers.
options(scipen = 999)
myreg <- lm(DV ~ IV,
            data = mydata)
plot(mydata$FamIncome, mydata$PctCollege)
abline(lm(mydata$PctCollege ~ mydata$FamIncome))

# Real or random?
summary(myreg)
## 
## Call:
## lm(formula = DV ~ IV, data = mydata)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -15380.9  -5904.4    538.2   4730.4  17582.3 
## 
## Coefficients:
##             Estimate Std. Error t value            Pr(>|t|)    
## (Intercept) 44664.55    1903.16   23.47 <0.0000000000000002 ***
## IV           1349.18      90.88   14.85 <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7516 on 93 degrees of freedom
## Multiple R-squared:  0.7032, Adjusted R-squared:  0.7001 
## F-statistic: 220.4 on 1 and 93 DF,  p-value: < 0.00000000000000022

Many of the counties show median incomes and college graduates are below the regression line. Many Counties indicate roughly twenty to twenty-five percent of the citizens are college graduates. Tennessee has many counties whose median income is roughly sixty to seventy thousand dollars.