我想用来geom_smooth从某个线性回归模型中得到拟合线.
在我看来,公式只能采取x,y而不是任何额外的参数.
为了更清楚地显示我想要的东西:
library(dplyr)
library(ggplot2)
set.seed(35413)
df <- data.frame(pred = runif(100,10,100),
factor = sample(c("A","B"), 100, replace = TRUE)) %>%
mutate(
outcome = 100 + 10*pred +
ifelse(factor=="B", 200, 0) +
ifelse(factor=="B", 4, 0)*pred +
rnorm(100,0,60))
Run Code Online (Sandbox Code Playgroud)
同
ggplot(df, aes(x=pred, y=outcome, color=factor)) +
geom_point(aes(color=factor)) +
geom_smooth(method = "lm") +
theme_bw()
Run Code Online (Sandbox Code Playgroud)
我生产的装配线,由于color=factor选项,基本上是线性模型的输出lm(outcome ~ pred*factor, df)
但是,在某些情况下,我更喜欢将线条作为不同模型拟合的输出,例如lm(outcome ~ pred + factor, df),我可以使用以下内容:
fit <- lm(outcome ~ pred+factor, df)
predval <- expand.grid(
pred = …Run Code Online (Sandbox Code Playgroud) 假设我有一个 N 面骰子,每一面的概率不均匀,我将其扔了 M 次。现在我们不再观察个体结果,而是只观察总和。
我必须对可能性进行编码,其中我必须对仅限于观察到的总和的多项可能性分量进行求和。
如果 N=3,M = 2 并且总和为 4,那么很明显,我必须对其中一个投掷为 1、另一个投掷为 3 的两种情况加上两者均为 2 的情况进行求和。
我还可以枚举所有可能性,计算总和并将计算限制为我感兴趣的总和的组合,但显然随着 N 和 M 的增加,这很快就会变得棘手。
所以我正在寻找一种有效的方法来选择 R 中的常和组合。
尽管我在这里使用水平条形图作为示例,但这本身并不是问题。一般问题是如何处理使用后在 rmarkdown 中 ggplots 周围创建的空白
+坐标_固定(比率=...)
为了减少条形图使用的空间,特别是在因子较少的情况下,我更喜欢水平条形图,其中我使用 coord_fixed(ratio=...) 来使条形的宽度和长度之间具有合理的比率。
绘图本身看起来像我想要的那样(请参见下面的第一个示例),但它周围有很多空白,我尝试通过在 knit-header 中使用 Fig.height = ... 来删除它。正如下一个示例所示,结果并不理想。
library(ggplot2)
library(ggstance)
library(dplyr)
X <- data.frame(X = sample(c("A", "B"), 30, replace = TRUE))
X <- X %>% group_by(X) %>% summarise(n = n())
ggplot(X, aes(y = X, x = n))+
geom_barh(stat = "identity")+
coord_fixed(ratio = 1)+
ggtitle("blub")
Run Code Online (Sandbox Code Playgroud)
在 rmarkdown 中使用它,我使用了 x = 3 ;x = 1 ; x=0.5:
```{r,fig.height = x}
# see code above
```
Run Code Online (Sandbox Code Playgroud)
这导致:
图.height=3
图高度=1
图高度=0.5
我希望它能做什么:
后者显然不会发生,因为绘图区域变得更窄并且标题被移动到绘图内部。
我不知道解决方案是在 …
一个客户要我做像一个阴谋这样.此引用使用rgl-package,但导出数字的质量太低.因此,我从剧情开始.我可以管理我想要做的大部分事情,但由于某种原因,所有的酒吧都有不同的颜色.
MWE:
X<-1:60
Y<-sort(runif(60,-3,3))
Z<-runif(60,0,50)
p<-plot_ly(x = c(X[1],X[1]+1,X[1]+1,X[1]),
y = c(0,0,Y[1],Y[1]), z=c(0,0,0,0),type = "mesh3d",color=I("red"))
for(i in X){p<-add_trace(p,x = c(i,i+1,i+1,i),
y = c(0,0,Y[i],Y[i]), z=c(0,0,0,0),type = "mesh3d",color=I("red"))}
for(i in X){p<-add_trace(p,x = c(i,i+1,i+1,i),
y = c(0,0,0,0), z=c(0,0,Z[i],Z[i]),type = "mesh3d",i=c(0,0),
j=c(1,2),k=c(2,3),color=I("black"))}
p
Run Code Online (Sandbox Code Playgroud)
我实际上正在寻找的是类似下面的内容,每个因子级别都有一个颜色,但是现在,结果与上面的相同:
X<-1:60
Y<-sort(runif(60,-3,3))
Z<-runif(60,0,50)
ColFactor<-sample(c(0,1),60,replace = TRUE)
p<-plot_ly(x = c(X[1],X[1]+1,X[1]+1,X[1]), y = c(0,0,Y[1],Y[1]), z=c(0,0,0,0),
type = "mesh3d",color=ColFactor,colors=c("red","blue"))
for(i in X){p<-add_trace(p,x = c(i,i+1,i+1,i), y = c(0,0,Y[i],Y[i]), z=c(0,0,0,0),
type = "mesh3d",color=ColFactor,colors=c("red","blue"))}
for(i in X){p<-add_trace(p,x = c(i,i+1,i+1,i), y = c(0,0,0,0), z=c(0,0,Z[i],Z[i]),
type …Run Code Online (Sandbox Code Playgroud) 简而言之:如何在rmarkdown中的块内打印html头(使用变量在代码块内创建头)?
总而言之:
假设我的数据集中有多个变量(名称也存储在向量“ Vars”中),每组3个变量都属于同一主题。
我可以做一个循环来绘制所有变量,但是我想要标题。就像是:
绘制Var1
情节Var2
绘制Var3
情节Var 4
情节Var 5
...
以下伪代码有望解释我要执行的操作:
```{r}
for (i in Vars)
if(i%%3 == 1){
print(## Subject[ceiling(i/3)])}
plot(i)
```
Run Code Online (Sandbox Code Playgroud) 如果我有一个像
set.seed(1)
df <- data.frame(X = 5:14,
Y = runif(10,0,1),
Z = runif(10,0,1))
Run Code Online (Sandbox Code Playgroud)
我可以
df %>% mutate(Y = if_else(X > 10, -Y, Y),
Z = if_else(X > 10, -Z, Z))
Run Code Online (Sandbox Code Playgroud)
但是,如果我有很多要以相同方式转换的变量,则我更喜欢使用mutate_at。但是,在这种情况下,我无法正常工作。
我的尝试:
testfun <- function(y){if_else(X > 10, -y, y)}
df %>% mutate_at(vars(c("Y","Z")),funs(testfun))
Run Code Online (Sandbox Code Playgroud)
但这导致Evaluation error: object 'X' not found。我尝试了类似的变体get("X"),但没有用。有谁知道有效的变体吗?