为了账号安全,请及时绑定邮箱和手机立即绑定

在 R 中用 python 重写 t 检验的问题

在 R 中用 python 重写 t 检验的问题

函数式编程 2023-10-25 11:01:02
我想在 R 中重写 python 代码(实际上是 Jupyter Book)。它是关于计算一些数据的 t 检验函数,以便在使用箱线图之后将其可视化。我是 Python 和 R 的初学者,但我做了一些尝试。这是Python中的代码:import mathimport numpy as npimport pandas as pdfrom myst_nb import gluefrom scipy.stats import ttest_indfrom matplotlib import pyplot as pltlabels = ['non-failing heart (NF)', 'failing heart (F)']data = [(99, 52), (96, 40), (100, 38), (105, 18),         (np.nan, 11), (np.nan, 5), (np.nan, 42),         (np.nan, 55), (np.nan, 53), (np.nan, 39),        (np.nan, 42), (np.nan, 50)]df = pd.DataFrame.from_records(data, columns=labels)tt = ttest_ind(df['non-failing heart (NF)'],                df['failing heart (F)'],                equal_var=False, nan_policy='omit')pvalue = tt.pvalueglue('pvalue', math.ceil(pvalue * 1000.0) / 1000.0)这是我尝试过的:library(math)labels(data) <- c("non-failing heart (NF)", "failing heart (F)")library(reticulate)np <- import("numpy", convert=FALSE)(x <- np$arange(1, 9)$reshape(2L, 2L))## [[  99.   52.]##   [  96.   40.]##   [  100.   38.]##   [  105.   18.]##   [ np.nan.   11.]##   [ np.nan.  5.]##   [ np.nan.  42.]##   [ np.nan.  55.]##   [ np.nan  53.]##   [ np.nan  39.]##   [ np.nan.  42.]##   [ np.nan  50.]##   [ 23.  24.]]df = pd.DataFrame.from_records(data, columns=labels)tt = ttest_ind(df['non-failing heart (NF)'],                df['failing heart (F)'],                equal_var=False, nan_policy='omit')pvalue = tt.pvalueprint(pvalue)
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

如前所述,t.test它是 R 库中众多内置统计方法之一stats。因此,只需构建相同的数据框,然后运行测试并根据需要提取测试统计数据。

数据构建 (一些需要复制的争论pd.DataFrame.from_records()

我想在 R 中重写 python 代码(实际上是 Jupyter Book)。它是关于计算一些数据的 t 检验函数,以便在使用箱线图之后将其可视化。


我是 Python 和 R 的初学者,但我做了一些尝试。这是Python中的代码:


import math

import numpy as np

import pandas as pd

from myst_nb import glue

from scipy.stats import ttest_ind

from matplotlib import pyplot as plt


labels = ['non-failing heart (NF)', 'failing heart (F)']

data = [(99, 52), (96, 40), (100, 38), (105, 18), 

        (np.nan, 11), (np.nan, 5), (np.nan, 42), 

        (np.nan, 55), (np.nan, 53), (np.nan, 39),

        (np.nan, 42), (np.nan, 50)]


df = pd.DataFrame.from_records(data, columns=labels)

tt = ttest_ind(df['non-failing heart (NF)'], 

               df['failing heart (F)'], 

               equal_var=False, nan_policy='omit')


pvalue = tt.pvalue


glue('pvalue', math.ceil(pvalue * 1000.0) / 1000.0)

这是我尝试过的:


library(math)


labels(data) <- c("non-failing heart (NF)", "failing heart (F)")

library(reticulate)

np <- import("numpy", convert=FALSE)

(x <- np$arange(1, 9)$reshape(2L, 2L))

## [[  99.   52.]

##   [  96.   40.]

##   [  100.   38.]

##   [  105.   18.]

##   [ np.nan.   11.]

##   [ np.nan.  5.]

##   [ np.nan.  42.]

##   [ np.nan.  55.]

##   [ np.nan  53.]

##   [ np.nan  39.]

##   [ np.nan.  42.]

##   [ np.nan  50.]

##   [ 23.  24.]]



df = pd.DataFrame.from_records(data, columns=labels)

tt = ttest_ind(df['non-failing heart (NF)'], 

               df['failing heart (F)'], 

               equal_var=False, nan_policy='omit')


pvalue = tt.pvalue

print(pvalue)


查看完整回答
反对 回复 2023-10-25
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信