ford <- read.csv("ford.csv")
ford<-ford[ford$model !=" B-MAX",]
ford<-ford[ford$model !=" Ka+" ,]
ford<-ford[ford$model !=" S-MAX",]
ford<-ford[ford$model !=" C-MAX",]
ford<-ford[ford$model !=" Fusion",]
ford<-ford[ford$model !=" Kuga",]
ford<-ford[ford$model !=" Streetka",]
ford<-ford[ford$model != " EcoSport",]
ford<-ford[ford$model !=" Galaxy",]
ford<-ford[ford$model !=" Mondeo",]
ford<-ford[ford$model !=" Tourneo Connect",]
ford<-ford[ford$model !=" Edge" ,]
ford<-ford[ford$model !=" Grand C-MAX" ,]
ford<-ford[ford$model !=" Mustang" ,]
ford<-ford[ford$model !=" Tourneo Custom" ,]
ford<-ford[ford$model != " Escort" ,]
ford<-ford[ford$model !=" Grand Tourneo Connect" ,]
ford<-ford[ford$model !=" Puma" ,]
ford<-ford[ford$model !=" Transit Tourneo" ,]
ford<-ford[ford$model !=" KA" ,]
ford<-ford[ford$model !=" Ranger" ,]
ford<-ford[ford$year !=1996,]
ford<-ford[ford$year !=1998,]
ford<-ford[ford$year !=2000,]
ford<-ford[ford$year !=2002,]
ford<-ford[ford$year !=2003,]
ford<-ford[ford$year !=2004,]
ford<-ford[ford$year !=2005,]
ford<-ford[ford$year !=2006,]
ford<-ford[ford$year !=2007,]
ford<-ford[ford$year !=2008,]
ford<-ford[ford$year !=2009,]
ford<-ford[ford$year !=2060,]
baujahr<-unique(ford$year)
sort(baujahr)
[1] 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020
unique(ford$fuelType)
[1] "Petrol" "Diesel"
(ANOVA Multi Factor with Replication)
\(H_0\):Es gibt KEINEN Unterschied zwischen den Getriebevarianten und dem Preis. \(H_1\):Es gibt EINEN Unterschied zwischen den Getriebevarianten und dem Preis. #### Haupteffekt B
\(H_0\):Es gibt KEINEN Unterschied zwischen den Treibstoffvarianten und dem Preis. \(H_1\):Es gibt EINEN Unterschied zwischen den Treibstoffvarianten und dem Preis. #### Interaktion AxB
\(H_0\): Es gibt KEINEN Unterschied zwischen den Getriebevarianten, bzw. den Treibstoffvarianten und dem Preis. \(H_1\): Es gibt EINEN Unterschied zwischen den Getriebevarianten, bzw. den Treibstoffvarianten und dem Preis.
Die abhängige Variable ist mindestens intervallskaliert -> Preis ist gegeben, sogar Ratioskaliert.
Die unabhängigen Variablen (Getriebe und Treibstoff) sind kategorial (nominal- oder ordinalskaliert) -> sind sie. Die durch die Faktoren gebildeten Gruppen sind unabhängig -> Entweder hat das Auto automatische / manuelle / semiautomatische Getriebe, bzw. der Treibstoff ist entweder Petrol / Diesel.
Die abhängige Variablen ist normalverteilt innerhalb jeder der Gruppen. Ab 25 Probanden pro Gruppe sind Verletzungen dieser Voraussetzung unproblematisch-> siehe Histogramm
Homogenität der Varianzen: Die Gruppen stammen aus Grundgesamtheiten mit annähernd identischen Varianzen der abhängigen Variablen -> siehe Levene-Test
library(dplyr)
Attache Paket: ‘dplyr’
Die folgenden Objekte sind maskiert von ‘package:stats’:
filter, lag
Die folgenden Objekte sind maskiert von ‘package:base’:
intersect, setdiff, setequal, union
library(ggplot2)
Need help getting started? Try the R Graphics Cookbook:
https://r-graphics.org
ford %>%
group_by(fuelType) %>%
ggplot(aes(price, color=fuelType)) +
geom_histogram(aes(fill = fuelType), binwidth = 1500) +
facet_wrap(~fuelType) +
theme_grey()+
scale_color_manual(values=c("olivedrab3", "maroon2", "royalblue2"))+
scale_fill_manual(values=c("olivedrab3", "maroon2", "royalblue2"))+
theme(axis.text.x = element_text(angle = 45))+
labs(x= "Preise",y = "Anzahl" )
Die Daten sind normalverteilt innerhalb der Gruppe Treibstoff in Bezug auf die Preise ##### Getriebe
library(ggpubr)
Registered S3 method overwritten by 'data.table':
method from
print.data.table
gghistogram(ford, x = "price", bins = 50,
add = "mean", rug = TRUE,
color = "transmission", fill = "transmission",
palette = c("violetred1", "#00AFBB", "olivedrab3"))
# library
library(ggplot2)
library(ggExtra)
# classic plot :
p <- ggplot(ford, aes(x=price, y=transmission, color=fuelType, size=fuelType)) +
geom_point() +
theme(legend.position="right")
# Set relative size of marginal plots (main plot 10x bigger than marginals)
# Custom marginal plots:
p2 <- ggMarginal(p, type="histogram", fill = "slateblue", xparams = list( bins=10))
Warning: Using size for a discrete variable is not advised.
Warning: Using size for a discrete variable is not advised.
Warning in `[<-.mapped_discrete`(`*tmp*`, finite & x < range[1], value = "Automatic") :
NAs introduced by coercion
Warning in `[<-.mapped_discrete`(`*tmp*`, finite & x > range[2], value = "Manual") :
NAs introduced by coercion
Warning: Removed 11007 rows containing non-finite values (stat_bin).
# Show only marginal plot for x axis
p2
#
# ford %>%
# group_by(transmission) %>%
# ggplot(aes(price, color=transmission)) +
# geom_histogram(aes(fill = transmission), binwidth = 1500) +
# scale_color_manual(values=c("olivedrab3", "maroon2", "royalblue2"))+
# scale_fill_manual(values=c("olivedrab3", "maroon2", "royalblue2"))+
# facet_wrap(~transmission) +
# theme_grey()+
# theme(axis.text.x = element_text(angle = 45))+
# labs(x= "Preis",y = "Anzahl" )
Die Daten sind normalverteilt innerhalb der Gruppe Getriebe in Bezug auf die Preise
ggplot(ford, aes(x=price))+
geom_histogram()+
scale_color_manual(values=c("olivedrab3", "maroon2", "royalblue2"))+
scale_fill_manual(values=c("olivedrab3", "maroon2", "royalblue2"))+
facet_wrap(transmission~fuelType, ncol = 2)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Ab 25 Teilnehmer pro Gruppe ist das Testverfahren robust.
ggplot(ford, aes(transmission, price, fill=factor(fuelType))) +
geom_boxplot() +
theme_minimal()+
scale_fill_manual(values=c("maroon2", "royalblue2"))+
labs(fill = "Treibstoff", x="Getriebe", y="price")
Bei Manuell tauchen viele Ausreißer auf, da die jeweiligen n hier am größten sind. Mehr Daten bedeutet mehr Ausreißer.
ford %>%
group_by(fuelType) %>%
summarize(Anzahl = n(), Mittelwert = mean(price), Median = median(price), Standardabweichung = sd(price)) %>%
mutate_if(is.numeric, round, 2)
Beim Diesel Treibstoff ist der Mittelwert 11621.83 (SD = 4310.33, n = 1975). Beim Benzin Treibstoff ist der Mittelwert 11512.95 (SD = 3720.79, n = 9032). der sehr geringe Unterschied lässt vermuten, dass keine Signifikanz vorliegt.
ford %>%
group_by(transmission) %>%
summarize(Anzahl = n(), Mittelwert = mean(price), Median = median(price), Standardabweichung = sd(price)) %>%
mutate_if(is.numeric, round, 2)
Automatic hat 14511.60 als Mittelwert von Preis.
Manual hat 11344.09 als Mittelwert von Preis.
Semi-Auto hat 11830.83 als Mittelwert von Preis.
Es sind größere Unterschiede zu sehen als beim Treibstoff, was eher eine Signifikanz vermuten lässt. Die folgende Analyse wird das näher erläutern.
ford %>%
group_by(transmission, fuelType) %>%
summarize(Anzahl = n(), Mittelwert = mean(price), Median = median(price), Standardabweichung = sd(price)) %>%
mutate_if(is.numeric, round, 2)
`summarise()` has grouped output by 'transmission'. You can override using the `.groups` argument.
`mutate_if()` ignored the following grouping variables:
Column `transmission`
Bei den Automatic Diesel (M = 17633.69, SD = 3339.23) Autos ist der Mittelwert vom Preis am höchsten. Automatic Benzin (M = 13235.74, SD = 3994.54) hat den zweithöchsten, gefolgt von Semi-Auto Diesel (M = 12755.83). Die letzten drei sind in der Reihenfolge Semi-Auto Benzin(M = 11734.91, SD = 2881.74), Manuell Benzin (M = 11414.72, SD = 3721.70) und Manuell Diesel (M = 11015.11, SD = 3950.84)
mittel <-tapply(ford$price, list(ford$fuelType, ford$transmission), mean, na.rm=TRUE)
mittel
Automatic Manual Semi-Auto
Diesel 17633.69 11015.11 12755.83
Petrol 13235.74 11414.72 11734.91
sd <-tapply(ford$price, list(ford$fuelType, ford$transmission), sd, na.rm=TRUE)
sd
Automatic Manual Semi-Auto
Diesel 3339.231 3950.843 3275.499
Petrol 3994.540 3721.701 2881.742
anzahlprogruppe <- tapply(ford$price, list(ford$fuelType, ford$transmission), function(x) sum(!is.na(x)))
anzahlprogruppe
Automatic Manual Semi-Auto
Diesel 170 1763 42
Petrol 416 8211 405
unique(ford$transmission)
[1] "Automatic" "Manual" "Semi-Auto"
ford$transmission <- factor(ford$transmission, levels=c("Manual", "Semi-Auto", "Automatic"))
unique(ford$transmission)
[1] Automatic Manual Semi-Auto
Levels: Manual Semi-Auto Automatic
ggplot(ford, aes(x=transmission, y=price, group=fuelType, color= fuelType))+
stat_summary(fun.y = mean, geom="point", size=3)+
stat_summary(fun.y = mean, geom="line")+
stat_summary(fun.data = mean_cl_normal, geom="errorbar",width=.2, size=.25)+
labs(x="transmission", y="Price")+
theme_classic()
Warning: `fun.y` is deprecated. Use `fun` instead.
Warning: `fun.y` is deprecated. Use `fun` instead.
Registered S3 method overwritten by 'htmlwidgets':
method from
print.htmlwidget tools:rstudio
## Charge libraries:
#library(ggplot2)
#library(gganimate)
# Make a ggplot, but add frame=year: one image per year
##ggplot(ford, aes(price, transmission, size = model, color = fuelType)) +
# geom_point() +
# scale_x_log10() +
# theme_bw() +
# # gganimate specific bits:
# labs(title = 'Price: {frame_time}', x = 'Price', y = 'transmission') +
# transition_time(price) +
# ease_aes('linear')
## Save at gif:
#anim_save("Year.gif")
Der Levene-Test prüft die Nullhypothese, dass die Varianzen der Gruppen sich nicht unterscheiden. Ist der Levene-Test nicht signifikant, so kann von homogenen Varianzen ausgegangen. Wäre der Levene-Test jedoch signifikant, so wäre eine der Grundvoraussetzungen der Varianzanalyse verletzt. Gegen leichte Verletzungen gilt die Varianzanalyse als robust; vor allem bei genügend grossen und etwa gleich grossen Gruppen sind Verletzungen nicht problematisch. Bei ungleich grossen Gruppen führt eine starke Verletzung der Varianzhomogenität zu einer Verzerrung des F-Tests. Alternativ können dann auf den Brown-Forsythe-Test oder den Welch-Test zurückgegriffen werden. Dabei handelt es sich um adjustierte F-Tests.
library(car)
Lade nötiges Paket: carData
Attache Paket: ‘car’
Das folgende Objekt ist maskiert ‘package:dplyr’:
recode
library(carData)
leveneTest(price ~ fuelType*transmission, data = ford, center = "mean")
Levene's Test for Homogeneity of Variance (center = "mean")
Df F value Pr(>F)
group 5 12.516 3.854e-12 ***
11001
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Im vorliegenden Beispiel ist der Levene-Test signifikant (F(5,11001) = 12.516, p < .000 ), sodass von Varianzheterogenität ausgegangen werden kann. Da die Varianzen nicht gleich sind, ist es zu empfehlen eine Korrektur mithilfe des Welch-Tests durchzuführen.
Mit Welch-Korrektur: p < 0.05 => Ergebnis Signifikant –> Varianzen heterogen
Ohne Welch-Korrektur: p > 0.05 => Ergebnis nicht Signifikant –> Varianzen homogen –> H0 mit Annahme Var1=Var2=… -> Var_n wird angenommen
Keine Welch-Korrektur - ist der Standard
mehrAnova1 <- lm(price~transmission*fuelType, data = ford)
myAnova <- Anova(mehrAnova1, type = 3)
myAnova
Anova Table (Type III tests)
Response: price
Sum Sq Df F value Pr(>F)
(Intercept) 2.1391e+11 1 15328.251 < 2.2e-16 ***
transmission 6.8472e+09 2 245.327 < 2.2e-16 ***
fuelType 2.3176e+08 1 16.608 4.629e-05 ***
transmission:fuelType 2.6056e+09 2 93.355 < 2.2e-16 ***
Residuals 1.5352e+11 11001
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
mit Welch-Korrektur ist zur Kontrolle gedacht
Es liegt eine Verletzung der Varianzhomogenität vor(siehe Levene-Test). Daher sollte ein robusterer Test berücksichtigt werden (* mit welch* ). Allerdings bieten sich hier keine weitgehend akzeptierten Verfahren an. Daher wird der Standard weitergeführt.
transmissionwelch <- oneway.test(price~transmission, data = ford, var.equal = F)
transmissionwelch
One-way analysis of means (not assuming equal variances)
data: price and transmission
F = 154.66, num df = 2.0, denom df = 755.1, p-value < 2.2e-16
Für den Faktor transmission wird EIN Haupteffekt ersichtlich. Der Preis scheint demnach abhängig vom Getriebe zu sein (F(2,755.1) = 154.66, p < .000).
fuelwelch <- oneway.test(price~fuelType, data = ford, var.equal = F)
fuelwelch
One-way analysis of means (not assuming equal variances)
data: price and fuelType
F = 1.0836, num df = 1.0, denom df = 2654.3, p-value = 0.298
Für den Faktor Treibstoff wird KEIN Haupteffekt ersichtlich. Der Preis scheint demnach unabhängig vom Treibstoff zu sein (F(1,2654.3) = 1.0836, p = .298).
AXBwelch <- oneway.test(price~fuelType*transmission, data = ford, var.equal = F)
AXBwelch
One-way analysis of means (not assuming equal variances)
data: price and fuelType * transmission
F = 136.67, num df = 5.00, denom df = 336.12, p-value < 2.2e-16
Der Interaktionsterm von Treibstoff und Getriebe auf den Preis ist signifikant (F(5,336.12) = 136.67, p = .000). Der Effekt von der Getriebe hängt demnach zu einem gewissen Teil vom Treibstoff ab.
Ist ein Haupteffekt oder eine Interaktion signifikant, so ist zwar bestätigt, dass ein Effekt vorliegt, doch ist nach wie vor unklar, welche Faktorstufen sich unterscheiden, sobald ein Faktor mehr als zwei Ausprägungen aufweist. (Bei zwei Ausprägungen unterscheiden sich eben diese zwei Ausprägungen voneinander, sonst wäre der F-Test nicht signifikant.) Im vorliegenden Beispiel liegen ein Effekt der Getriebe sowie ein Interaktionseffekt vor. Post-hoc-Tests können einfach eingesetzt werden, um zu prüfen, welche Levels der Getriebe sich unterscheiden. Für die Interaktion ist dies in SPSS nicht implementiert.
Wie bereits erwähnt wurde, beinhaltet der Faktor Getriebe drei Stufen. Aus dem signifikanten Haupteffekt lässt sich nicht ableiten, welche der Faktorstufen einen signifikant unterschiedlichen Einfluss auf die abhängige Variable haben. Zu diesem Zweck werden Tukey-korrigierte Mehrfachvergleiche berechnet.
Bei der Berechnung von Post-hoc-Tests wird im Prinzip für jede Kombination von zwei Mittelwerten ein t-Test durchgeführt. Im aktuellen Beispiel der Getriebe mit drei Gruppen, bzw. zwei Gruppen sind dies 15 Tests. Multiple Tests sind jedoch problematisch, da der Alpha-Fehler (die fälschliche Ablehnung der Nullhypothese) mit der Anzahl der Vergleiche steigt. Wird nur ein t-Test mit einem Signifikanzlevel von .05 durchgeführt, so beträgt die Wahrscheinlichkeit des Nicht-Eintreffens des Alpha-Fehlers 95%. Werden jedoch 15 solcher Paarvergleiche vorgenommen, so beträgt die Nicht-Eintreffens-Wahrscheinlichkeit des Alpha-Fehlers (.95)15 = .4632. Um die Wahrscheinlichkeit des Eintreffens des Alpha-Fehlers zu bestimmen, wird 1 -.4632 = .5367 gerechnet. Die Wahrscheinlichkeit des Eintreffens des Alpha-Fehlers liegt somit bei 53.67%. Diese Fehlerwahrscheinlichkeit wird als “Familywise Error Rate” bezeichnet.
Um dieses Problem zu beheben, kann zum Beispiel die Tukey-Korrektur angewendet werden. Hierbei wird α durch die Anzahl der Paarvergleiche dividiert. Im hier aufgeführten Fall ist dies .05/15 = .00333. Bei diesem Konzept handelt es sich um eine allgemeine Information.
Die Tukey berücksichtigt die Korrektur, daher kann weiter gegen 0.05 getestet werden.
PostHoc <- aov(price ~ transmission*fuelType, data=ford)
#Alternativ auch der Name des Zwischenspeichers "mehr" - PostHoc <- aov(mehr)
TukeyHSD(PostHoc)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = price ~ transmission * fuelType, data = ford)
$transmission
diff lwr upr p adj
Semi-Auto-Manual 486.7479 63.40129 910.0946 0.0193049
Automatic-Manual 3167.5090 2795.30736 3539.7107 0.0000000
Automatic-Semi-Auto 2680.7611 2130.86905 3230.6532 0.0000000
$fuelType
diff lwr upr p adj
Petrol-Diesel 6.40114 -175.4951 188.2974 0.945006
$`transmission:fuelType`
diff lwr upr
Semi-Auto:Diesel-Manual:Diesel 1740.7199 78.32838 3403.1114
Automatic:Diesel-Manual:Diesel 6618.5748 5763.48677 7473.6628
Manual:Petrol-Manual:Diesel 399.6075 120.12415 679.0909
Semi-Auto:Petrol-Manual:Diesel 719.7952 133.08791 1306.5025
Automatic:Petrol-Manual:Diesel 2220.6269 1640.26182 2800.9921
Automatic:Diesel-Semi-Auto:Diesel 4877.8549 3043.15797 6712.5518
Manual:Petrol-Semi-Auto:Diesel -1341.1123 -2988.24570 306.0210
Semi-Auto:Petrol-Semi-Auto:Diesel -1020.9247 -2746.94982 705.1004
Automatic:Petrol-Semi-Auto:Diesel 479.9071 -1243.97258 2203.7867
Manual:Petrol-Automatic:Diesel -6218.9673 -7043.99954 -5393.9350
Semi-Auto:Petrol-Automatic:Diesel -5898.7796 -6871.81235 -4925.7468
Automatic:Petrol-Automatic:Diesel -4397.9479 -5367.16969 -3428.7260
Semi-Auto:Petrol-Manual:Petrol 320.1877 -221.77931 862.1546
Automatic:Petrol-Manual:Petrol 1821.0194 1285.92462 2356.1142
Automatic:Petrol-Semi-Auto:Petrol 1500.8317 757.56806 2244.0954
p adj
Semi-Auto:Diesel-Manual:Diesel 0.0338695
Automatic:Diesel-Manual:Diesel 0.0000000
Manual:Petrol-Manual:Diesel 0.0006589
Semi-Auto:Petrol-Manual:Diesel 0.0062914
Automatic:Petrol-Manual:Diesel 0.0000000
Automatic:Diesel-Semi-Auto:Diesel 0.0000000
Manual:Petrol-Semi-Auto:Diesel 0.1856985
Semi-Auto:Petrol-Semi-Auto:Diesel 0.5411891
Automatic:Petrol-Semi-Auto:Diesel 0.9687149
Manual:Petrol-Automatic:Diesel 0.0000000
Semi-Auto:Petrol-Automatic:Diesel 0.0000000
Automatic:Petrol-Automatic:Diesel 0.0000000
Semi-Auto:Petrol-Manual:Petrol 0.5425235
Automatic:Petrol-Manual:Petrol 0.0000000
Automatic:Petrol-Semi-Auto:Petrol 0.0000001
Wie vermutet, zeichnet sich bei Treibstoff KEINE Signifikanz ab. Die Getriebekombinationen unterscheiden sich signifikant.
Für das vorliegende Beispiel wird ersichtlich, dass sich der fuelType und das transmission bezüglich der Preis signifikant unterscheiden (p < .05).
Was ist sig und was nicht? 11 von 15 Vergleichen sind sig. (p < .05). Nicht sig. sind
Semi-Auto:Petrol-Manual:Petrol (p = 0.5425235),
Semi-Auto:Petrol-Semi-Auto:Diesel (p = 0.5411891),
Automatic:Petrol-Semi-Auto:Diesel (p = 0.9687149),
Manual:Petrol-Semi-Auto:Diesel (p = 0.1856985),
Generalisierbarkeit /Unabhängigkeit - global?
Beide Haupteffekte sind global.
Mit steigendem Automatisierungsgrad des Getriebes steigt der Preis für beide Varianten von Treibstoff.
Manual Diesel, Auto Diesel sind unabhaengig / generalisierbar.
Gruppenbildung?
Eine Regruppierung wird nicht empfohlen und die sechs Gruppen sollten beibehalten werden.
Durch die breite Streuung von Semi-Auto:Diesel übergreift diese Faktorkombination drei - andernfalls unabhängige - Kombinationen.
ford %>%
group_by(transmission, fuelType) %>%
summarize(Anzahl = n(), Mittelwert = mean(price), Median = median(price), Standardabweichung = sd(price)) %>%
mutate_if(is.numeric, round, 2)
`summarise()` has grouped output by 'transmission'. You can override using the `.groups` argument.
`mutate_if()` ignored the following grouping variables:
Column `transmission`
Interaktion?
Für Manuelle Fahrzeuge ist Benzin (M = 11414,72, SD = 3721,7, n = 8211) die teurere Alternative im Vergleich zu Diesel (M = 11015,11, SD = 3950,84, n = 1763). Der Unterschied ist jedoch nicht signifikant ausgefallen im Post-Hoc-Test.
Für Semiautomatische Getriebe sind die Diesel (M = 12755,83, SD = 3275,5, n = 42) teurer als Benziner (M = 11734,91, SD = 2881,74, n = 405). Auch dieser Unterschied ist nicht signifikantausgefallen im Post-Hoc-Test, was hauptsächlich an der vergleichsweise kleinen Samplesize n = 42 für Semi-Auto:Diesel liegt. Mehr Werte hätten diesen Bereich vermutlich mehr geschärft.
Für automatische Getriebe sind ebenfalls Dieselfahrzeuge (M = 17633,69, SD = 3339,23, n = 170) teurer als Benziner (M = 13235,74, SD = 3994,54, n = 416). Dieser Unterschied ist signifikant ausgefallen im Post-Hoc-Test.
Bonferroni und Tukey: sehr strenge Kontrolle des Fehlers 1. Art, zu geringe Teststärke, deshalb zu konservativ. Bei wenigen Paarvergleichen hat Bonferroni mehr Teststärke, bei vielen Paarvergleichen hat Tukey mehr Teststärke.
pairwise.t.test(ford$price, ford$transmission, data=ford, pool.sd=T,var.equal=FALSE)
Pairwise comparisons using t tests with pooled SD
data: ford$price and ford$transmission
Manual Semi-Auto
Semi-Auto 0.0075 -
Automatic <2e-16 <2e-16
P value adjustment method: holm
pairwise.t.test(ford$price, ford$fuelType, data=ford, pool.sd=T,var.equal=F)
Pairwise comparisons using t tests with pooled SD
data: ford$price and ford$fuelType
Diesel
Petrol 0.25
P value adjustment method: holm
Bei diesem Testverfahren muss der aplhawert korrigiert werden.
newalpha<- 0.05/15
newalpha
[1] 0.003333333
interaktion=paste(ford$transmission, ford$fuelType, sep=".")
pairwise.t.test(ford$price, interaktion, data=ford, var.equal=FALSE)
Pairwise comparisons using t tests with pooled SD
data: ford$price and interaktion
Automatic.Diesel Automatic.Petrol Manual.Diesel
Automatic.Petrol < 2e-16 - -
Manual.Diesel < 2e-16 < 2e-16 -
Manual.Petrol < 2e-16 < 2e-16 0.00032
Semi-Auto.Diesel 3.4e-13 0.42753 0.01423
Semi-Auto.Petrol < 2e-16 7.1e-08 0.00284
Manual.Petrol Semi-Auto.Diesel
Automatic.Petrol - -
Manual.Diesel - -
Manual.Petrol - -
Semi-Auto.Diesel 0.08129 -
Semi-Auto.Petrol 0.27555 0.27555
P value adjustment method: holm
interaktion=paste(ford$transmission, ford$fuelType, sep=".")
ford["interaktion"] <- interaktion
View(ford)
#Faktor A
ford$transmission <- as.factor(ford$transmission)
ANOVA <- aov(price~transmission, ford)
erg <- PMCMRplus::gamesHowellTest(ANOVA)
summary (erg)
Pairwise comparisons using Games-Howell test
data: price by transmission
alternative hypothesis: two.sided
P value adjustment method: none
H0
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Faktor B
ford$fuelType <- as.factor(ford$fuelType)
ANOVA <- aov(price~fuelType, ford)
erg <- PMCMRplus::gamesHowellTest(ANOVA)
summary (erg)
Pairwise comparisons using Games-Howell test
data: price by fuelType
alternative hypothesis: two.sided
P value adjustment method: none
H0
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#Interaktion
ford$interaktion <- as.factor(ford$interaktion)
ANOVA <- aov(price~interaktion, ford)
erg <- PMCMRplus::gamesHowellTest(ANOVA)
summary (erg)
Pairwise comparisons using Games-Howell test
data: price by interaktion
alternative hypothesis: two.sided
P value adjustment method: none
H0
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Die Kontrolltests ergaben eine Bestätigung der Ergebnisse aus dem Tukey-Test.
Das partielle Eta-Quadrat (partielles η2) ist in Abbildung ausgegeben.
$$ {partialA}^2=\ {partialB}^2=\
_{partialA*B}^2=\ _A=\
_B=\
_{A*B}=\ $$
eta <- effectsize::eta_squared(mehrAnova1, partial = TRUE)
eta
# Effect Size for ANOVA (Type I)
Parameter | Eta2 (partial) | 95% CI
-----------------------------------------------------
transmission | 0.04 | [0.03, 1.00]
fuelType | 4.35e-07 | [0.00, 1.00]
transmission:fuelType | 0.02 | [0.01, 1.00]
- One-sided CIs: upper bound fixed at (1).
Im vorliegenden Beispiel ist der Effekt für Treibstoff nicht signifikant. Daher wird dessen partielles Eta-Quadrat nicht betrachtet.
Für die Getriebeart beträgt das partielle Eta-Quadrat 0,04. Das heisst, die Getriebart erklärt 4% derjenigen Fehlervariation, die das Modell hätte, wäre die Getriebart nicht im Modell.
Das partielle Eta-Quadrat der Interaktion beträgt 0,02 und erklärt daher 2% der ohne die Interaktion ungeklärten Variation.
\[ f = \sqrt\frac{\eta^2}{1-\eta^2} \] #### Effektstärke für Getriebe
eta$Eta2_partial[1]
[1] 0.03516053
eta$Eta2_partial[2]
[1] 4.353649e-07
eta$Eta2_partial[3]
[1] 0.01668892
efftrns <- sqrt(eta$Eta2_partial[1]/(1-eta$Eta2_partial[1]))
sprintf("Effektstärke fürs Getriebe: f= %.3f", efftrns)
[1] "Effektstärke fürs Getriebe: f= 0.191"
efffuel <- sqrt(eta$Eta2_partial[2]/(1-eta$Eta2_partial[2]))
sprintf("Effektstärke fürs Treibstoff: f= %.3f",efffuel)
[1] "Effektstärke fürs Treibstoff: f= 0.001"
effAxB <- sqrt(eta$Eta2_partial[3]/(1-eta$Eta2_partial[3]))
sprintf("Effektstärke für die Interaktion: f= %.3f",effAxB)
[1] "Effektstärke für die Interaktion: f= 0.130"
Um zu beurteilen, wie gross dieser Effekt ist, kann man sich an der Einteilung von Cohen (1988) orientieren:
\[\begin{align} \text{Schwacher Effekt: } 0.10 &< ||f|| < 0.25 \\ \text{Schwacher bis mittlerer Effekt: } 0.25 &= ||f|| \\ \text{Mittlerer Effekt: } 0.25 &< ||f|| < 0.40 \\ \text{Mittlerer bis starker Effekt: }0.40 &= ||f|| \\ \text{Starker Effekt: } 0.40 &< ||f|| \end{align}\]
Für den Treibstoff beträgt die Effektstärke f = 0,001 und bestätigt die Nicht-Signifikanz des Tukey-Tests durch keinen Effekt nach Cohen (1988).
Für die Art des Getriebes beträgt die Effektstärke f = 0,191 und bestätigt die Signifikanz des Tukey-Tests durch einen schwachen Effekt nach Cohen (1988).
Für die Interaktion beträgt die Effektstärke f = 0,13 und bestätigt die Signifikanz des Tukey-Tests durch einen schwachen Effekt nach Cohen (1988).
Es zeigt sich, dass es EINEN Unterschied zwichen dem Getriebe und Preis gibt (F(2,755.1) = 154.66, p < .000). H0 für den Haupteffekt A wird entworfen.
Allerdings je nach Treibstoff gibt es KEINEN Unterschied zwischen den Preisen (F(1,2654.3) = 1.0836, p = .298). H0 für den Haupteffekt B wird angenommen.
Der Interaktionsterm von Treibstoff und Getriebe auf den Preis ist signifikant (F(5,336.12) = 136.67, p = .000). Der Effekt von der Getriebe hängt demnach zu einem gewissen Teil vom Treibstoff ab. H0 für die Interaktion wird verworfen.
Der PostHoc wurde mit Tukey durchgeführt. Für Treibstoff zeigte sich KEINE signifikant ab (p = 0.945006). Es zeigt, dass sich alle Gruppen für Getriebe signifikant unterscheiden: Automatic (M = 14511.60 ,SD = 4304.75, N=586), Manual (M = 11344.09, SD = 3766.10, n=9974) und Semi-Auto (M = 11830.83, SD = 2932.17, n=447).
Zudem zeigt sich eine signifikante Interaktion von Getriebe und Treibstoff auf die Preis.Dies weist darauf hin, dass sich Treibstoff je nach Getriebe unterschiedlich auswirkt.
Beim Automatic und Semi-Auto lag Diesel höher als Petrol, beim Manual ist es umgekehrt.
####Effektstärke Die Effektstärken sind sowohl für den Haupteffekt des Getriebes (f = 0.191) als auch für die Interaktion (f = 0.130) nach Cohen (1988) ein schwacher Effekt. Der Treibstoff hat KEIN Effekt auf Preis (f = 0.001)