library(wooldridge)
## Warning: package 'wooldridge' was built under R version 4.4.2
data("discrim")
  1. Değişkenlerin Anlamları:

Bağımlı Değişken (psoda):

Açıklanmaya veya tahmin edilmeye çalışılan sonuç değişkenidir. Muhtemelen soda tüketimi veya soda tercihlerini temsil etmektedir.

Bağımsız Değişkenler:

prpblck: Siyahi nüfusun oranı. Soda tüketiminin bu demografik faktöre göre nasıl değiştiğini yansıtır.

income: Gelir düzeyi. Soda tüketiminin ekonomik koşullara göre nasıl değiştiğini açıklar.

Katsayılar (𝛽0,𝛽1, 𝛽 2 ):

Hata Terimi (u):

Modelde yer almayan ve psoda’yı etkileyen diğer tüm faktörleri içerir.

mean(discrim$prpblck)
## [1] NA
sd(discrim$prpblck)
## [1] NA
mean(discrim$income)
## [1] NA
sd(discrim$income)
## [1] NA
sum(is.na(discrim$prpblck))
## [1] 1
sum(is.na(discrim$income))
## [1] 1
mean(discrim$prpblck,na.rm = TRUE)
## [1] 0.1134864
sd(discrim$prpblck,na.rm = TRUE)
## [1] 0.1824165
mean(discrim$income, na.rm = TRUE)
## [1] 47053.78
sd(discrim$income, na.rm = TRUE)
## [1] 13179.29
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.4.2
library(vtable)
## Warning: package 'vtable' was built under R version 4.4.2
sumtable(discrim, summ =  c("notNA(x)", "countNA(x)", "mean(x)", "sd(x)"))
Summary Statistics
Variable NotNA CountNA Mean Sd
psoda 402 8 1 0.089
pfries 393 17 0.92 0.11
pentree 398 12 1.3 0.64
wagest 390 20 4.6 0.35
nmgrs 404 6 3.4 1
nregs 388 22 3.6 1.2
hrsopen 410 0 14 2.8
emp 404 6 18 9.4
psoda2 388 22 1 0.094
pfries2 382 28 0.94 0.11
pentree2 386 24 1.4 0.65
wagest2 389 21 5 0.25
nmgrs2 404 6 3.5 1.1
nregs2 388 22 3.6 1.2
hrsopen2 399 11 14 2.8
emp2 397 13 18 8.6
compown 410 0 0.34 0.48
chain 410 0 2.1 1.1
density 409 1 4562 5132
crmrte 409 1 0.053 0.047
state 410 0 1.2 0.39
prpblck 409 1 0.11 0.18
prppov 409 1 0.071 0.067
prpncar 409 1 0.11 0.12
hseval 409 1 147399 56070
nstores 410 0 3.1 1.8
income 409 1 47054 13179
county 410 0 14 8
lpsoda 402 8 0.04 0.085
lpfries 393 17 -0.088 0.12
lhseval 409 1 12 0.39
lincome 409 1 11 0.28
ldensity 409 1 8 1
NJ 410 0 0.81 0.39
BK 410 0 0.42 0.49
KFC 410 0 0.2 0.4
RR 410 0 0.24 0.43

c.

discrimreg <- lm(psoda~prpblck+income, data = discrim)
summary(discrimreg)
## 
## Call:
## lm(formula = psoda ~ prpblck + income, data = discrim)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.29401 -0.05242  0.00333  0.04231  0.44322 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 9.563e-01  1.899e-02  50.354  < 2e-16 ***
## prpblck     1.150e-01  2.600e-02   4.423 1.26e-05 ***
## income      1.603e-06  3.618e-07   4.430 1.22e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.08611 on 398 degrees of freedom
##   (9 observations deleted due to missingness)
## Multiple R-squared:  0.06422,    Adjusted R-squared:  0.05952 
## F-statistic: 13.66 on 2 and 398 DF,  p-value: 1.835e-06

psoda = 0.956+0.115prpblck +0.0000016income + u

Örnek boyutu 399 gözlemdir (398 serbestlik derecesi ve 9 eksik gözlem ile gösterilir) ve ayarlanmış R2 0.595’tir. prpblck katsayısı, her şey eşit olduğunda, prpblck %10 artarsa, soda fiyatının ekonomik olarak önemli olmayan derecede yaklaşık 1,2 sent artacağını gösterir.

d.

basitdiscrimreg <- lm(psoda~prpblck, data = discrim)
summary(basitdiscrimreg)
## 
## Call:
## lm(formula = psoda ~ prpblck, data = discrim)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.30884 -0.05963  0.01135  0.03206  0.44840 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.03740    0.00519  199.87  < 2e-16 ***
## prpblck      0.06493    0.02396    2.71  0.00702 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.0881 on 399 degrees of freedom
##   (9 observations deleted due to missingness)
## Multiple R-squared:  0.01808,    Adjusted R-squared:  0.01561 
## F-statistic: 7.345 on 1 and 399 DF,  p-value: 0.007015

e

