小编Cat*_*ath的帖子

为什么statsmodels不能重现我的R逻辑回归结果?

我很困惑为什么R和statsmodels中的逻辑回归模型不一致.

如果我在R中准备一些数据

# From https://courses.edx.org/c4x/MITx/15.071x/asset/census.csv
library(caTools) # for sample.split
census = read.csv("census.csv")
set.seed(2000)
split = sample.split(census$over50k, SplitRatio = 0.6)
censusTrain = subset(census, split==TRUE)
censusTest = subset(census, split==FALSE)
Run Code Online (Sandbox Code Playgroud)

然后运行逻辑回归

CensusLog1 = glm(over50k ~., data=censusTrain, family=binomial)
Run Code Online (Sandbox Code Playgroud)

我看到的结果

                                           Estimate Std. Error z value Pr(>|z|)    
(Intercept)                              -8.658e+00  1.379e+00  -6.279 3.41e-10 ***
age                                       2.548e-02  2.139e-03  11.916  < 2e-16 ***
workclass Federal-gov                     1.105e+00  2.014e-01   5.489 4.03e-08 ***
workclass Local-gov                       3.675e-01  1.821e-01   2.018 0.043641 *  
workclass Never-worked                   -1.283e+01  8.453e+02  -0.015 0.987885    
workclass Private                         6.012e-01  1.626e-01 …
Run Code Online (Sandbox Code Playgroud)

python r dataframe statsmodels logistic-regression

5
推荐指数
1
解决办法
1918
查看次数

当与`NULL`或空对象进行比较时,如何避免`all`函数返回`TRUE`

我经常使用all函数,每当我得到TRUE,我发现自己检查比较的所有元素都不是NULL或为空,因为这可能会给出错误的TRUE结果.

例:

y<-1:10
z<-5:15

# I make a comparison which is really true
all(y[y>5 & y<10]==z[z>5 & z<10]) 
[1] TRUE

# Now I make a typo because I often do, but I don't notice:
all(y[y>5 & y<0]==z[z>5 & z<10])
[1] TRUE
# the result is also true but only because y[y>5 & y<0] is empty:
y[y>5 & y<0]
#integer(0)
Run Code Online (Sandbox Code Playgroud)

因此,在第二种情况下,如果我不检查每个元素all,我将使用我的代码,认为一切顺利,当然,最终结果将是不正确的.

我没有检查我all拨打电话的元素,而是可以添加一个length电话:(all(y[y>5 & y<0]==z[z>5 & z<10]) …

r

5
推荐指数
1
解决办法
511
查看次数

Embedding a script within a for-loop in R

I have a dataframe in R that looks something like this:

 library(tibble)
 sample <- tribble(~subj, ~session,
            "A", 1,
            "A", 2, 
            "A", 3,
            "B", 1,
            "B", 2,
            "C", 1,
            "C", 2,
            "C", 3,
            "C", 4)
Run Code Online (Sandbox Code Playgroud)

As you can see from this example, there are a number of sessions for each subject, but subjects do not all have the same number of sessions. There are 94 rows in my real dataset (5 subjects, between 15 and 20 different sessions each).

I have …

for-loop r tibble

5
推荐指数
1
解决办法
278
查看次数

如何计算R中的风向平均值?

我有一个由风向矢量组成的数据集,如下所示:

wdir <- c(296.9, 215.2, 204.8, 110.8, 287.6, 203.4, 253.1, 46.0, 298.8,  62.8, 183.4, 62.3,
          44.3, 97.6, 78.6, 125.6, 116.9, 121.0, 111.2, 335.8, 287.4, 51.7, 232.6, 265.5,
          269.7, 20.5, 17.0, 310.8)
Run Code Online (Sandbox Code Playgroud)

标量值以度为单位.

如何计算平均风向?

r

4
推荐指数
1
解决办法
2425
查看次数

按组计算摘要并将值返回到数据框中

df <- data.frame(
id = c('A1','A2','A4','A2','A1','A4','A3','A2','A1','A3'),
value = c(4,3,1,3,4,6,6,1,8,4))
Run Code Online (Sandbox Code Playgroud)

我希望在每个id组中获得最大值.我试过跟随,但得到一个错误,说替换有4行,数据有10我理解,但不知道如何纠正

df$max.by.id <- aggregate(value ~ id, df, max)  
Run Code Online (Sandbox Code Playgroud)

这就是我最终成功地做到了这一点

max.by.id <- aggregate(value ~ id, df, max)  
names(max.by.id) <- c("id", "max")
df2 <- merge(df,max.by.id, by.x = "id", by.y = "id")
df2
#   id value max
#1  A1     4   8
#2  A1     4   8
#3  A1     8   8
#4  A2     3   3
#5  A2     3   3
#6  A2     1   3
#7  A3     6   6
#8  A3     4   6
#9  A4     1   6
#10 …
Run Code Online (Sandbox Code Playgroud)

r

4
推荐指数
2
解决办法
158
查看次数

R:通过多个列值对数据帧进行索引

我是 R 的初学者,在使用列值向量对数据帧进行索引时遇到问题。

我想选择 2 位参与者的所有行。

data 是数据框。参与者是一个列

data[data$participant == c(8, 10),])

