#r #lm
Вопрос:
У меня есть фрейм данных, подобный этому ниже
combinedata<-structure(list(`Stock Price` = c(92.160004, 96.2699909354283,
98.3718279614214, 103.135324759444, 101.242020126014, 102.081467809165,
100.317258285167, 100.844493655917, 96.0234994361343, 98.739287127773,
92.4398236570887, 95.0714048372593, 89.8987717434699, 91.0505220439386,
88.0680822806702, 90.5236309606781, 88.2753334722473, 86.9160779976273,
82.7478740231451, 78.6005699924926, 78.3975546658477, 87.2442756910475,
86.1054968450499, 82.9100404857697, 82.8036965709299, 85.2500369716081,
89.7158760697461, 94.8783752588242, 95.5438462896501, 101.455256840256,
96.2710237978968, 94.3120717241021, 95.2691288602746, 90.9466601032546,
95.2909727726717, 99.3943053646555, 92.3796565962705, 89.5495654581188,
91.135212533312, 90.7351561145736, 89.4571835297895, 90.5599744560346,
89.7859413958874, 85.6241914008189, 92.853530228177, 94.40523394334,
94.3372837276363, 95.6104715629249, 99.7942743005071, 86.57982764559,
86.1602329118228, 89.786323780763, 93.8165827641153, 96.5056289127173,
95.0824714224238, 93.519334258378, 100.199895759649, 93.9064615530742,
93.6943226079577, 81.179671317758, 87.2392708233211), `Market Index Return` = c(15698.849609,
16321.709961, 16457.660156, 16580.839844, 16717.169922, 16826.599609,
16563.300781, 17098.449219, 17042.900391, 17390.519531, 17828.240234,
17823.070313, 17164.949219, 18132.699219, 17776.119141, 17840.519531,
18010.679688, 17619.509766, 17689.859375, 16528.029297, 16284.700195,
17663.539063, 17719.919922, 17425.029297, 16466.300781, 16516.5,
17685.089844, 17773.640625, 17787.199219, 17929.990234, 18432.240234,
18400.880859, 18308.150391, 18142.419922, 19123.580078, 19762.599609,
19864.089844, 20812.240234, 20663.220703, 20940.509766, 21008.650391,
21349.630859, 21891.119141, 21948.099609, 22405.089844, 23377.240234,
24272.349609, 24719.220703, 26149.390625, 25029.199219, 24103.109375,
24163.150391, 24415.839844, 24271.410156, 25415.189453, 25964.820313,
26458.310547, 25115.759766, 25538.460938, 23327.460938, 24999.669922
)), row.names = c(NA, -61L), class = c("tbl_df", "tbl", "data.frame"
))
и я подаю заявку lm()
, а также использую до 4 десятичных знаков для каждого числового значения summary(fit)
, но я получаю non-numeric argument to binary operator
fit <- lm(formula = `Stock Price` ~ `Market Index Return`, data = combinedata)
Call:
lm(formula = `Stock Return` ~ MarketIndexReturn, data = combineddata2)
Residuals:
Min 1Q Median 3Q Max
-0.096002 -0.009879 0.000482 0.008725 0.164773
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.001283 0.001328 0.966 0.3348
MarketIndexReturn 0.298332 0.166953 1.787 0.0752 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.02077 on 248 degrees of freedom
Multiple R-squared: 0.01271, Adjusted R-squared: 0.008731
F-statistic: 3.193 on 1 and 248 DF, p-value: 0.07517
Я пытаюсь что-то вроде:
fit$coefficients<-format(round(fit$coefficients, 4), nsmall = 4)
fit$residuals<-format(round(fit$residuals, 4), nsmall = 4)
summary(fit)
Комментарии:
1.
summary(fit)
выполняет множество вычислений. Вы только что превратили свои коэффициенты и остатки в текст с помощьюformat
, который затем не может быть использован для этих вычислений. Например,"1" "1"
выдает ту же ошибку.
Ответ №1:
Вы должны внести изменения в summary
возвращаемые объекты. Сначала рассмотрите возможность использования аргументов scipen=
и digits=
в options()
. Это не совсем то, что вы хотите, но это может быть достаточно близко. Если вы хотите ровно четыре цифры, попробуйте:
summ <- summary(fit)
summ$coefficients <- round(summ$coefficients, 4)
summ$residuals <- round(summ$residuals, 4)
summ
#
# Call:
# lm(formula = `Stock Price` ~ `Market Index Return`, data = combinedata)
#
# Residuals:
# Min 1Q Median 3Q Max
# -13.5012 -3.7520 0.4261 3.5332 11.2145
#
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 90.6855 4.6288 19.59 <2e-16 ***
# `Market Index Return` 0.0001 0.0002 0.33 0.75
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# Residual standard error: 5.89 on 59 degrees of freedom
# Multiple R-squared: 0.00179, Adjusted R-squared: -0.0151
# F-statistic: 0.106 on 1 and 59 DF, p-value: 0.746