Hoe u eenvoudig een chi-kwadraatverdeling in r kunt plotten
Om een dichtheidsplot voor een Chi-kwadraatverdeling in R te maken, kunnen we de volgende functies gebruiken:
- dchisq() om de kansdichtheidsfunctie te maken
- Curve() om de kansdichtheidsfunctie te plotten
Het enige dat we hoeven te doen om de plot te maken, is het opgeven van de vrijheidsgraden voor dchisq() en de uit- en terugpunten voor curve() .
De volgende code illustreert bijvoorbeeld hoe u een dichtheidsplot maakt voor een Chi-kwadraatverdeling met 10 vrijheidsgraden waarbij de x-as van de grafiek tussen 0 en 40 ligt:
curve(dchisq(x, df = 10), from = 0, to = 40)
De dichtheidsplot bewerken
We kunnen de dichtheidsplot ook bewerken door een titel toe te voegen, het label op de Y-as te wijzigen, de lijnbreedte te vergroten en de lijnkleur te wijzigen:
curve(dchisq(x, df = 10), from = 0, to = 40, main = 'Chi-Square Distribution (df = 10)', #add title ylab = 'Density', #change y-axis label lwd = 2, #increase line width to 2 col = 'steelblue') #change line color to steelblue
Vul de dichtheidsplot in
Naast het maken van de dichtheidsplot, kunnen we een deel van de plot vullen met behulp van de polygon()- functie op basis van een begin- en eindwaarde.
De volgende code laat zien hoe u het dichtheidsgedeelte van de grafiek invult voor x-waarden tussen 10 en 40:
#create density curve curve(dchisq(x, df = 10), from = 0, to = 40, main = 'Chi-Square Distribution (df = 10)', ylab = 'Density', lwd = 2) #create vector of x values x_vector <- seq(10, 40) #create vector of chi-square density values p_vector <- dchisq(x_vector, df = 10) #fill in portion of the density plot from 0 to 40 polygon(c(x_vector, rev(x_vector)), c(p_vector, rep(0, length(p_vector))), col = adjustcolor('red', alpha=0.3), border = NA)
De volgende code laat zien hoe u het dichtheidsgedeelte van de plot invult voor x-waarden tussen 0 en 10:
#create density curve curve(dchisq(x, df = 10), from = 0, to = 40, main = 'Chi-Square Distribution (df = 10)', ylab = 'Density', lwd = 2) #create vector of x values x_vector <- seq( 0, 10 ) #create vector of chi-square density values p_vector <- dchisq(x_vector, df = 10) #fill in portion of the density plot from 0 to 10 polygon(c(x_vector, rev(x_vector)), c(p_vector, rep(0, length(p_vector))), col = adjustcolor('red', alpha=0.3), border = NA)
De volgende code illustreert hoe u het gedeelte van de dichtheidsplot invult voor x-waarden buiten de centrale 95% van de verdeling:
#create density curve curve(dchisq(x, df = 10), from = 0, to = 40, main = 'Chi-Square Distribution (df = 10)', ylab = 'Density', lwd = 2) #find upper and lower values for middle 95% of distribution lower95 <- qchisq(.025, 10) upper95 <- qchisq(.975, 10) #create vector of x values x_lower95 <- seq(0, lower95) #create vector of chi-square density values p_lower95 <- dchisq(x_lower95, df = 10) #fill in portion of the density plot from 0 to lower 95% value polygon(c(x_lower95, rev(x_lower95)), c(p_lower95, rep(0, length(p_lower95))), col = adjustcolor('red', alpha=0.3), border = NA) #create vector of x values x_upper95 <- seq(upper95, 40) #create vector of chi-square density values p_upper95 <- dchisq(x_upper95, df = 10) #fill in portion of the density plot for upper 95% value to end of plot polygon(c(x_upper95, rev(x_upper95)), c(p_upper95, rep(0, length(p_upper95))), col = adjustcolor('red', alpha=0.3), border = NA)
Ten slotte illustreert de volgende code hoe u het gedeelte van de dichtheidsplot invult voor x-waarden die binnen de centrale 95% van de verdeling vallen:
#create density curve curve(dchisq(x, df = 10), from = 0, to = 40, main = 'Chi-Square Distribution (df = 10)', ylab = 'Density', lwd = 2) #find upper and lower values for middle 95% of distribution lower95 <- qchisq(.025, 10) upper95 <- qchisq(.975, 10) #create vector of x values x_vector <- seq(lower95, upper95) #create vector of chi-square density values p_vector <- dchisq(x_vector, df = 10) #fill in density plot polygon(c(x_vector, rev(x_vector)), c(p_vector, rep(0, length(p_vector))), col = adjustcolor('red', alpha=0.3), border = NA)