我正在研究邊緣學生的大學入學回報,我正在嘗試制作以下資料的 ggplot2,即完成或未完成醫學碩士學位的學生的平均工資和平均“GPA”(外國等效)與“接受分數”的距離:
SalaryAfter <- c(287.780,305.181,323.468,339.082,344.738,370.475,373.257,
372.682,388.939,386.994)
DistanceGrades <- c("<=-1.0","[-0.9,-0.5]","[-0.4,-0.3]","-0,2","-0.1",
"0.0","0.1","[0.2,0.3]","[0.4,0.5]",">=0.5")
我必須做一個回歸不連續性設計(RDD),所以要進行回歸 - 據我所知 - 我必須將距離等級重寫為數字,所以我剛剛創建了一個變數 z
z <- -5:4
其中 0 是截止值(即距離等級中的 0 等于“0.0”)。然后我制作一個資料框
df <- data.frame(z,SalaryAfter)
現在我嘗試創建繪圖變得有點混亂(我使用包“fpp3”,但我想它只是 ggplot2 和 dyplr 包)
df %>%
select(z, SalaryAfter) %>%
mutate(D = as.factor(ifelse(z >= -0.1, 1, 0))) %>%
ggplot(aes(x = z, y = SalaryAfter, color = D))
geom_point(stat = "identity")
geom_smooth(method = "lm")
geom_vline(xintercept = 0)
theme(panel.grid = element_line(color = "white",
size = 0.75,
linetype = 1))
xlim(-6,5)
xlab("Distance to acceptance score")
labs(title = "Figur 1.1", subtitle = "Salary for every distance to the acceptance score")
哪些情節:

我想要做的是首先,如果 z>0 和 D=0 如果 z<0,則用虛擬變數 D=1 分割資料。然后我用線性回歸和 z=0 的垂直線繪制它。最后我寫了標題和字幕。現在我有兩個問題:
- x 軸顯示 -5, -2.5, ... 但我希望它顯示所有整數,有理數與離散的 z 變數無關。我試圖用幾種不同的方法來解決這個問題,但它們都沒有奏效,我不記得我嘗試過的所有方法(主題(面板.網格...),scale_x_discrete 等等),但結果有都非常相似。它們都會導致 x 軸被完全洗掉,因此沒有數字,有時甚至會洗掉軸標題。
- 我希望第一部分資料的回歸通道擴展到 z=0
當我嘗試解決這兩個問題時,我再次得到類似的結果,當我運行代碼時,我嘗試的大多數事情都不會產生錯誤訊息,但是它們要么對我的情節沒有任何作用,要么洗掉了一些現有元素讓我充滿了疑問。我想該錯誤是由某些元素無法協同作業引起的,但我不知道。
uj5u.com熱心網友回復:
嘗試這個:
library(tidyverse)
SalaryAfter <- c(287.780,305.181,323.468,339.082,344.738,370.475,373.257,
372.682,388.939,386.994)
DistanceGrades <- c("<=-1.0","[-0.9,-0.5]","[-0.4,-0.3]","-0,2","-0.1",
"0.0","0.1","[0.2,0.3]","[0.4,0.5]",">=0.5")
z <- -5:4
df <- data.frame(z,SalaryAfter) %>%
select(z, SalaryAfter) %>%
mutate(D = as.factor(ifelse(z >= -0.1, 1, 0)))
# Fit a lm model for the left part of the panel
fit_data <- lm(SalaryAfter~z, data = filter(df, z <= -0.1)) %>%
predict(., newdata = data.frame(z = seq(-5, 0, 0.1)), interval = "confidence") %>%
as.data.frame() %>%
mutate(z = seq(-5, 0, 0.1), D = factor(0, levels = c(0, 1)))
# Plot
ggplot(mapping = aes(color = D))
geom_ribbon(data = filter(fit_data, z <= 0 & -1 <= z),
aes(x = z, ymin = lwr, ymax = upr),
fill = "grey70", color = "transparent", alpha = 0.5)
geom_line(data = fit_data, aes(x = z, y = fit), size = 1)
geom_point(data = df, aes(x = z, y = SalaryAfter), stat = "identity")
geom_smooth(data = df, aes(x = z, y = SalaryAfter), method = "lm")
geom_vline(xintercept = 0)
theme(panel.grid = element_line(color = "white",
size = 0.75,
linetype = 1))
scale_x_continuous(limits = c(-6, 5), breaks = -6:5)
xlab("Distance to acceptance score")
labs(title = "Figure 1.1", subtitle = "Salary for every distance to the acceptance score")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/371945.html