logdiscrimreg <- lm(log(psoda)~prpblck+log(income), data = discrim)
summary(logdiscrimreg)
## 
## Call:
## lm(formula = log(psoda) ~ prpblck + log(income), data = discrim)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.33563 -0.04695  0.00658  0.04334  0.35413 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.79377    0.17943  -4.424 1.25e-05 ***
## prpblck      0.12158    0.02575   4.722 3.24e-06 ***
## log(income)  0.07651    0.01660   4.610 5.43e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.0821 on 398 degrees of freedom
##   (9 observations deleted due to missingness)
## Multiple R-squared:  0.06809,    Adjusted R-squared:  0.06341 
## F-statistic: 14.54 on 2 and 398 DF,  p-value: 8.039e-07
paste( (0.2*100)*0.122, "yüzdelik artış")
## [1] "2.44 yüzdelik artış"

“Prpblck” yüzde 20 artarsa, psoda tahmini olarak %2,44 artacaktır

f

logdiscrimregprpov <- lm(log(psoda)~prpblck+log(income)+prppov, data = discrim)
summary(logdiscrimregprpov)
## 
## Call:
## lm(formula = log(psoda) ~ prpblck + log(income) + prppov, data = discrim)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.32218 -0.04648  0.00651  0.04272  0.35622 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.46333    0.29371  -4.982  9.4e-07 ***
## prpblck      0.07281    0.03068   2.373   0.0181 *  
## log(income)  0.13696    0.02676   5.119  4.8e-07 ***
## prppov       0.38036    0.13279   2.864   0.0044 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.08137 on 397 degrees of freedom
##   (9 observations deleted due to missingness)
## Multiple R-squared:  0.08696,    Adjusted R-squared:  0.08006 
## F-statistic:  12.6 on 3 and 397 DF,  p-value: 6.917e-08

prppov eklemek, prpblck katsayısının 0,0738’e düşmesine neden olur.

g

cor(log(discrim$income), discrim$prppov, use = "complete.obs")
## [1] -0.838467

Korelasyon yaklaşık olarak -0.838’dir. Bu mantıklı, çünkü grideki düşüşlerin daha yüksek yoksulluk oranlarıyla sonuçlanması beklenebilir.

h

Yüksek düzeyde ilişkili olmalarına rağmen, her ikisinin de dahil edilmesi mükemmel bir doğrusallık ile sonuçlanmaz ve bunun yerine, ayırt edici etkiyi izole etmeye yardımcı olan başka bir kontrol değişkeni ekleyerek modeli tamamlar.

f testi

# Veri setinden iki grup seçelim
group1 <- discrim$psoda[discrim$prpblck < 0.6]  
group2 <- discrim$psoda[discrim$prpblck >= 0.6]  
t_test_result <- t.test(group1, group2)
print(t_test_result)
## 
##  Welch Two Sample t-test
## 
## data:  group1 and group2
## t = -2.0888, df = 18.317, p-value = 0.05095
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.0982311820  0.0002242285
## sample estimates:
## mean of x mean of y 
##  1.042663  1.091667
  1. Varsayım Kontrolleri

T-testi için bazı varsayımlar vardır, bunlar:

Bağımsız gözlemler. Normal dağılım: Verinin normal dağılıp dağılmadığı kontrol edilmelidir. Varyansların homojenliği (eşitliği): İki grubun varyansları birbirine yakın olmalıdır. Varyansların eşitliği varsayımını kontrol etmek için var.test() fonksiyonunu kullanabilirsiniz:

# Varyansların eşitliğini test etme
var_test_result <- var.test(group1, group2)
print(var_test_result)
## 
##  F test to compare two variances
## 
## data:  group1 and group2
## F = 0.80927, num df = 382, denom df = 17, p-value = 0.4664
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.3566441 1.4659203
## sample estimates:
## ratio of variances 
##           0.809271

F istatistiği: 0.80927 (grup 1’in varyansı, grup 2’ninkine göre daha küçük). p-değeri: 0.4664, bu da 0.05’ten büyük olduğu için null hipotezini reddetmek için yeterli kanıt olmadığını gösterir. Yani, varyanslar arasında anlamlı bir fark yok. %95 güven aralığı: [0.3566, 1.4659], bu aralık 1’i içeriyor, bu da varyansların eşit olabileceğini düşündürür. Sonuç: İki grup arasındaki varyanslar arasında anlamlı bir fark olmadığı sonucuna varılabilir.

  1. Veri Normalitesini Test Etme

Verilerin normal dağılıp dağılmadığını test etmek için shapiro.test() fonksiyonunu kullanabilirsiniz:

# Normal dağılımı test etme
shapiro_group1 <- shapiro.test(group1)
shapiro_group2 <- shapiro.test(group2)
# Sonuçları yazdır
print(shapiro_group1)
## 
##  Shapiro-Wilk normality test
## 
## data:  group1
## W = 0.95411, p-value = 1.511e-09
print(shapiro_group2)
## 
##  Shapiro-Wilk normality test
## 
## data:  group2
## W = 0.92514, p-value = 0.1594