我认为这应该给我来自参与者 8 和 10 的所有行,但它却给我来自参与者 8 的一半行和来自参与者 10 的一半行。换句话说,

dim(data[data$participant == c(8, 10),])与 double相同dim(data[data$participant == 8,])dim(data[data$participant == 10,])不同。

问题似乎出在对这些多列类型进行索引的语法上: data$participant == c(8, 10)

我将不胜感激任何关于如何做到这一点的提示(无需单独为每个参与者做)!谢谢你!

indexing r dataframe

4
推荐指数
1
解决办法
5160
查看次数

str_extract_all:返回在字符串中找到的所有模式连接为向量

我想提取除模式之外的所有内容并将其返回到字符串中。

我试图将 str_extract_all 与 sapply 和 cat 结合在一起

x = c("a_1","a_20","a_40","a_30","a_28")
data <- tibble(age = x)


# extracting just the first pattern is easy
data %>% 
  mutate(age_new = str_extract(age,"[^a_]"))
# combining str_extract_all and sapply doesnt work
data %>% 
  mutate(age_new = sapply(str_extract_all(x,"[^a_]"),function(x) cat(x,sep="")))


class(str_extract_all(x,"[^a_]"))
sapply(str_extract_all(x,"[^a_]"),function(x) cat(x,sep=""))
Run Code Online (Sandbox Code Playgroud)

返回 NULL 而不是串联模式

r stringr dplyr

4
推荐指数
1
解决办法
1228
查看次数

关于两个向量的差异,交集和并集

我有一个csv文件,它有两行,每行对应一个单词列表.我把这个csv文件读成2*2000矩阵,如下所示:

termlist = as.matrix(read.csv("termlist.csv",sep=",",header=FALSE))
Run Code Online (Sandbox Code Playgroud)

现在,我想知道这两行的以下信息,即第一行和第二行的交集列表; 从第二行中减去此交集列表后的剩余列表.

r

3
推荐指数
1
解决办法
5993
查看次数

使用R中第二个函数内一个函数的变量值

这可能是一个非常简单的答案,但似乎无法找到解决方案.我有一个函数,它提供了一组参数:

theta <-
function(
e = 0.2,l= 0.01,p= 0.05)
return(c(e=e,l=l,p=p))
Run Code Online (Sandbox Code Playgroud)

因此,我可以从中返回一组参数,同时更改其中的一个或多个,例如通过使用

theta(e=0.1) #or
theta(l=0.1)
Run Code Online (Sandbox Code Playgroud)

我的问题是我想在另一个函数中调用此函数,其中该函数的输入是变量之一.

所以例如一个函数如:

randFunc<-function(parameter,value){
s<-theta(parameter=value)
return(s)
}
Run Code Online (Sandbox Code Playgroud)

然后用

randFunc("e",0.1) #or
randFunc("l",0.3)
Run Code Online (Sandbox Code Playgroud)

但是我会得到错误"theta中的错误(参数=值):unused argument(parameter = value)"

我尝试了一些东西,但似乎无法获得在theta函数中使用的参数"value".

parameters r function

3
推荐指数
1
解决办法
76
查看次数

将因子转换为数字背后发生了什么?

这是一个小的data.frame:

e = data.frame(A=c(letters[1:5], 1:5))
Run Code Online (Sandbox Code Playgroud)

关于执行以下命令时发生的事情,我有点困惑:

unclass(e$A) %>% as.numeric()
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

 [1]  6  7  8  9 10  1  2  3  4  5
Run Code Online (Sandbox Code Playgroud)

为什么a:e被视为6:10

r dplyr magrittr

3
推荐指数
1
解决办法
107
查看次数